본문 바로가기

Technical Docs/Android

Manifest 구조를 알아보자

# Manifest ??

안드로이드에서 매니페스트란 apk 파일을 보면 루트경로에 위치해 있는 application의 기본적인 정보를 담고있는 파일이라고 생각하면 된다. 디바이스에서 해당 파일을 읽고 어떤 권한을 주고 어떤 액티비티를 먼저 실행시키는지 등등을

알려준다고 생각하면 될듯?

 

# 구조는 어떨까 ??

기본적인 구조는 아래와 같다

manifest : 패키지명 , 버전정보, 구성하는 클래스 패키지명 정의
	uses-permission : 앱에서 사용할 시스템 권한을 정의
	permission : 앱에서 제공하는 권한이외에 컴포넌트에서 정의하는 권한(다른 앱에서 해당 앱 접근 등등)
	permission-tree :
	permission-group : 
	instrumentation : 시스템 이벤트 발생 시 애플리케이션 어느 부분 호출할지 지정
	uses-sdk : API 레벨설정
	uses-configuration : 응용 프로그램에 필요한 하드웨어/소프트웨어 입력 구성
	uses-feature : 기능을 지원하지 않는 디바이스 상에 설치 되지 않도록 정의
	suppoerts-screens : 지원하는 스크린 크기 설정
	compatible-screens
	support-gl-texture
	appliction
		activity : UI 화면을 담당, 자바소스에서 Activity 클래스 상속해야함
			intent-filter : 수행되어야 할 Action을 정의 Action을 수행하기 위한 정보
				action : 처리해야 할 작업
				category : Component 유형 정의
				data : URI 와 데이터타입 지정
			meta-data : 특정 정보를 저장할때 사용
		activity-alias
			intent-filter
			meta-data
		service : 백그라운드에서 실행되는 프로세스
			intent-filter
			meta-data
		receiver : 다양한 이벤트와 정보를 받아 반응하는 컴포넌트 (이벤트 리스너 비슷)
			intent-filter
			meta-data
		provider : 데이터를 관리하고 다른 어플리케이션 데이터를 제공 (보통 DB데이터 전달)
			grant-uri-permission
			meta-data
			path-permission : provider 내에 특정 데이터 집합에 대한 사용 권한과 경로
	uses-library : 추가로 연동되는 라이브러리 컴포넌트 지정(지도 서비스)

 

뭐 각 태그마다 또 안에 세부적으로 옵션이 주어지긴 하지만 대충의 모양은 위와 같다.

 

내가 보통 진단할 때 건드리거나 보는건

1) 디버깅이 가능한지

<application android:debuggable=["true" | "false"]>

 

2) 어떤 Activity가 가장먼저 실행되는지

요건 아래와 같은 모양인데 Intent-filter에 작업을 추가하는 모양인데, 해당 태그안에는 무조건 action 태그가 들어가며

android:name을 통해 어떤 일을 수행하는지 정의한다. Action Main 과 Category LAUNCHER이 있다면 해당 태그가 속해있는 Activity 태그가 가장 먼저 실행되는 Activity이다.

 <activity android:name=".TestActivity" android:label="@string/app_name">
   <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
 </activity>

 

다음에는 Activity 가 실행되면 어떤 순서로 실행되는지 생명주기를 알아보자