방송대 Android 스튜디오 프로젝트 

1. 안드로이드 프로젝트의 개념

안드로이드 프로젝트(Android Project]

하나의 앱을 개발하기 위해 통합 개발 환경(IDE)내에 구성하는 작업 공간(workspace)

 

 

개발에 필요한 기본 파일과 폴더

안드로이드 프로젝트를 생성하면 오른쪽 그림과 같이 지정된 경로에 다양한 기본 폴더와 파일들이

안드로이드 스튜디오에 의해 자동으로 생성된다.

 

안드로이드 프로젝트를 구성하는 주요 파일 및 폴더

파일 및 폴더명 설명
java/MainAcivity.java 스마트폰 화면을 구성하는 액티비티를 정의하는 파일로 앱 실행 시 처음으로 실행되는 코드를 정의
build/R,java(R 클래스/R.jar) 앱이 동작하면서 참조하는 자원(문자열, 이미지, 소리 등) 들의
ID가 정의된 파일
res/drawable 화면에 표시되는 이미지 파일(png,jpg,gif)이 저장되는 폴더
res/layout/activity_main.xml MainAcivity.java에 대한 레이아웃을 정의하는 XML 파일
res/values/strings.xml 앱이 동작하면서 참조하는 문자열들이 정의된 파일
AndroidManifest.xml 앱에 대한 전반적인 정보를 담고 있는 파일로
앱의 구성요소나 권한 등을 정의

 

 

2. 안드로이드 프로젝트 구조 

 

안드로이드 프로젝트 주요 파일들의 참조 관계

 

 

Activity 개념

  • Activity란 안드로이드 앱에서 하나의 화면을 표현하기 위한 구성요소를 뜻함
  • Activity 내에는 다양한 기능을 수행하기 위한 코드가 작성되는데 실행 부분데이터 부분으로 구분됨
  • 이렇게 코드들을 두 가지 유형으로 분리함으로써 개발 효율을 높일 수 있음
  • Activity 내에 입력하는 JAVA 소스코드가 실행 부분이라면 
  • Strings.xml과 activity_main.xml 내에 정의되는 XML 구조의 코드는 데이터 부분에 해당됨
  • 실행 부분과 데이터 부분의 연결은 R.java가 담당하고 있음
  • R.java는 XML 구조로 정의되는 데이터들을 실행 부분에서 활용할 수 있도록, 변수 형태의 ID와 주소값을 포함함

 

1. Activity_main.xml

  • 하나의 안드로이드 앱은 실행 부분과 데이터 부분으로 분리되어 있음
  • 데이터 부분 중 하나인 화면의 구조를 표현하는 레이아웃은 일반적으로 JAVA코드에 직접 기술하지 않고 XML에서 기술됨

 

프로그램 1.1 activity_main.xml 설명

  • RelativeLayout 이라는 레이아웃 안에 문자열 표시를 위한 View인 TextView를 배치하고 있음
  •  홑화살괄호('<', '>')로 정의된 각 구성요소 중 TextView의 android:text 속성에서는 @string/app_name값이 지정되어 있음
  • @string/app_name 값이 Strings.xml에서 정의된 'app_name'이라는 이름의 문자열 ID로 대체된다는 사실을 의마함
  • 문자열에 대한 정보는 R.java 파일에 저장되며, 실제 문자열의 내용은 strings.xml에 저장되어 있음

 

2. strings.xml

  • 안드로이드 앱이 사용하는 다양한 유형의 리소스 중 하나인 문자열은 관리의 편의성을 위해 XML 파일에 따로 정의됨
  • 문자열이 정의되는 XML 파일은 기본적으로 strings.xml 파일임

 

3. R.java(R.jar/R.class)

  • 안드로이드 앱이 사용하는 자원을 참조하기 위해 사용되는 ID가 정의된 클래스 R을 포함하고 있음
  • JAVA 프로그램이나 XML 파일에서 참조하는 리소스의 ID는 R.java 파일에서 정의됨
  • R 클래스나 내부의 16진수 정의는 개발 툴(AAPT)에 의해 자동적으로 작성됨 
  • 다른 리소스 파일들을 컴파일한 후에 자동으로 리소스 ID를 이 파일에 등록하게 됨
  • AAPT에 의해 자동적으로 정의되고 사용되는 정보이므로 개발자가 임의로 R.java 파일의 내용을 변경해서는 안됨
  • R 클래스의 필드인 R.layout.main 은 Java파일의 setContentView 가 인수로서 사용됨 

 

3.안드로이드 프로젝트의 구성 

1. MainActivity.java

개요

  • 안드로이드 앱의 화면을 구성하거나 사용자와 상호작용하는 Activity 클래스를 상속받아 새로운 액티비티를 생성함
  • 사용자가 발생시키는 이벤트에 반응하여 새로운 액티비티(화면)를 생성하거나 사용자의 요구사항을 만족시키는 동적 작업을 수행

 

