6

我的 Android Studio Instant App 项目有问题。如果我Manifest.xml在 /app 目录中选择然后选择 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

我不能用默认活动启动我的应用程序,我只能用在项目构建配置中选择的无活动启动它。如何解决这个合并问题?

4

2 回答 2

4

我可以通过更改<manifest package = ${package}基本模块中的manifest.xml以匹配项目的applicationId.

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

<provider
        android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"
        android:authorities="${applicationId}.lifecycle-process"
        android:exported="false"
        android:multiprocess="true" />

我的基本模块中的合并清单显示上述提供程序插入的值与基本模块中的android:authorities匹配而不是from 。<manifest package:{package}manifest.xmlpackageIdapp/build.gradle

在应用程序模块中,我看到提供程序被注入了应用程序中列出的 applicationId build.gradle。这会产生冲突,因为现在有两个提供者具有相同的android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer

于 2018-10-24T22:33:13.190 回答
-2

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

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

于 2018-07-26T15:40:33.533 回答