17

我正在使用新的 gradle android 构建系统。

该项目由两个android库项目和一个主项目组成。

使用 ant 构建,必须在 project.properties 中启用清单合并。但是在使用 gradle 构建系统时,默认情况下会启用清单合并。如何禁用清单合并?

4

5 回答 5

10

编辑:这实际上是可能的,虽然是间接的,从 0.3 开始

您需要做的是禁用 processManifest 任务,使其不会运行并告诉 processResources 要使用的清单在哪里:

android.applicationVariants.all { variant ->
    variant.processResources.manifestFile = file('src/main/AndroidManifest.xml')
    variant.processManifest.enabled=false
}

请注意,如果您通过 DSL 自定义应用程序包名称,则应在默认位置保持默认清单不变,以便为 R 类提供一致的包名称,然后将手动合并的清单放在其他位置并指向每个变体 processResources交给他们的任务。

于 2012-12-19T18:52:40.417 回答
8

这可能会有所帮助。

 android.applicationVariants.all{ variant ->
       variant.outputs.each { output ->
         output.processResources.manifestFile = file('AndroidManifest.xml')
         output.processManifest.enabled=false
       }
  }
于 2015-04-20T22:03:41.310 回答
5

对于 0.6.+ 插件,您还必须从更改buildVariantsapplicationVariants

android.applicationVariants.all { variant ->
    variant.processResources.manifestFile = file('src/main/AndroidManifest.xml')
    variant.processManifest.enabled=false
}
于 2013-11-15T12:41:28.667 回答
3

看起来这些解决方案不适用于 1.0 插件:

在 com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@774f1d0b 上找不到属性“processResources”。

有人有更新吗?我们的问题是 recyclerview-v7:21.0.3 的最终 apk 中出现了一个杂散活动:

<activity
   android:label="RecyclerViewTestActivity"
   android:name="android.support.v7.widget.TestActivity"/>

更新:看起来可以配置清单合并(请参阅http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger)。在这种特定情况下,来自 recyclerview-v7 库的 TestActivity 可以通过以下方式删除:

<activity
    android:name="android.support.v7.widget.TestActivity"
    android:label="RecyclerViewTestActivity"
    tools:node="remove"/>

谢谢菲利普

于 2015-01-22T19:20:47.393 回答
2

对于 0.5.+ 插件,您必须从更改eachall

android.buildVariants.all { variant ->
    variant.processResources.manifestFile = file('src/main/AndroidManifest.xml')
    variant.processManifest.enabled=false
}
于 2013-10-28T14:39:54.773 回答