본문 바로가기
카테고리 없음

앱 매니페스트 개요 및 구성요소

by ekyoo 2022. 7. 3.
반응형
SMALL

앱 매니페스트의 개요

모든 앱 프로젝트는 프로젝트 소스의 루트 폴더에 AndroidManifest.xml 파일이 있어야 합니다. 매니페스트 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명합니다. 매니페스트 파일은 다음과 같은 내용을 선언해야 합니다.

- 앱의 패키지 이름 (일반적으로 코드의 네임스페이스와 일치). Android 빌드 도구는 프로젝트를 빌드할 때 이 이름으로 코드 엔터티의 위치를 확인합니다. 앱을 패키징 할 때 빌드 도구가 이 값을 Gradle 빌드 파일의 애플리케이션 ID로 대체합니다. 이는 시스템과 Google Play에서 고유한 앱 식별자로 사용됩니다.

- 앱의 구성 요소(모든 액티비티, 서비스, Broadcast Receiver, 콘텐츠 제공자 포함). 각 구성 요소는 Kotlin이나 Java 클래스의 이름과 같은 기본 속성을 정의해야 합니다. 또한 자신이 처리할 수 있는 기기 구성의 종류, 그리고 구성 요소가 어떻게 시작되는지 설명하는 인텐트 필터와 같은 기능을 선언할 수도 있습니다.

- 앱이 시스템 또는 다른 앱의 보호된 부분에 액세스하기 위해 필요한 권한. 이것은 다른 앱이 이 앱의 콘텐츠에 액세스 하고자 하는 경우 반드시 있어야 하는 모든 권한도 선언합니다.

- 앱에 필요한 하드웨어 및 소프트웨어 기능으로, 이에 따라 앱을 Google Play에서 설치할 수 있는 기기의 종류가 달라집니다. Android Studio를 사용하여 앱을 빌드하고 있다면 매니페스트 파일이 생성되고, 앱을 빌드하는 동안 대부분의 기본적인 매니페스트 요소가 추가될 것입니다. 어떻게 매니페스트 파일에 반영되는지 설명합니다.

 

패키지 이름과 애플리케이션 ID

 

매니페스트 파일의 루트 요소는 앱의 패키지 이름에 대한 특성이 필요합니다 앱을 최종 애플리케이션 패키지(APK)로 빌드하는 동안 Android 빌드 도구가 package 특성을 사용하는 목적은 두 가지입니다. -빌드 도구는 앱에서 생성된 클래스의 네임스페이스로 이 이름을 적용합니다.

-빌드 도구는 이 이름을 사용하여 매니페스트 파일에 선언되어 있는 상대 클래스 이름을 확인합니다. 이와 같이, 매니페스트의 이름은 액티비티와 기타 앱 코드가 들어 있는 프로젝트의 기본 패키지 이름과 항상 일치해야 합니다. 물론 프로젝트에 다른 하위 패키지가 있을 수도 있지만, 해당 파일들은 네임스페이스를 사용하여 클래스를 가져와야 합니다.

 

그러나 APK가 컴파일되고 고유한 애플리케이션 ID를 나타낸다는 점을 유의해야 합니다. 빌드 도구가 위의 작업을 수행하고 나면, 프로젝트의 build.gradle 파일에 있는 applicationId 속성에 지정된 값으로 최종 값은 전체적으로 고유해야 합니다.

 

이것이 앱을 시스템과 Google Play에서 식별할 수 있는 유일하게 보증된 방법이기 때문입니다. 매니페스트의 package 이름과 build.gradle 파일의 applicationId를 구분하려면 다소 혼란스러울 수 있습니다. 하지만 이 두 가지를 동일하게 유지한다면 걱정할 필요가 없습니다.

 

앱 구성 요소

 

앱에서 생성하는 각각의 앱 구성 요소에 대해 매니페스트 파일에서 해당하는 XML 요소를 선언해야 합니다.

Activity의 각 하위 클래스.

Service의 각 하위 클래스.

BroadcastReceiver의 각 하위 클래스.

ContentProvider의 각 하위 클래스.

 

매니페스트 파일에서 XML 요소를 선언하지 않고 이 구성 요소를 하위 클래스로 지정하면 시스템에서 이를 시작할 수 없습니다. 하위 클래스의 이름은 완전한 패키지 이름을 사용하여 name 특성으로 지정해야 합니다. 그러나 name 값의 첫 번째 문자가 마침표일 경우 앱의 패키지 이름이 해당 이름 앞에 붙습니다. 하위 패키지안에 앱 구성 요소가 있을 경우, name 값으로 누락된 하위 패키지 이름을 추가하거나 완전히 자격을 충족하는 패키지 이름을 사용해야 합니다.

반응형
LIST

댓글