Android
메니페스트 파일
croute
2010. 9. 8. 19:31
- 가장 기본이 되는 부분은 프로젝트 디렉토리 루트에 위치한 AndroidManifest.xml 파일
- 이 파일 내부에 프로젝트에서 생성하려는 어플리케이션의 기능(액티비티인지 서비스인지) 등을 정의
- 어플리케이션이 안드로이드 시스템에 어떻게 연결되는지에 대한 정보 포함
ex) 안드로이드 기기의 메인 메뉴(런처launcher)에 어떤 액티비티가 표시되는지에 대한 정보 등
- 프로젝트를 맨 처음 생성하고 나면 기본적인 내용이 모두 포함된 AndrodidManifest.xml 파일 자동 생성
루트 엘리먼트
- 모든 매니페스트 파일의 루트 엘리먼트는 아래와 같은 manifest이다.
<manifest xmlns:android = http://schemas.android.com/apk/res/android
package = "com.commonsware.android.search">
...
</manifest>
- package 속성을 보면 어플리케이션의 기본이 될 자바 패키지 명을 적게 되어있다.
package
- 위의 코드에서 com.commonsware.android.search.Snicklefritz라는 클래스를 가리키려면,
package 속성으로 com.commonsware.android.search가 지정되 있으니 간단하게 .Snicklefritz 라고 표현
권한, 기본 연동 요소, 어플리케이션
- manifest 엘리먼트 바로 아래를 보면 다음과 같은 엘리먼트가 위치
uses-permission 엘리먼트
- 어느정도의 권한을 확보해야 어플리케이션이 제대로 동작하는지를 지정
permission 엘리먼트
- 외부 액티비티나 서비스가 내부 데이터나 기능을 사용하고자 할때 필요한 권한을 지정
instrumentation 엘리먼트
- 액티비티가 실행되는 등의 주요 시스템 이벤트가 발생했을 때, 어플리케이션의 어느 부분을 호출할 지 지정
- 주로 기록을 남기거나 모니터링을 할 때 유용
uses-library 엘리먼트
- 지도 서비스처럼 추가로 연동되는 안드로이 컴포넌트를 지정
uses-sdk 엘리먼트
- 어플리케이션을 어느 버전의 안드로이드 환경에서 사용 할 수 있는지 알려줄 수 있다.
application 엘리먼트
- 실제 어플리케이션과 관련된 내용들이 위치
어플리케이션 엘리먼트
- 이 파일 내부에 프로젝트에서 생성하려는 어플리케이션의 기능(액티비티인지 서비스인지) 등을 정의
- 어플리케이션이 안드로이드 시스템에 어떻게 연결되는지에 대한 정보 포함
ex) 안드로이드 기기의 메인 메뉴(런처launcher)에 어떤 액티비티가 표시되는지에 대한 정보 등
- 프로젝트를 맨 처음 생성하고 나면 기본적인 내용이 모두 포함된 AndrodidManifest.xml 파일 자동 생성
루트 엘리먼트
- 모든 매니페스트 파일의 루트 엘리먼트는 아래와 같은 manifest이다.
<manifest xmlns:android = http://schemas.android.com/apk/res/android
package = "com.commonsware.android.search">
...
</manifest>
- package 속성을 보면 어플리케이션의 기본이 될 자바 패키지 명을 적게 되어있다.
package
- 위의 코드에서 com.commonsware.android.search.Snicklefritz라는 클래스를 가리키려면,
package 속성으로 com.commonsware.android.search가 지정되 있으니 간단하게 .Snicklefritz 라고 표현
권한, 기본 연동 요소, 어플리케이션
- manifest 엘리먼트 바로 아래를 보면 다음과 같은 엘리먼트가 위치
uses-permission 엘리먼트
- 어느정도의 권한을 확보해야 어플리케이션이 제대로 동작하는지를 지정
permission 엘리먼트
- 외부 액티비티나 서비스가 내부 데이터나 기능을 사용하고자 할때 필요한 권한을 지정
instrumentation 엘리먼트
- 액티비티가 실행되는 등의 주요 시스템 이벤트가 발생했을 때, 어플리케이션의 어느 부분을 호출할 지 지정
- 주로 기록을 남기거나 모니터링을 할 때 유용
uses-library 엘리먼트
- 지도 서비스처럼 추가로 연동되는 안드로이 컴포넌트를 지정
uses-sdk 엘리먼트
- 어플리케이션을 어느 버전의 안드로이드 환경에서 사용 할 수 있는지 알려줄 수 있다.
application 엘리먼트
- 실제 어플리케이션과 관련된 내용들이 위치
ex code)
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="com.comsware.adroid">
<uses-permission
android:name="android.permission.ACCESS_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_GPS"/>
<uses-permission
android:name="android.permission.ACCESS_ASSISTED_GPS"/>
<uses-permission
android:name="android.permission.ACCESS_CELL_ID"/>
<application>
...
...
</application>
</manifest>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="com.comsware.adroid">
<uses-permission
android:name="android.permission.ACCESS_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_GPS"/>
<uses-permission
android:name="android.permission.ACCESS_ASSISTED_GPS"/>
<uses-permission
android:name="android.permission.ACCESS_CELL_ID"/>
<application>
...
...
</application>
</manifest>
어플리케이션 엘리먼트
- 매니페스트 파일에서 가장 중요한 부분
- 안드로이드 프로젝트를 생성하면 기본적으로 하나의 activity 엘리먼트가 들어감
- 안드로이드 프로젝트를 생성하면 기본적으로 하나의 activity 엘리먼트가 들어감
ex code)
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="com.comsware.adroid">
<application>
<activity android:name=".Now" android:label="Now">
<intent-filter>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="com.comsware.adroid">
<application>
<activity android:name=".Now" android:label="Now">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity 엘리먼트
- android:name 속성을 사용해 해당 액티비티를 구현한 클래스 이름을 지정
- android:label 속성을 사용해 액티비티 화면 표시용 이름을 지정
<activity android:name=".Now" android:label="Now">
- intent-filter 엘리먼트를 사용해 어떤 상황에 해당 액티비티가 화면에 나타나게 할지를 지정
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
provider 엘리먼트
- provider 엘리먼트를 사용하면 하나 이상의 컨텐트 프로바이더를 정의할 수 있다.
- 컨텐트 프로바이더는 내부 액티비티에 데이터를 제공, 적절한 권한을 갖는 외부 액티비티에도 데이터 제공