在Android Gradle Build中禁用Manifest Merger

end*_*ian 16 android gradle android-build

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

该项目包括两个android库项目和一个主项目.

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

Xav*_*het 10

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

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

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

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

  • 当我尝试这个时,我在com.android.build.gradle.AppExtension_Decorated@57eaaca上找到"找不到属性'buildVariants'". (3认同)
  • +1这不再适用于0.5+插件,文档无法帮助理解如何排除某些库的清单. (3认同)
  • 请参阅下文,了解0.5.+/0.6.+的更新答案 (2认同)

Uma*_*han 8

这可能有所帮助.

 android.applicationVariants.all{ variant ->
       variant.outputs.each { output ->
         output.processResources.manifestFile = file('AndroidManifest.xml')
         output.processManifest.enabled=false
       }
  }
Run Code Online (Sandbox Code Playgroud)


uri*_*ish 5

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

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

  • 通过在应用程序的`build.gradle`中粘贴它我收到错误:错误:(92,0)无法在com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@68ff5866上找到属性'processResources'.<a href="openFile:/Users/shajeel1/Documents/Android_Studio_Workspace/Cricket_Scorer_Application/app/build.gradle">打开文件</a> (2认同)