흰색 라벨이 붙은 응용 프로그램을 만듭니다. 나는 aren을 통해 --rename-manifest-package 옵션을 사용하여 프로젝트를 실행한다.aapt 후 서비스 충돌 방지 --rename-manifest-package
이 날 com.foobar에게
쓰기
com.foobar.demo 및 이 같은 장치에 설치 될 버전을 com.foobar.extended 해제 할 수 있습니다.
그러나 서비스가 권한 android : permission = "@ string/permission_name"(설치마다 변경됨) 및 android : exported = "false"를 통해 설정 되더라도 각 앱은 다른 앱 서비스를 호출하려고합니다!
e.e. 내가 시작할 때 com.foobar.extendedcom.foobar.demo의 서비스에 대한 권한이 없다는 보안 예외가 발생했습니다!
-rename-manifest-package는 서비스 인 텐트 필터를 변경하지 않으므로 com.foobar.services.X 인 채로 남아 있습니다. 하나의 앱 서비스가 인 텐트 처리에 우선 순위가 더 높음을 의미합니다.
이 문제를 어떻게 방지 할 수 있습니까? (아마 응용 프로그램 외부의 의도를 전송하지 않습니다 startLocalService() ...)
감사합니다,
존 당신은 매니페스트 파일의 복사본을 제공하지 않은
AndroidManifest.xml 파일에서 상대 서비스 이름을 사용하고 있습니다. 그러나 서비스를 시작하면 String 액션으로 Intent를 사용합니다. 나는. "com.foobar.services.MyService". – johncc
-rename-manifest-package는 서비스를 시작하는 데 사용하는 내부 문자열을 변경하지 못합니다. 매니페스트에 상대 이름을 사용하는 이유는 런타임에'context.packageName() + ".service"'를 사용하여 이름을 빌드 할 수 있기 때문입니다 – zmarties