Android Studio-Instant App-清单合并错误

时间:2018-07-14 11:25:07

标签: android android-instant-apps manifest-merging

我的Android Studio即时应用项目遇到问题。 如果我在/ app目录中选择Manifest.xml,然后选择Merger Manifest,则出现这样的错误:

Merging Errors: Error: Attribute provider#android.arch.lifecycle.ProcessLifecycleOwnerInitializer@authorities value=(com.theminte.TheMinte.lifecycle-trojan) from AndroidManifest.xml:10:15-75 is also present at AndroidManifest.xml:25:13-68 value=(com.theminte.TheMinte.app.lifecycle-trojan). Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml:10:5-201 to override. app main manifest (this file), line 9

除了我无法使用“默认活动”启动我的应用程序外,我只能使用“项目构建配置”中选择“没有活动”来启动它。如何解决合并问题?

2 个答案:

答案 0 :(得分:3)

我能够通过更改基本模块<manifest package = ${package}中的manifest.xml使其与项目的applicationId相匹配来解决此问题。

看来,androidx.lifecycle:lifecycle-process:2.0.0androidx.lifecycle:lifecycle-extensions:2.0.0的依赖项,它正在使用manifest.xml中定义的包将提供程序注入到基本模块的清单中。根据{{​​1}}中的提供者代码,看起来它应该是lifecycle-extensions/manifest.xml中定义的applicationId。提供者xml是:

build.gradle

我的基本模块中的合并清单显示了上面的提供程序,其中插入了一个与基本模块的<provider android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer" android:authorities="${applicationId}.lifecycle-process" android:exported="false" android:multiprocess="true" /> 中的android:authorities匹配的<manifest package:{package}值,而不是{ {1}}。

在应用程序模块中,我看到提供程序被注入了应用程序manifest.xml中列出的applicationId。由于现在有两个提供者具有相同的packageId

,因此会产生冲突

答案 1 :(得分:-2)

您为什么决定将功能和即时应用程序模块中的清单合并?在所有示例中,即时应用程序模块都具有唯一的Gradle构建脚本,因此没有任何源/资源/清单不会与其他功能模块合并。

必须在功能模块的清单中设置默认活动(例如,在基本功能清单中)