2014-10-06 2 views
1

디버깅 이유로 인해 앱을 더 설치해야합니다. 앱 식별자가 APK 파일의 이진 AndroidManifest.xml에 있음을 발견 했으므로 원하지 않는 결과가있는 프로젝트 수준에서 앱 식별자를 엉망으로 만들 필요가 없습니다.aapt를 사용하여 패키지 이름 바꾸기

stackoverflow에 관해서도 비슷한 질문이 있지만, 내가 아는 한 그들 중 누구도 대답 할 수 없다는 것에 유의하십시오.

이름 바꾸기 다음 명령을 실행 한 쉬워야한다 :

aapt package -v --rename-manifest-package com.xyz.abc apk_dir 

그러나, 그것은 단지 apk 디렉토리에 모든 자원을 열거 (apk_dir 원래 APK가로 압축 해제 한 디렉토리입니다). 아무것도 변경되지 않고 오류 메시지가 인쇄되지 않습니다. 이것은 매우 혼란 스럽습니다. 내가 할 수없는 변경을하는 도구를 지시하면, 그것이 완료되지 않았 음을 분명히 알려야합니다.

공식 appt 도구가 패키지 이름을 변경할 수 있어야하고 (다른 도구에 문제가 있기 때문에) 사용하고 싶지 않은 타사 도구는 거의 없습니다. 그것은 강력한 도구 인 것 같지만 문서화되지 않았습니다. 그러나, 인쇄 도움 유망 보인다

--rename-manifest-package 
    Rewrite the manifest so that its package name is the package name 
    given here. Relative class names (for example .Foo) will be 
    changed to absolute names with the old package so that the code 
    does not need to change. 

또한 AndroidManifest.xml을의 두 가지 형식이 있다는 것을 매우 불행한 일이다. 예상 한 것 외에도 APK 파일에 압축 된 이진 (컴파일 된) 매니페스트 XML 파일이 있습니다. 그렇다고해서 문서를 쉽게 읽을 수있는 것은 아닙니다.

+0

아마도 더 나은 솔루션에는 각각 자신의 앱 인스턴스가있는 여러 에뮬레이터가 있어야할까요? – PearsonArtPhoto

+0

@PearsonArtPhoto 좋은 아이디어입니다. 불행히도 내 응용 프로그램은 Unity3d 엔진을 기반으로하며 에뮬레이터에서는 실행되지 않습니다. – MazeGen

+0

Unity와 함께 작동하는 것으로보고 된 Genymotion을 살펴보십시오. – PearsonArtPhoto

답변

0

ANT 기반 빌드를 사용하는 경우 Android SDK 도구 24.3 (및 이전 버전)의 "aapt"작업은 "manifestPackage = <your_package>"인수를 취하며이를 사용하여 APK를 다시 패키지 할 수 있습니다. SDK의 ant build.xml에서 "-package-resources"대상을 custom_rules.xml로 복사하고 추가 인수를 추가하십시오.

+0

custom_rules.xml 파일에 대해 더 자세히 설명해 주시겠습니까? 내 프로젝트는 그것을 포함하지 않는 것 같습니다. 지금까지 내가 할 수있는 한,이 파일은 Ant 빌드 프로세스와 관련이 있으며 Ant 프로젝트는 내 프로젝트가 아닙니다. – MazeGen

+0

당신 말이 맞아요. 내가 언급 한 것은 ANT 기반 빌드에 대한 것입니다. SDK "android.bat"도구는 골격 build.xml 파일을 빌드하며이 파일은 custom_rules.xml (있는 경우)의 내용을 동일한 폴더에 읽습니다. 대답을 분명히했습니다. – dkneller

관련 문제