【问题标题】:Android Studio - Instant App - Manifest merging errorAndroid Studio - Instant App - 清单合并错误
【发布时间】:2018-07-14 11:25:07
【问题描述】:

我的 Android Studio Instant App 项目有问题。 如果我在 /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

我无法使用 Default Activity 启动我的应用程序,我只能使用在 Project Build Configuration 中选择的 Nothing Activity 启动它。如何解决这个合并问题?

【问题讨论】:

  • 能否提供您的 Manifest 文件的 标签内的代码?
  • 添加Manifest.xml文件的代码
  • 我发现问题在于清单边距问题,因为我在“功能”包中包含实现“android.arch.lifecycle:extensions:1.1.0”和实现“android.arch.lifecycle” :extensions:1.1.1" 在“基础”包中

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


【解决方案1】:

我可以通过更改基本模块的manifest.xml 中的&lt;manifest package = ${package} 以匹配项目的applicationId 来解决此问题。

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

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

我的基本模块中的合并清单显示上述提供程序插入的android:authorities 值与基本模块的manifest.xml 中的&lt;manifest package:{package} 匹配,而不是来自app/build.gradlepackageId

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 免安装应用的基本模块可以有活动/清单/意图,并且通常是默认活动可能存在的地方。来源 googlelabs (github.com/googlecodelabs/android-topeka/tree/multiModule)。当在多个模块上使用数据绑定时,应用程序将在清单中出现合并冲突,因为提供程序被注入到这两个特性中。
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
相关资源
最近更新 更多