[英]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.