Gil*_*oot 6 android build gradle
我遇到了一个构建问题,其中 gradle 抱怨“getMergedManifest failed manifest merge failed”
日志中的错误显示如下几行:
WARN - .tools.idea.model.ManifestInfo - getMergedManifest failed Manifest merger failed : Attribute provider#com.google.firebase.provider.FirebaseInitProvider@authorities value=(com.xxxxxxxxxx.feature_team.firebaseinitprovider) from AndroidManifest.xml:10:13-72
is also present at AndroidManifest.xml:36:559-633 value=(com.xxxxxxxxx.base.firebaseinitprovider).
Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml:8:9-12:39 to override.
Run Code Online (Sandbox Code Playgroud)
我想在这里做什么?我的任何清单文件中都没有任何权限部分。当在 2 个功能模块中导入相同的共享库时,会出现错误,结果取决于某些 google 库。我确信所有版本的外部库都是相同的。有谁知道如何解决这个问题?
- - - - 编辑。仍然有错误------。
......./base/src/main/AndroidManifest.xml:70:13-46 Error:
Attribute activity#com.facebook.LoginActivity@splitName value=(feature_match) from [:feature_match] AndroidManifest.xml:70:13-46
is also present at [:feature_topvoters] AndroidManifest.xml:73:13-50 value=(feature_topvoters).
Suggestion: add 'tools:replace="android:splitName"' to <activity>
element at AndroidManifest.xml:68:9-71:75 to override.
......./base/src/main/AndroidManifest.xml:74:13-46 Error:
Attribute activity#com.github.gorbin.asne.core.OAuthActivity@splitName value=(feature_match) from [:feature_match] AndroidManifest.xml:74:13-46
is also present at [:feature_topvoters] AndroidManifest.xml:77:13-50 value=(feature_topvoters).
Suggestion: add 'tools:replace="android:splitName"' to <activity> element at AndroidManifest.xml:72:9-75:80 to override.
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试在两个功能模块中添加相同的库时,基本上会出现问题。我需要告诉清单以防止这种合并冲突。功能模块中的两个清单文件都是空的。它必须是导致问题的第三方清单文件。
我认为多功能/模块结构会增加架构。但现在我真的认为拥有一个大模块要容易得多。整个 gradle 构建模型中存在太多问题。
经过 10 个小时的尝试寻找解决方案后,我得出了以下结论:
我克隆了导致问题的库(Facebook)。我没有针对 Maven 进行编译,而是创建了一个新库,并将 facebook SDK 的完整源代码放入其中。在 facebook SDK 的 manifest.xml 中,定义了一个活动:
<activity
tools:replace="android:theme"
android:name="com.facebook.LoginActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
/>
Run Code Online (Sandbox Code Playgroud)
我从manifest.xml 中删除了该活动,并将活动定义移至主应用程序manifest.xml 中。这样,清单合并就不会尝试合并两个相同的活动定义,而是使用主应用程序中定义的活动定义。作品。但这当然是一个糟糕的解决方案。不确定这是否是构建过程中的错误。我花了 20 多个小时试图解决这个问题。找不到办法。多模块应用程序并不容易构建。
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |