ข้อผิดพลาดไอคอนสตูดิโอ Android Gradle, การรวมกิจการ


141

ฉันเห็นข้อความนี้ต่อไปและไม่แน่ใจว่าจะแก้ไขได้อย่างไร

Error:(43, 9) Attribute application@icon 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จากห้องสมุด แต่มันกลับมาเมื่อฉันสร้างเพราะมันนำเข้าจาก Maven

ความคิดใด ๆ


ปัญหานี้เกิดขึ้นเมื่อมีปัญหาในแท็กไฟล์รายการ โปรดตรวจสอบคำตอบstackoverflow.com/a/39509659/2732632
Kimmi Dhingra

ฉันประสบปัญหาเดียวกันเมื่อฉันเพิ่มสิทธิ์ที่ซ้ำกันในรายการ
Cloy

คำตอบ:


342

ดูเหมือนว่าเป็นความผิดของเครื่องมือควบรวมกิจการ mainfest สำหรับ gradle

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

1
ขอบคุณ! ทำงานให้ฉัน
Sandeep

4
Android 2.0 รุ่นล่าสุด ไม่ทำงาน. ใครที่ตอบว่าควรอัปเดตคำถามนี้ถ้าเขาหมายถึงการช่วยคนรุ่นต่อไปมันจะไร้ประโยชน์เร็ว ๆ นี้
Karue Benson Karue

3
Studio 2.2 นับจากวันนี้มีทั้งหมดนี้และไม่ได้ทำงานปัญหานี้
Prasad

2
ไม่ทำงานสำหรับ Android Studio 2.2 ที่มี gradle 2.2.0
DysaniazzZ

54

ฉันมีปัญหาเดียวกันฉันแก้ไขได้โดยเพิ่ม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>

1
ไม่ทำงานสำหรับ Android Studio 2.2 และ gradle 2.2.0
DysaniazzZ

คำตอบที่ยอดเยี่ยม
Gundu Bandgar

10

ฉันมีข้อผิดพลาดเดียวกันรหัสนี้แก้ปัญหาของฉันฉันต้องการแบ่งปันกับคุณ:

ในManifest.xml:

  • เพิ่มรหัสนี้ที่ด้านบนของไฟล์ xml ของคุณ:

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

  • จากนั้นเพิ่ม:

    tools:replace="android:icon,android:theme,android:label,android:name" ไปยังแท็กแอปพลิเคชัน


@DaniaaniazzZ มันไม่ได้ขึ้นอยู่กับ Android Studio ดูบันทึกข้อความ
Adnan Abdollah Zaki

ตกลงฉันจะเห็น
DysaniazzZ

@Funwise ตรวจสอบบันทึกข้อความของคุณฉันคิดว่ามันไม่ขึ้นอยู่กับ android studio
Adnan Abdollah Zaki

@ adnan9011 ปัญหาของฉันมีการอนุญาตซ้ำกันในไฟล์ Manifest
Darush

9

คำตอบของ 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"มันทำงานได้เมื่อฉันเพิ่ม ดังนั้นค้นหาความขัดแย้งที่เกิดขึ้นในไฟล์ Manifest ของคุณ


1
ไม่ทำงานสำหรับ Android Studio 2.2 และ gradle 2.2.0
DysaniazzZ

5

เพียงแค่เพิ่มxmlns:tools="http://schemas.android.com/tools"ไปยังแท็กอย่างชัดแจ้งของคุณแล้วคุณจะต้องเพิ่มก่อนtools:replace="android:icon" android:icon="@mipmap/ic_launcher"


3

ข้อผิดพลาดนี้ก็เกิดขึ้นเมื่อ minSdk ของแอปของคุณสูงกว่า minSdk ของห้องสมุดใด ๆ

app's minSdk >= libraries minSdk

1
ดังนั้นทางออกคืออะไร?
itzhar

2

มีวิธีแก้ไขปัญหาหลังจาก GOOGLING เวลามาก

เพิ่งได้รับic_launcherของคุณและวางลงในโฟลเดอร์ drawables ของคุณ

ไปที่รายการของคุณและ เปลี่ยน android: icon = "@ drawable / ic_launcher"

ทำความสะอาดโครงการของคุณและสร้างใหม่

หวังว่ามันจะช่วยคุณ


2

ฉันมีปัญหานี้ในการเปลี่ยนไอคอนจาก drawable เป็น mipmap

ฉันไม่ได้รับสาย

tools:replace="android:icon"

ในรายการ


1

ด้วยเหตุผลบางอย่างที่ android studio ไม่ชอบเรียกไอคอนแอพจากโฟลเดอร์ drawable ดังนั้นในกรณีที่ฉันสร้างไดเรกทอรีทรัพยากร mipmap ภายใต้ res โฟลเดอร์

