簡體   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