2014-07-01 232 views
127

我一直看到這個消息,並不確定如何解決它的好。Android工作室Gradle圖標錯誤,清單合併

Error:(43, 9) Attribute [email protected] value=(@drawable/new_app_icon) from AndroidManifest.xml:43:9 
    is also present at com.github.erizet.signala:signala-longpolling:0.20:7:18 value=(@drawable/ic_launcher) 
    Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:40:5 to override 
:OpenBook:processDebugManifest FAILED 
Error:Execution failed for task ':OpenBook:processDebugManifest'. 
> Manifest merger failed with multiple errors, see logs 

嘗試添加android:replace="android:icon"我的清單,即使我的圖標。

我試圖從庫中刪除android:icon="@drawable/ic_launcher但它不斷回來時,我建,因爲它從行家

任何想法進口?

+0

當清單文件標記中出現問題時,會發生此問題。請檢查答案http://stackoverflow.com/a/39509659/2732632 –

+0

我遇到同樣的問題,當我在清單中添加重複權限。 – Cloy

回答

314

這似乎是gradle的mainfest合併工具的缺點。

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

加入到我的清單標籤解決它xmlns:tools="http://schemas.android.com/tools"

然後加入tools:replace="android:icon,android:theme"到應用程序標籤

這告訴合併使用其他庫

我的清單圖標和主題,而不是

希望它有幫助謝謝

+6

問題依然存在。在Android Studio 1.1中工作。 – Bolling

+0

爲我工作。完美的解決方案,基本上他們升級了遷移系統,並且不允許舊的清單合併系統。爲了避免要合併的元素之間發生衝突,已經添加了一些標記來指導清單合併。 – sud007

+0

在Android Studio 1.2中工作 – WarsClon

0

S himi_tap的答案是解決問題的正確方法。如果你想使用舊的合併工具,您可以添加到這個文件的build.gradle

的Android { useOldManifestMerger真正 }

+2

「In 1。0,我們刪除了調用舊清單合併的能力。 ..「 http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger – devgrg

+0

無法找到方法useOldManifestMerger()參數[true]項目':app'類型org.gradle.api.Project。 – DysaniazzZ

8

shimi_tap的答案是不夠的。 需要記住的是隻選擇你需要的東西。從{圖標,名稱,主題,標籤}中進行選擇。 我加了tools:replace="android:icon,android:theme",它不起作用。我加了tools:replace="android:icon,android:theme,android:label,android:name",它不起作用。它工作時,我加入tools:replace="android:icon,android:theme,android:label"。因此,找出清單文件中的衝突究竟是什麼。

+1

不適用於Android Studio 2.2和gradle 2.2.0。 – DysaniazzZ

+1

不適用於android studio 2.2.3 – Darush

44

我有同樣的問題,我解決它像這樣通過增加xmlns:tools="http://schemas.android.com/tools"到mainfest文件的頂部,並添加tools:replace="android:icon"要看起來像

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" // add tools line here 
    package="yourpackage"> 


    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" 
     tools:replace="android:icon"> ///add this line 

..... 

</application> 

</manifest> 
+3

它不適用於android studio 2.0 –

+0

它適用於android studio –

+1

不適用於Android Studio 2.2和Gradle 2.2.0。 – DysaniazzZ

1

出於某種原因,機器人工作室不喜歡調用應用程序圖標從可繪製的文件夾。所以在這種情況下,我在res文件夾下創建了mipmap資源目錄。

右鍵單擊res文件夾>新建> android資源目錄>資源類型:mipmap現在放下任何圖標,然後將其引入清單文件。分享這個,因爲這個方法爲我工作。

機器人:圖標:@繪製/ ic_launcher」

機器人:圖標= 「@ mip映射/ ic_launcher」

+0

對我來說設置風格似乎最好'android:theme =「@ style/AppTheme「'見 - > https://gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9 – CrandellWS

2

GOT溶液後時間ALOT谷歌搜索

只是讓你的ic_launcher和p ASTE它在你的可繪製文件夾,

轉到您的清單,並變化的android:圖標= 「@繪製/ ic_launcher」

清理項目,重建

希望它可以幫助你

1

如果沒有這項工作,請關閉Android Studio。進入app/src/main,在文本編輯器(如sublime)中打開文件AndroidManifest.xml,刪除/替換錯誤行,保存並重新打開android studio。

3

當您的應用程序的minSdk高於任何庫的minSdk時也會發生此錯誤。

app's minSdk >= libraries minSdk 
+1

那麼,什麼是soluti上? – itzhar

1

我有這個問題,將圖標從drawable改爲mipmap。

我只錯過了清單中的線

tools:replace="android:icon"

+0

不適用於Android Studio 2.2。 – DysaniazzZ

8

我有同樣的錯誤,只是這段代碼解決我的問題,我想與大家分享:

Manifest.xml

  • 在XML文件的頂部添加以下代碼:

    xmlns:tools="http://schemas.android.com/tools"

  • 然後加入:

    tools:replace="android:icon,android:theme,android:label,android:name"到應用標籤

+0

不適用於Android Studio 2.2 :( – DysaniazzZ

+0

@DysaniazzZ,它不依賴於Android Studio。請參閱消息日誌。 –

+0

好的,我將會看到。 – DysaniazzZ

1

當屬性值包含的佔位符(參見下面的格式), 清單合併將交換此佔位符值與注入 值。注入值在build.gradle中指定。對於佔位符值,語法 是$ {name},因爲@是爲鏈接保留的。 發生最後一次文件合併,並且在生成合並的 android清單文件之前,所有具有佔位符 的值都將與插入的值交換。如果變量名稱未知,則生成破壞將生成 。

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Build-error

0

對於我來說,谷歌更新播放服務後發生此問題。一個我用的是併入其格拉德爾參考使用「+」這個庫的庫,像

compile 'com.google.android.gms:play-services:+'

這造成了一個問題,因爲最小的版本通過該庫的目標是小於什麼由目標目前版本的Google Play服務。我通過簡單地查看日誌發現了這一點。

0

在你.gradle變化MinSDK,例如:

  • build.gradle(模塊:APP)
    • 之前:minSdkVersion 9
    • 後:minSdkVersion 14

2

只需將xmlns:tools="http://schemas.android.com/tools"添加到您的清單標記。然後您需要添加tools:replace="android:icon"__BEFORE__android:icon="@mipmap/ic_launcher"。祝你好運! :D