คลิกขวา res โฟลเดอร์> ใหม่> ไดเรกทอรีทรัพยากร android> ประเภททรัพยากร: mipmapและตอนนี้ปล่อยไอคอนใด ๆ ในนั้นแล้วอ้างอิงที่ลงในไฟล์รายการ การแชร์สิ่งนี้เนื่องจากวิธีนี้ใช้ได้ผลสำหรับฉัน

หุ่นยนต์: ไอคอน: @ drawable / ic_launcher"

ถึง

หุ่นยนต์: ไอคอน = "@ มิพแมพ / ic_launcher"


สำหรับฉันการตั้งค่ารูปแบบที่ดีที่สุดandroid:theme="@style/AppTheme" ดู -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS

1

หากไม่มีสิ่งใดทำงานให้ปิด Android Studio ไปที่ app / src / main เปิดไฟล์ AndroidManifest.xml ใน text editor (เช่น sublime), ลบ / แทนที่บรรทัด erros, บันทึกและเปิดสตูดิโอ android ใหม่


1

เมื่อค่าแอตทริบิวต์มีตัวยึดตำแหน่ง (ดูรูปแบบด้านล่าง) การรวมรายการจะสลับค่าตัวยึดตำแหน่งนี้ด้วยค่าที่แทรก ค่าการฉีดถูกระบุไว้ใน build.gradle ไวยากรณ์สำหรับค่าตัวยึดตำแหน่งคือ $ {name} เนื่องจาก @ สงวนไว้สำหรับลิงก์ หลังจากการรวมไฟล์ครั้งล่าสุดเกิดขึ้นและก่อนที่จะมีการเขียนไฟล์รายการ android ที่ผสานผลลัพธ์ที่ได้ค่าทั้งหมดที่มีตัวยึดตำแหน่งจะถูกสลับเป็นค่าการฉีด การแตกของบิลด์จะถูกสร้างขึ้นหากไม่ทราบชื่อตัวแปร

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


0

คำตอบของ Shimi_tap คือวิธีที่ถูกต้องในการแก้ไขปัญหา หากคุณต้องการใช้เครื่องมือการรวมแบบเก่าคุณสามารถเพิ่มสิ่งนี้ลงในไฟล์ build.gradle

android {useOldManifestMerger จริง}


2
"ใน 1.0 เราได้ลบความสามารถในการเรียกใช้การรวมรายการแบบเก่า .. " tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg

ไม่สามารถหาวิธี useOldManifestMerger () สำหรับข้อโต้แย้ง [จริง] ในโครงการ ': แอป' ของประเภท org.gradle.api.Project
DysaniazzZ

0

สำหรับฉันปัญหานี้เกิดขึ้นหลังจากอัปเดตบริการ Google Play หนึ่งในไลบรารีที่ฉันใช้คือรวมไลบรารี่นี้โดยใช้ "+" ในการอ้างอิงระดับของมันเช่น

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

สิ่งนี้สร้างปัญหาเนื่องจากเวอร์ชันขั้นต่ำที่กำหนดเป้าหมายโดยห้องสมุดนั้นน้อยกว่าที่กำหนดเป้าหมายโดยบริการ Google Play เวอร์ชันปัจจุบัน ฉันพบสิ่งนี้โดยดูจากบันทึก


0

ใน.gradleการเปลี่ยนแปลง MinSDK ของคุณตัวอย่างเช่น:

  • build.gradle (โมดูล: แอป)
    • ก่อน: minSdkVersion 9
    • หลังจาก: minSdkVersion 14

เป็นต้น


0

ฉันลองวิธีแก้ปัญหาทั้งหมดที่กล่าวถึงข้างต้น

ในManifest.xml:

  • เพิ่มรหัสนี้ด้านบนของไฟล์ xml ของคุณภายในแท็กรายการ:

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

  • จากนั้นเพิ่ม:

    tools:replace="android:icon,android:theme,android:label,android:name" ไปยังแท็กแอปพลิเคชัน

แต่มันไม่ทำงานเลย ฉันต้องการลบไฟล์ xml ซึ่งอยู่ในนั้น

มิพแมพ-anydpi-V26 / ic_launcher_round.xml

ฉันกำลังทดสอบแอปพลิเคชันใน

Samsung Galaxy 8พร้อมระบบปฏิบัติการเวอร์ชั่น 8.0.0

มันแก้ปัญหาได้จริงเหรอ?


0

ภายในไฟล์ AndroidManifest.xml ให้เพิ่มสิ่งต่อไปนี้ในapplicationโหนด:

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.