2. AndroiManifest.xml

1) 안드로이드 주요 컴포넌트

  • 액티비티(Acitivity) : 하나의 스마트폰 화면을 관리하는 컴포넌트
  • 서비스(Service) : 스마트폰 화면 별도로 백그라운드에서 독립적으로 동작하는 컴포넌트
  • 방송 수신자 : 안드로이드 플랫폼에서 발생하는 다양한 이벤트를 수신하고 처리하는 컴포넌트
  • 컨텐츠 제공자 : 데이터를 체계적으로 관리하고 앱이 활용할 수 있도록 인터페이스를 제공하는 컴포넌트

3. XML 레이아웃의 장점 

1) XML 코드

  • 안드로이드에서는 앱의 레이아웃을 위해 주로 JAVA 코드보다는 XML 코드를 이용함
  • XML은 'eXtensible Markup Language'의 약자로 HTML 과 같은 마크업 언어임

2) XML 레이아웃의 장점

  • 동적인 역할을 담당하는 JAVA 코드와 정적인 화면 영역을 담당하는 XML 코드의 레이아웃으로 구분되어 개발될 수 있음
  • JAVA 코드의 개발자 역할과 XML 코드 기반의 화면 설계의 레이아웃 디자이너의 역할이 분담되어 개발될 수 있음
  • 앱의 실행 코드는 JAVA를 통해 프로그래밍되고, 앱의 각 컴포넌트들(이미지,버튼 등)은 XML로 작성되므로 개발 난이도를 낮출 수 있음
  • 레이아웃 코드가 직관적이며 수정 및 관리가 매우 용이함
  • 역할의 분할은 상황과 조건에 따라 레이아웃을 변경하거나 텍스트를 쉽게 변경할 수 있음

 

4. 안드로이드 앱의 동작 원리

1) 앱의 실행 과정

실행하기 위한 과정

  • 안드로이드 앱은 JAVA 언어를 이용하여 작성됨
  • 개발자가 작성한 JAVA코드는 JAVA 컴파일러에 의해 JAVA 바이트 코드로 컴파일됨
  • JAVA 환경에서는 JAVA 바이트 코드를 JAVA 가상머신(virtual machine)을 통해 실행하지만 안드로이드는 ART/Dalvik이라고 하는 별도의 가상머신에서 JAVA 바이트 코드를 실행함

 

 

4. 안드로이드 앱의 동작 원리

1. 앱의 실행 과정

안드로이드 프로젝트 실행 과정

  • 배포 및 설치를 위한 .apk 파일의 생성은 AAPT(Android Asset Packaging Tool)라는 개발도구를 이용하고, 이 과정을  패키징(packaging)이라고 함 
  • 패키징 과정이 끝나 만들어진 .apk 파일을 플랫폼에 설치하면 런타임에서 실행 될 수 있음

2. 앱의 배포 과정

배포하는 과정

  • 안드로이드 앱은 .apk 파일 확장자로 패키징되어 배포됨
  • 안드로이드 프로젝트에 대한 코드 컴파일 작업이 수행되면, JAVA 프로그램의 .class 파일이 생성되고, .class 파일을 이용하여 안드로이드 실행환경(Dalvik/ART)에 적합한 ,dex 파일이 생성됨
  • 이후 서명 Key를 이용하여 .apk 파일에 서명 작업을 하여 .apk 파일이 타인에 의해서 위변조되는 것을 방지함
  • 서명 Key는 디버그 목적으로 앱을 빌드 할 때 사용하는 Debug Key와 배포 목적으로 빌드 할 때 사용하는 Release Key로 구분됨
  • 이러한 서명 작업에서 사용한 키 값은 안드로이드 앱의 업데이트에서 개발자의 식별에 사용됨 
  • 마지막으로 다양한 앱을 공유하거나 거래할 수 있는 마켓인 Google Play에 업로드를 수행함

 

 

정리하기

  • XML : XML 은 마크업 언어의 일종으로, 문서를 사람과 기계 모두가 읽을 수 있는 형식으로 부호화하는 규칙의 집합을 정의함
  • 레이아웃 : 안드로이드 화면출력 및 화면배치를 의미하며, 출력의 양식이나 양식의 설계 등을 모두 레이아웃이라는 말로 사용함
  • 런타임 : 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 말함
  • Dalvik : JIT(Justln Time)방식의 컴파일 환경을 기반으로 안드로이드 스마트폰의 가상머신 
  • ART(Android RunTime) : 앱을 설치하기 전에 컴파일을 끝내고 앱을 실행하는 안드로이드 스마트폰의 가상머신

 

+ Recent posts