안드로이드 Study 목차가기

 


1. AndroidManifest.xml

프로젝트폴더\ 밑에 생성되는 AndroidManifest.xml는 간단히 말해 xml 문서 형식의 어플리케이션 명세서이다.

즉, 어플리케이션이 어떤 컴포넌트(Activity, Service, Content provider 등)을 포함하는지, 그 컴포넌트들이 어떤 구성을 통해 어플리케이션을 이루는지 (ex. 어떤 activity가 디바이스의 메인메뉴에 위치할지, 다른말로 어플리케이션 Launcher가 될지 여부 등), 또는 각종 제약 등이 메니페스트에 기록된다.

안드로이드 프로젝트를 생성하면 기본 메니페스트 파일이 생성되며, 아주 간단한 어플리케이션의 경우 수정할 필요가 없을 수도 있지만, 일반적인 어플리케이션의 경우 조금~많이 수정/내용 추가를 요 할 수도 있다. 참고로 안드로이드 SDK 내부에 포함된 API Demo suite 예제의 경우 1000라인이 넘는 큰 메니페스트 파일이 재공된다.

이번 장에서는 메니페스트의 전반적인 구성을 오버뷰를 하고, 세세한 element와 attribute의 설명은 이 후 필요에 따라 그때 그때 다루려고 한다.

 

 

 

2.AndroidManifest.xml의 root element


AndroidManifest.xml의 root element는 manifest이다.

manifest 엘레멘트에서 가장 중요한것은 package attribute이다.

package attribute의 값으로는 어플리케이션의 base를 지정하는 Java package 이름이 온다.

manifest의 element로 한번 지정되면 이후 메니페스트 파일 내에서에서 사용되는 동 package내부의 클레스는 .ClassName의 형식으로 줄여 쓸 수 있다.

 

예를 들어 위 예제의 경우 어플리케이션의 베이스는 com.holim.test로 지정되어 있음으로

추후 메니페스트 파일 내부에서 com.holim.test.MyClass 라는 클래스를 가리킬 때는 긴 이름대신

.MyClass 만으로 표시 할 수 있다.

 

 

 

3. manifest element 내부에 사용할 수 있는 element

manifest element 내부에는 다음과 같은 child element들을 nest 시킬 수 있다. 각 element의 세세한 내용는 나중에 별도의 글에서 자세히 다룰 예정.지금으로서는 '이런 element가 있구나~' 정도만으로 넘어가자.

  • uses-permission: 어플리케이션이 정상적으로 작동하기 위해서 필요한 권한을 지정하는 element
  • permission: 어플리케이션이 제공하는 data나 logic을 사용하기 위해 다른 어플리케이션이 필요로 하는 권한
  • instrumentation: 중요한 시스템 이벤트 시 호출되는 코드를 지정 (ex. logging이나 monitoring을 위해 특정 activity를 실행시킬 때 등)
  • uses-library: 어플리케이션이 안드로이드의 어떤 라이브러리와 연결되는지 나타내는 element. (ex. mapping service 등)
  • uses-SDK (optional): 어플리케이션이 필요로 하는 최소 SDK version을 지정
  • application: 어플리케이션의 내부 구조를 명시

 


위 AndroidManifest.xml 예제에서 manifest는 어플리케이션이 정상적으로 실행하기 위해 필요한 권한 4가지를 지정하는 uses-permission element와 application element로 구성되어 있다.

 

 

 

4. Application element의 내부

manifest에서 가장 중요한 것은 application element이다.

빈 안드로이드 프로젝트를 생성하면 일반적으로 다음과 같은 manifest가 생성된다.


일반적으로 빈 안드로이드 프로젝트를 생성하면 application element 밑에 하나의 activity element가 nest 되어있다.

android:name attribute는 activity가 구현되어 있는 class 이름, 또 android:lable은 activity의 표시 이름을 나타낸다.

 

intent-filter child element 는 어떤 조건하에 해당 activity가 디스플레이 되는지 나타낸다.

Stock element가 지정된 activity를 사용자가 실행 가능하도록 setup한다. (무슨 의미인지 확실하지 않음)

 

또, 위 예제에는 나오지 않았지만 프로젝트를 진행하면서 다음과 같은 element도 사용한다.

  • receiver element - 어플리케이션이 여러 시스템이나 다른 어플리케이션에서 보내오는 intent를 어떻게 처리할지 나타낸다. (ex. 어플리케이션 사용 중 SMS 도착 intent를 전달 받았을 때의 반응 등)  - chapter 23에서 자세히 다룸.
  • provider element - 어플리케이션이 내부/외부의 activity에게 전달할 데이터를 관리하는 content provider에 대해 정의한다.
  • services element - 어플리케이션이 제공하는 service에 대해 정의한다. - chapter 30, 31에서 자세히 다룸.

 

 

 

5. 호환 가능한 최소한의 SDK version

manifest element의 child element로 uses-sdk를 사용할 수 있다.

uses-sdk는 하나의 attribute, 'minSdkAttribute'를 가질 수 있으며, 이는 어플리케이션이 필요로 하는 minimum SDK version을 명시한다.

uses-sdk element가 생략되면 minSdkAttribute는 1 값을 기본으로 가진다.


1은 SDK version 1.0을 뜻하며, 2010년 1월 현재 최신 SDK인 2.1은 7의 값을 가진다.






저작자 표시 비영리 변경 금지
신고
Posted by 무한만족 i티거