모든 프로젝트는 AndroidManifest.xml 파일의 루트 요소가 필요. (정확하게 이 이름으로.)
< 필요 4가지 선언. >
1. 패키지 package 이름
2. 앱 구성 요소 App Components
3. 시스템 혹은 다른 앱의 보호된 부분에 엑세스 하기 위한 권한 Permission
4. 하드웨어 혹은 소프트웨어 기능 Device Compatibility
1. 패키지 package 이름
루트 <manifest> 요소의 package 이름은 "com.example.myapp"
< package 특성 사용 목적 >
1) R.java 클래스의 네임스페이스로 이 이름을 적용.
-앱 리소스 엑세스 시 사용
- com.example.myapp.R 에 R 클래스가 생성됨
2) <manifest> 에 선언된 상대 클래스 이름 확인
- <activity android:name=".MainActivity"> 로 선언된 액티비티가 com.example.myapp.MainActivity
* <manifest> 의 패키지 특성 이름 = 액티비티 & 기타 앱 코드의 기본 패키지 이름
* APK가 컴파일 되면 package 특성은 앱의 고유한 애플리케이션 ID이다.
2. 구성 요소 Components
매니페스트 파일에서 XML 요소 선언필요 for 앱 에서 생성하는 각각의 앱구 구성요소.
XML 요소 선언하지 않고, 구성요소를 하위 클래스로 지정하면 시스템 시작 불가.
- <activity> Activity 의 각 하위 클래스
- <service> Service의 각 하위 클래스.
- <receiver> BroadcastReceiver의 각 하위 클래스.
- <provider> ContentProvider의 각 하위 클래스.
하위 클래스 이름은 완전한 패키지 이름 사용 및 name 특성 지정.
< 인텐트 필터 >
- 인텐트 필터로 활성화 : Activity , Service , BroadcastReceiver
- 실행할 작업을 설명하는 메시지
- Intent 객체로 정의
- 작업할 데이터, 작업 수행해야하는 구성요소 카테고리 , 기타 지침
- 앱 구성요소 Components 는 <intente-filter>를 여러 개 가질 수 있다.
- <intente-filter> 는 해당 구성 요소의 각 기능을 설명
< 아이콘 및 레이블 >
- 작은 아이콘과 텍스트 레이블을 사용자에게 각각 표시 : icon , label
3. 권한 Permission
- 민감한 데이터(연락처,sms 등) / 특정 시스템 기능 (카메라, 인터넷 엑세스 등) 에 접근 권한 시 요청
- 권한은 고유한 레이블로 식별
- Android 6.0(API 레벨 23) 부터 사용자가 런타임에서 일부 앱 권한 승인/거절 가능
- 버전에 상관없이 <uses-permission> 요소로 모든 권한 요청 선언 필요
4. 하드웨어 혹은 소프트웨어 기능 Device Compatibility
- 앱에 필요한 하드웨어 / 소프트웨어 기능 선언 가능
- 앱과 호환되는 기기 유형 선언 가능
- <uses-feature> 앱에 필요한 하드웨어 및 소프트웨어 기능 선언
- <uses-sdk>의 특성은 build.gradle 파일의 해당 속성으로 재정의 됨
ex. minSdkVersion / targetSdkVersion 대신 사용 ( in Android Studion)
< manifest 파일 규칙 >
1. <manifest> , <application> 는 필수요소 및 각각 한 번만 실행되어야 함
2. 모든 값은 요소 내의 문자 데이터로서가 아니라 특성을 통해 설정됨
3. 같은 레벨 요소는 보통 순서가 지정되어 있지 않음.
ex. <activity>, <provider> , <service> 요소 순서는 상관없음
4. 예외사항
1) <activity-alias> 요소는 이 요소를 별칭으로 사용하는 <activity> 다음에 와야 함
2) <application> 요소는 <manifest> 요소 내부의 마지막 요소여야 함
5. 모든 특성은 선택 사항이나 목적을 위해 반드시 선언필요한 특성이 많다.
6. 모든 특성 이름은 android: 로 시작 (몇 가지 요소는 제외)
7. android:alwaysRetainTaskState 는 법용이므로 생략하는 경우가 많음
8. 한 인텐트 내에 여러 개 작업 나열 가능
9. 사용자에게 표시되는 값(ex.액티비티 제목, 앱 아이콘 등)은 사용자언어 혹은 기기 구성에 따라 달라질 수 있으니
하드코딩보단 리소스 혹은 테마에서 값 설정하기.
10. 리소스 형식 "@[package:]type/name"
- 앱에서 리소스 제공 시, package 생략 가능
- type 은 리소스 유형
- name 은 특정 리소스를 식별하는 이름
출저 developer.android.com/guide/topics/manifest/manifest-intro#package-name
<!-- 개인 공부 기록용 -->
'Andorid' 카테고리의 다른 글
Palette Component in Android (4) - Layout(Linear / Relative / Frame / Table / Grid / Constraint ) (0) | 2021.01.30 |
---|---|
Palette Component in Android (3) Widgets (0) | 2021.01.30 |
Palette Component in Android (2) Buttons (0) | 2021.01.30 |
Palette Component in Android (1) TextView (0) | 2021.01.30 |
Manifest in 안드로이드 스튜디오 (2) (0) | 2021.01.30 |