繁体   English   中英

在Android Gradle Build中禁用Manifest Merger

[英]Disable Manifest Merger in Android Gradle Build

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

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

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

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

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

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

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

这可能有所帮助。

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

对于0.6。+插件,您还必须从buildVariants更改为applicationVariants

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

看起来这些解决方案不适用于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"/>

谢谢菲利普

对于0.5。+插件,您必须从each更改为all如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM