나는 내가 Gradle을 안드로이드를 병합 얻을 수있는 내 프로젝트 내부의 다음 모듈이 올바르게 명단이 있습니다Gradle을은 메인 모듈의 매니페스트에 래퍼/서브 모듈의 안드로이드 매니페스트를 병합
는myproject_alpha
myproject_beta
myproject_lib
myproject_release
* 표시 _lib 모듈입니다 모든 소스 코드를 포함하는 프로젝트의 주 모듈. 나머지 3 개의 모듈은 컨텐트 프로 바이더의 "authority"매개 변수를 약간 수정하고 * _lib 모듈의 매니페스트에 지정된 활동의 인 텐트 필터 내에서 "data"필드를 변경하고 거기에없는 다른 활동을 활성화하는 "래퍼 모듈"입니다 myproject_release 모듈.
현재 알파 (또는 베타 또는 릴리스) 대 lib 사이에 병합 안드로이드 매니페스트 오류가 있습니다. 예를 들어, LIB 및 알파 사이에 나는 다음과 같은 2 Gradle을 오류를 참조하십시오 내가 찾은
Trying to merge incompatible /manifest/application/provider[@name=com.myproject.contentprovider.MyProvider] element:
<provider
-- @android:authorities="com.myproject.alpha.provider"
<provider
++ @android:authorities="com.myproject.lib.provider"
:myproject_alpha:processDebugManifest FAILED
Trying to merge incompatible /manifest/application/activity[@name=com.myproject.activity.LoginActivity] element:
<activity
@android:name="com.myproject.activity.LoginActivity"
@android:name="android.intent.action.MAIN">
@android:name="android.intent.category.LAUNCHER">
<intent-filter>
@android:name="android.intent.action.VIEW">
@android:name="android.intent.category.BROWSABLE">
@android:name="android.intent.category.DEFAULT">
<data
-- @android:host="myhost.test.com"
<activity
@android:name="com.myproject.LoginActivity"
@android:name="android.intent.action.MAIN">
@android:name="android.intent.category.LAUNCHER">
<intent-filter>
@android:name="android.intent.action.VIEW">
@android:name="android.intent.category.BROWSABLE">
@android:name="android.intent.category.DEFAULT">
<data
++ @android:host="myhost.com"
:myproject_alpha:processDebugManifest FAILED
유일한 비슷한 질문이
Gradle: How to merge Android manifest files for different buildTypes which need the same Activity, but with different intent-filters했다. 그러나 내 경우에는 "lib"와 "alpha"가 다른 빌드가 아닌 상호 의존적 인 모듈이기 때문에 실제로는 내 문제와 일치하지 않습니다. 나는 약간 의견을 평가할 것이다.
링크를 제공해 주셔서 감사합니다. 우리는 외부 팀의 코드를 상속 받았다. 따라서 코드를 그대로 구현했는지 확신 할 수 없었다. 현재는 모든 매니페스트에서 동일한 서명을 사용하도록 편집했으며 향후 릴리스에서는 코드베이스를 재구성하여 gradle을보다 잘 활용할 것입니다. – cavega