상세 컨텐츠

본문 제목

앱 개발 방법 -앱 매니페스트 파일 (패키지 이름과 애플리케이션 ID)

본문

반응형

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

매니페스트 파일의 루트 요소는 앱의 패키지 이름에 대한 특성이 필요합니다.(일반적으로 프로젝트 디렉토리 구조와 일치 - Java 네임스페이스)

 

예를 들어 다음 스니펫은 패키지 이름이 " com.example.myapp"인 루트 요소를 나타냅니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"
    android:versionCode="1"
    android:versionName="1.0" >
    ...
</manifest>

앱을 최종 앱플리케이션 패키지(APK)로 빌드하는 동안 Android 빌드 도구가 package 특성을 사용하는 목적은 두 가지입니다.

  • 빌드 도구는 앱에서 생성된 R.java 클래스의 네임스페이스로 이 이름을 적용합니다.(앱 리소스에 액세스 하는 데 사용)

예 : 위의 매니페스트와 함께  R 클래스 com.example.myapp.R에서 생성됩니다.

  • 빌드 도구는 이 이름을 사용하여 매니페스트 파일에 선언되어 있는 상대 클래스 이름을 확인합니다.

예 : 위 매니페스트를 사용하면 <activity android:name=".MainActivity">로 선언된 액티비티가 com.example.myapp.MainActivity인 것으로 확인됩니다.

 

이와 같이 매니페스트의 package특성에 있는 이름은 액티비티와 기타 앱 코드가 들어 있는 프로젝트의 기본 패키지 이름과 항상 일치해야 합니다. 물론 프로젝트에 다른 하위 패키지가 있을 수 있지만 해당 파일들은 package 특성의 네임스페이스를 사용하는 R.java 클래스를 가져와야 합니다.

 

그러나 APK가 컴파일되고 나면 package 특성도 앱의 전체적으로 고유한 애플리케이션 ID를 나타낸다는 점을 유의해야 합니다.

 

빌드 도구가 pakage이름에 기초하여 위의 작업을 수행하고 프로젝트의 build.grable 파일(Android Studio 프로젝트에 사용)에 있는 applicationId 속성에 지정된 값으로 package값을 대체합니다. package특성의 최종 값은 전체적으로 고유해야 합니다. 이것이 앱을 시스템과 Google Play에서 식별할 수 있는 유일하게 보증된 방법이기 때문입니다.

 

매니페스트의 package 이름과 build.gradle파일의 applicationId를 구분하려면 다소 혼란스러울 수 있습니다. 하지만 이두 가지를 동일하게 유지한다면 걱정할 필요가 없습니다.

 

그러나 코드의 네임스페이스(그리고 매니페스트의 package 이름)를 빌드 파일의 applicationId와 다르게 지정하려면 애플리케이션 ID 설정이 미치는 영향을 충분히 이해해야 합니다. 다음 페이지에서는 빌드 파일의 applicationId와 별개로 매니페스트의 package이름을 안전하게 수정하고 다른 빌드 구성에 대해 애플리케이션 ID를 변경하는 방법을 설명합니다.

 

매니페스트의 package특성에 있는 이름은 액티비티와 기타 앱 코드가 들어 있는 프로젝트의 기본 패키지 이름과 항상 일치해야 합니다. 매니페스트의 package 이름과 build.gradle파일의 applicationId 이두 가지값을 동일하게 유지해야 한다.
반응형

관련글 더보기