android - list 合并失败的版本代码也位于

标签 android gradle

我有一个复杂的AndroidManifest.xml,其中包含一个receiver:

<receiver android:name=com.my.package.ApplicationBroadcastReceiver>

我想为我的应用程序的调试版本创建一个AndroidManifest.xml
我把它放在debug/AndroidManifest.xml下。调试 list 中的唯一区别是我正在使用另一个接收器:
<receiver android:name=com.my.package.DebugApplicationBroadcastReceiver>

现在,我将AndroidManifest.xml复制到debug/AndroidManifest.xml中,只是更改了这一行。阅读this page about merge rules之后,我在debug/AndroidManifest.xml文件的顶部指定了此规则:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.my.package"
    android:versionCode="1"
    android:versionName="1.0"
    tools:node="replace">

但是,在构建时出现此错误:
Manifest merger failed : Attribute manifest@versionCode value=(1) from AndroidManifest.xml:5
is also present at AndroidManifest.xml:5
Attributes of <manifest> elements are not merged.

因此,即使我在tools:node="replace"标记中指定了manifest,合并仍然失败。

我的问题分为两部分:

答:如何进行合并?

B.由于AndroidManifest.xmldebug/AndroidManifest.xml之间的区别只是一行,我如何只指定被覆盖的行而不是复制整个文件?

最佳答案

根据错误消息,您需要执行以下操作:

tools:replace="android:versionCode"

关于android - list 合并失败的版本代码也位于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896340/

相关文章:

gradle - 覆盖 Java Gradle 项目的默认 Travis CI 脚本

java - Unresolved reference : junit

debugging - 在 IntelliJ 中调试 gradle jettyRun

java - 无法生成签名的 APK

javascript - ID为 'org.grails.grails-plugin'的Gradle安装问题

java - "INSTALL_PARSE_FAILED_MANIFEST_MALFORMED"在Android Studio中运行项目时出错

Java android 右侧图标菜单

java - Parcelable 类中的 Parcelable 列表未使用 Parcel.readTypedList 回读

android - Broadcast Receiver问题,注册一个Broadcast Receiver

android - 在不同的 android repo 标签之间切换