清单合并失败的版本代码也位于

时间:2018-08-17 13:20:39

标签: android gradle

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

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

我想为我的应用程序的调试版本创建一个AndroidManifest.xml。 我将其放在debug/AndroidManifest.xml下。调试清单中的唯一区别是我正在使用另一个接收器:

<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,合并仍然失败。

我的问题分为两个部分:

A。如何进行合并?

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

1 个答案:

答案 0 :(得分:1)

根据您的错误消息,您需要这样的内容:

tools:replace="android:versionCode"