在2个要素模块中导入相同的库时,清单合并失败

问题描述 投票:3回答:1

我遇到了一个构建问题,gradle抱怨“getMergedManifest失败,清单合并失败”

日志中的错误显示如下行:

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.

我想在这做什么?我的任何清单文件中都没有任何权限部分。当在2个功能模块中导入相同的共享库时,错误到来,结果是依赖于某些谷歌库。我确信所有版本的外部库都是一样的。谁知道如何解决这个问题?

-------编辑。仍然有错误------。

......./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.

因此,当我尝试在两个功能模块中添加相同的库时,基本上会出现问题。我需要告诉清单以防止此合并冲突。功能模块中的两个清单文件都是空的。它必须是导致该问题的第三方清单文件。

我认为多功能/模块结构会增加架构。但到现在为止,我真的认为拥有一个大模块会更容易。整个gradle构建模型中存在太多问题。

android gradle build
1个回答
1
投票

好了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"
        />

我从manifest.xml中删除了活动,并将活动定义移动到主应用程序manifest.xml中。这样,清单合并将不会尝试合并两个相同的活动定义,而是使用主应用程序中定义的活动定义。作品。但当然这是一个糟糕的解决方案。不确定这是否是构建过程中的错误。我花了20多个小时试图解决这个问题。找不到办法。多模块应用程序不容易构建。

© www.soinside.com 2019 - 2024. All rights reserved.