2014-06-12 5 views
19

Google은 Android Gradle 플러그인의 버전 0.11을 출시했습니다. 우리가 여기서 packageName 및 packageNameSuffix 설정되지 않는 한, 그리고 애플리케이션 ID 및 applicationIdSuffix로 이름을 변경 한 것입니다 0.11에서 사용자 눈에 보이는 변화의build.gradle의 새로운 응용 프로그램 ID는 어떻게 작동합니까?

하나 :

릴리스 정보

는 다음을 포함합니다. 이것의 목적은이 애플리케이션 ID가 매니페스트의 패키지 선언, 특히 R 클래스와 BuildConfig 클래스와 앱 내의 모든 구현 클래스 인 의 패키지 이름에서이 애플리케이션 ID가 분리된다는 것을 분명히하기 위해 을 만드는 것입니다. 자유롭게 리팩토링했다. applicationId를 동일하게 유지하면됩니다. 정확히 무슨 뜻 무엇

을 : 당신이 당신의 build.gradle 파일을 열 경우, 보풀이 이되지 않는 통화를 강조 표시하고 에게 그들을 업데이트 할 quickfixes를 제공하고 있습니다. 빌드 스크립트의 패키지 이름과 매니페스트의 패키지 이름은 어떻게 분리됩니까?

+0

이미 분리되어 있으므로 스크립트의 항목은 매니페스트의 항목을 참조하지 않습니다. 빌드 스크립트에서이 이름을 변경하면 더 명확 해집니다. – Tobrun

+1

그래서 일단 앱이 컴파일되면 buildscript의 끝은 어디에 있습니까? – Janusz

+0

공식 문서의 관련 읽기 : [ApplicationId versus PackageName] (http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename) – Jonik

답변

42

package은 AndroidManifest.xml에 지정되어있어 기기에 설치된 하나의 애플리케이션을 식별합니다. Java 클래스 리팩터링이 package 속성의 이름을 다시 지정해야한다고 생각할 수 있기 때문에 속성 자체의 이름 자체가 잘못되었습니다. package property는, javadoc로 설명되고있는 제약에 관한 임의의 캐릭터 라인 일 수가 있습니다.

Google 혼란이 있기 때문에 package의 이름을 applicationId으로 변경했습니다. 그러나이 변경 사항은 gradle 파일에만 적용됩니다. 매니페스트 속성 이름을 변경하면 이전 버전과의 호환성이 깨질 것입니다.

따라서 APK를 만들 때 gradle은 gradest 스크립트에 지정된 속성 값을 applicationId 값으로 대체합니다.

직접 테스트하고 싶다면. applicationId을 매니페스트의 package과 다른 값으로 설정하고 APK를 작성하기 만하면됩니다. 그런 다음 /build/intermediates/manifests/dev/을 디버그하고 AndroidManifest.xml을 엽니 다. 거기에 applicationId 값을 찾을 수 있습니다.

+0

분명합니다. 문제는 응용 프로그램이 apk로 패키지화 된 후에 내 매니페스트 파일에 저장되어 있지 않은 경우 applicationId가 저장되는 위치입니다. – Janusz

+0

applicationId가 저장된 위치를 포함하여 전체 답변을 업데이트했습니다. –

+0

기본 applicationId를 읽는 작업은 어떤 작업입니까? –

관련 문제