1. 매니페스트란?
앱의 패키지, 컴포넌트, 권한, 기기호환성 설정을 관리하는 app > mainfests > AndroidManifest.xml 파일이다.
2. 매니페스트의 구조와 설정내용
<manifest>: 패키지
ㄴ <application>: 컴포넌트
ㄴ <uses-permission>: 권한
ㄴ <uses-feature>: 기기호환성
위의 각 내용을 상세하게 정리해본다.
# 매니페스트
앱의 1)패키지, 2)구성요소(컴포넌트), 3)권한, 4)기기호환성을 정의하는 환경설정 파일이다.
app > mainfests > AndroidManifest.xml 경로에 위치한다.
# 매니페스트 구조
단순한 XML파일로 아래의 중첩 구조를 갖고 있다.
<manifest>
ㄴ <application>
ㄴ <uses-permission>
ㄴ <uses-feature>
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<activity>
<intent-filter>
<action />
<category />
</intent-filter>
</activity>
</application>
<uses-permission />
<uses-feature />
</manifest>
application 태그의 경우, 4대 컴포넌트를 등록하는 태그로 아래의 추가 중첩 구조를 갖는다.
<application>
ㄴ <activity | servcice | provider | receiver>
ㄴ <intent-filter>
ㄴ <action>
ㄴ <category>
ㄴ <data>
# 매니페스트에서 설정하는 4가지
패키지는 manifest, 컴포넌트는 application, 권한은 uses-permission, 호환성은 uses-feature 태그에서 등록한다
1. 패키지 (Package)
- 설정 내용: 앱의 식별자인 패키지 정보를 등록한다.
- 설정 위치: manifest 태그의 package속성
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.projectstudy_java">
* 패키지는 앱을 구별하는 식별자로 작용한다.
* R.java에서 리소스를 찾을 때에도 패키지 정보를 활용한다.
* 패키지 정보를 이용해서, .으로 시작하는 클래스를 "패키지.클래스"로 해석한다.
2. 앱의 구성요소: 컴포넌트(Components)
- 설정 내용: 앱을 구성하는 액티비티, 서비스, 컨텐트프로바이더, 브로드캐스트리시버를 등록한다.
- 설정 위치: manifest > appliaction > activity|service|provider|receiver 태그
<manifest>
<application>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
* 상위 태그인 application에는 아이콘, 라벨 등의 속성 값을 설정한다.
* 하위 태그인 intent-filter에는 암시적 인텐트(Intent)를 통한 컴포넌트 실행정보를 등록한다.
3. 권한 (Permissions)
- 설정 내용: 전화걸기, 연락처접근 등의 각종 권한정보를 등록한다.
- 설정 위치: manifest > uses-permissions 태그
<manifest>
<uses-permission android:name="android.permission.SEND_SMS"/>
</manifest>
4. 기기 호환성 (Device Compatibility)
- 설정 내용: 앱에서 요구하는 하드웨어/소프트웨어 기능 및 호환되는 기기유형을 등록한다.
- 설정 위치: manifest > uses-feature 태그
<manifest>
<uses-feature android:name="android.hardware.sensor.compass"
android:required="true" />
</manifest>
* 위에서는 필요한 사양으로 나침반 센서 등록했다.
* 따라서 나침반 센서가 탑재되지 않은 스마트폰은 Google Play Store 에서 설치가 불가능할 것이다.
복잡해보이지만
먼저 큰 그림을 보고, 하나씩 쪼개보면 아주 단순한 구조이다.
'개발(Development) > Android(안드로이드)' 카테고리의 다른 글
[안드로이드] Entry Point, Launcher, 4대 컴포넌트 개념 (0) | 2021.07.11 |
---|---|
[안드로이드] R.java / R.jar 개념 및 위치: 리소스 식별 변수 관리 원리 (0) | 2021.07.11 |
[안드로이드] 그레이들 Gradle Scripts에 대한 정리 (0) | 2021.07.10 |
[안드로이드] 앱 프로젝트 구조 (0) | 2021.07.10 |
[안드로이드] 앱 프로젝트 템플릿 (액티비티 UI) 종류 (0) | 2021.07.10 |
댓글