2016-07-07 6 views
5

나는 다음과 같은 문제가 발생 : 내가 구현 이 앱은 (유형 AAR의) 종속성과 같은 다른 프로젝트를 포함하고 있습니다. 두 프로젝트 모두 동일한 상위 pom을 공유합니다. 종속성에는 앱에서 사용하는 리소스가 포함됩니다. 라이브러리 프로젝트 내의 리소스에 액세스하려면 context.getResources().getIdentifier(resourceKey, resourceType, packageName)을 호출하여 리소스 ID를 가져옵니다. 주어진 context 객체에서 getPackageName()을 호출하여 패키지 이름을 얻습니다. 라이브러리 리소스에 액세스

<renameManifestPackage>com.example.newpackagename</renameManifestPackage> 

사용하여 프로젝트의 패키지 이름을 변경하기 전에 괜찮 았는데. 그러나 응용 프로그램의 패키지 이름을 이름을 바꾼 후 나는이 getIdentifier() 전화가 여전히 응용 프로그램의 이전 패키지 이름을 기대하고 (예상대로) getPackageName()를 호출하면 새로운 하나를 반환 android.content.res.Resources$NotFoundException 때문에 얻을.
지금 내가 뭔가를 누락 궁금하거나 안드로이드 받는다는 플러그인이 경우 버그? https://github.com/simpligility/android-maven-plugin

답변

2

대답은 : 뭔가를 놓쳤다. 프로젝트 사이트 (https://github.com/simpligility/android-maven-plugin/issues/736)에서이 문제와 관련된 티켓을 열었습니다. 이 문제는이 구성의 범위를 벗어 매니페스트 패키지뿐만 아니라 자원뿐만 아니라 이름을 변경하기 때문에, renameManifestPackage 구성의 행동을 예상대로 내가 본 그 어떤 밝혀졌다.

그러나, 이것에 대한 너무 추한 해결 방법이 있습니다 :

대신 Context 개체에서 패키지 이름을 검색,는 Resources 객체에서 검색 할 수 있습니다. 여기 조금 추한 얻는 부분은 온다 :

이제
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- The only purpose of this resource is to retrieve the resource package name --> 
    <item name="used_for_package_name_retrieval" type="id"/> 
</resources> 

당신이 자원 패키지 이름을 검색 할 수 있습니다 : 다른 자원이 변경 일반적으로 주제이기 때문에 패키지 이름을 검색하는 하나의 목적을 가진 자원을 추가 할 필요가 다음과 같이 http://www.piwai.info/renaming-android-manifest-package/

:

Resources resources = context.getResources(); 
String packageName = resources.getResourcePackageName(R.id.used_for_package_name_retrieval); 

신용은 간다