애플 리 케 이 션 ID 설정

모든 Android 앱 에는 자바 패키지 이름 처럼 com.example.myapp 와 같은 유일한 애플 리 케 이 션 ID 가 있 습 니 다.이 ID 는 기기 와 Google Play 스토어 에서 유일 하 게 앱 을 표시 할 수 있 습 니 다.새 앱 을 업로드 하려 면 애플 리 케 이 션 ID(및 sign 용 인증서)가 이전 버 전의 APK 와 같 아야 합 니 다.애플 리 케 이 션 ID 를 변경 하면 Google Play 스토어 는 APK 를 완전히 다른 앱 으로 간주 합 니 다.따라서 프로그램 이 발표 되면 애플 리 케 이 션 ID 를 변경 해 서 는 안 됩 니 다.
응용 프로그램 ID 는 모듈 build.gradle 파일 의 응용 프로그램 Id 속성 정 의 를 사용 합 니 다.다음 과 같 습 니 다.
android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Android Studio 에서 새 프로젝트 를 만 들 때 applicationId 는 setup 과정 에서 선택 한 the Java-style package name 과 완전히 일치 합 니 다.그러나 애플 리 케 이 션 ID 와 가방 이름 은 이 점 외 에 서로 독립 되 어 있다.패키지 이름(코드 네 임 스페이스)을 변경 할 수 있 습 니 다.애플 리 케 이 션 ID 에 영향 을 주지 않 습 니 다.반대로 도 마찬가지 입 니 다.(단,프로그램 이 발표 되면 애플 리 케 이 션 ID 를 변경 하지 말 아야 합 니 다)단,가방 이름 을 바 꾸 는 것 은 당신 이 주의해 야 할 결과 가 있 습 니 다.가방 이름 을 바 꾸 는 부분 을 참고 하 십시오.
애플 리 케 이 션 ID 는 전통 적 인 자바 패키지 name 처럼 보이 지만 애플 리 케 이 션 ID 의 명명 규칙 에 제한 이 있 습 니 다.
4.567917.그것 은 적어도 두 개의 부분(하나 이상 의 점)이 있어 야 한다
4.567917.모든 부분 은 알파벳 으로 시작 해 야 합 니 다
  • 모든 문 자 는 알파벳 숫자 나 밑줄[a-zA-Z0-9]이 어야 합 니 다

  • 메모:application ID 가 이전에 가방 이름 에 직접 연결 되 었 습 니 다.따라서 일부 Android API 는 방법 이름과 매개 변수 이름 에'패키지 이름'이라는 용 어 를 사용 하지만 이 는 사실상 application ID 입 니 다.예 를 들 어 Context.getPackageName()방법 은 application ID 를 되 돌려 줍 니 다.app 코드 외 에 코드 의 실제 패키지 이름 을 공유 할 필요 가 없습니다.
    경고:WebView 를 사용 하고 있다 면 응용 프로그램 ID 에서 패키지 이름 을 접두사 로 사용 하 는 것 을 고려 하 십시오.그렇지 않 으 면 211768 에서 말 한 문제 에 부 딪 힐 수 있 습 니 다.
    build variants 의 application ID 변경
    응용 프로그램 에 APK 를 구축 할 때 빌 드 도 구 는 build.gradle 파일 의 defaultConfig 블록 에 정 의 된 application ID 를 사용 하여 APK 를 표시 합 니 다(다음 과 같 습 니 다).단,Google Play 스토어 에 별도의 사업 자 정보(예:'무료'와'전문 버 전')를 표시 하기 위해 다양한 버 전의 애플 리 케 이 션 을 만 들 려 면 각각 다른 애플 리 케 이 션 ID 를 가 진 독립 된 build variant 를 만들어 야 합 니 다.
    이러한 상황 에서 모든 build variant 는 단독 produt flavor 로 정의 해 야 합 니 다.produtFlavors{}블록 에 있 는 모든 flavor 에 대해 applicationId 속성 을 다시 정의 하거나 applicationIdSuffix 를 사용 하여 기본 application ID 뒤에 세 션 을 추가 할 수 있 습 니 다.다음 과 같 습 니 다.
    android {
        defaultConfig {
            applicationId "com.example.myapp"
        }
        productFlavors {
            free {
                applicationIdSuffix ".free"
            }
            pro {
                applicationIdSuffix ".pro"
            }
        }
    }
    

    이렇게'free'produt flavor 의 application ID 는'com.example.myapp.free'입 니 다.
    또한 applicationIdSuffix 를 사용 하여 build type 에 따라 세 션 을 추가 할 수 있 습 니 다.다음 과 같 습 니 다.
    android {
        ...
        buildTypes {
            debug {
                applicationIdSuffix ".debug"
            }
        }
    }
    

    Gradle 은 produt flavor 이후 build type 설정 을 적용 하기 때문에'free debug'build variant 의 application ID 는 현재'com.example.myapp.free.debug'입 니 다.같은 장치 에 debug 와 release 버 전 을 동시에 만 들 려 고 할 때 유용 합 니 다.같은 애플 리 케 이 션 ID 를 가 질 수 있 는 APK 가 두 개 없 기 때 문 입 니 다.
    애플 리 케 이 션 ID 가 다른 APK 는 Google Play 스토어 의 다른 앱 으로 간 주 됩 니 다.따라서 같은 app 목록 을 사용 하여 여러 개의 APK 를 나 눠 주 고 APK 마다 다른 device configuration(예 를 들 어 API 등급)을 지정 하려 면 각각 build variant 에 같은 application ID 를 사용 해 야 하지만 APK 마다 다른 versionCode 를 제공 해 야 합 니 다.자세 한 정 보 는 멀 티 플 APK 지원 을 읽 어보 세 요.
    경고:이전 SDK tools 와 호 환 되 기 위해 build.gradle 파일 에서 applicationId 속성 을 정의 하지 않 으 면 build tools 는 AndroidManifest.xml 파일 의 패키지 이름 을 application ID 로 사용 합 니 다.이 경우 재 구성 패키지 이름 도 애플 리 케 이 션 ID 를 변경 합 니 다.
    알림:manifest file 에서 프로그램 ID 를 참조 하려 면 모든 manifest attribute 에서${applicationId}자리 표시 자 를 사용 할 수 있 습 니 다.빌 드 기간 동안 Gradle 은 이 표 시 를 실제 application ID 로 다시 설정 합 니 다.더 많은 정 보 는 Build Variables 를 Manifest 에 주입 하 는 것 을 참조 하 십시오.
    테스트 를 위해 애플 리 케 이 션 ID 변경
    기본적으로 build tools 는 build variant 를 지정 한 application ID 를 사용 하여 instrumentation 테스트 APK 에 추가 합 니 다.test.예 를 들 어 com.example.myapp.free build variant 의 테스트 APK 의 application ID 는 com.example.myapp.free.test 이다.
    필요 없 지만 defaultConfig 나 produtFlavor 블록 에서 testApplicationId 속성 을 정의 하여 application ID 를 변경 할 수 있 습 니 다.
    메모:테스트 중인 app 과 이름 충돌 을 피하 기 위해 build tools 는 APK 를 테스트 하기 위해 R 클래스 를 생 성하 고,manifest file 에서 정의 하 는 패키지 이름 대신 test application ID 기반 네 임 스페이스 를 사용 합 니 다.
    가방 이름 변경
    기본적으로 프로젝트 의 패키지 이름 은 application ID 와 일치 하지만 변경 할 수 있 습 니 다.단,패키지 이름 을 변경 하려 면 패키지 이름(프로젝트 디 렉 터 리 구조 로 정의)이 AndroidManifest.xml 파일 의 package attribute 와 항상 일치 해 야 합 니 다.다음 과 같 습 니 다.
    
    
    

    Android build tools 는 package attribute 를 사용 하여 두 가지 일 을 합 니 다.
    4.567917.이 이름 을 프로그램 이 만 든 R.자바 류 의 네 임 스페이스 로 적용 합 니 다.예시:위의 manifest 를 사용 하면 R 류 는 com.example.myapp.R 입 니 다
    4.567917.이 를 사용 하여 manifest file 에서 설명 한 모든 유사 명 을 분석 합 니 다.예제:위의 manifest 를 사용 하여 밝 힌 activity 는 com.example.myapp.MainActivity 로 분 석 됩 니 다
    따라서 패키지 attribute 의 이름 은 프로젝트 의 activities 와 app 코드 의 기본 패키지 이름 과 항상 일치 해 야 합 니 다.물론 프로젝트 에 하위 패키지 가 있 을 수 있 습 니 다.그러나 이 파일 들 은 package attribute 의 네 임 스페이스 를 사용 하여 R.자바 류 를 가 져 와 야 합 니 다.또한 manifest 에서 설명 한 모든 응용 프로그램 구성 요소 에 부족 한 하위 패키지 이름 을 추가 하거나 전체 패키지 이름 을 사용 해 야 합 니 다.
    가방 이름 을 완전히 재 구성 하려 면 package attribute 를 업데이트 해 야 합 니 다.Android Studio's tools 를 사용 하여 패 키 지 를 이름 바 꾸 고 재 구성 하면 자동 으로 동기 화 됩 니 다.(동기 화 되 지 않 으 면 같은 가방 에 있 지 않 고 manifest 에서 activities 나 다른 구성 요 소 를 식별 할 수 없 기 때문에 R 류 를 분석 할 수 없습니다.)
    프로젝트 의 주 AndroidManifest.xml 파일 에 package attribute 를 항상 지정 해 야 합 니 다.다른 목록 파일(예 를 들 어 produt flavor 나 build type)이 있다 면,최고 우선 순위 manifest file 에서 제공 하 는 패키지 이름 은 항상 최종 통합 manifest 에 사 용 됩 니 다.더 많은 정보 에 대해 서 는 여러 목록 파일 을 통합 하 는 것 을 참조 하 시기 바 랍 니 다.
    또 하나 알 아야 할 것 이 있 습 니 다.manifest 패키지 이름과 Gradle applicationId 는 서로 다른 이름 이 있 을 수 있 지만 build tools 는 구축 이 끝 날 때 application ID 를 APK 의 최종 manifest file 에 복사 합 니 다.따라서 빌 드 후에 AndroidManifest.xml 파일 을 검사 하면 가방 속성 이 바 뀌 었 다 는 것 에 놀 라 지 마 세 요.package attribute 는 Google Play 스토어 와 Android 플랫폼 이 실제 앱 을 인식 하 는 곳 입 니 다.
    이 글 은 Google 문서 에 대한 번역:Set the Application ID

    좋은 웹페이지 즐겨찾기