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