Ikon ikon Android studio Gradle, Manifest Merger

141

Saya terus melihat pesan ini dan tidak yakin bagaimana menyelesaikannya untuk selamanya.

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

Sudah mencoba menambahkan android:replace="android:icon"ke manifes saya bahkan dengan ikon saya.

Saya mencoba menghapus android:icon="@drawable/ic_launcherdari perpustakaan tetapi terus kembali ketika saya membangun karena diimpor dari pakar

Ada ide?

shimi_tap
sumber
Masalah ini terjadi ketika masalah dalam tag file manifes. Silakan periksa jawabannya stackoverflow.com/a/39509659/2732632
Kimmi Dhingra
Saya menghadapi masalah yang sama ketika saya menambahkan izin rangkap dalam manifes.
Cloy

Jawaban:

342

Tampaknya menjadi kesalahan alat Penggabungan mainfest untuk gradle.

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

Dipecahkan dengan menambahkan tag manifes saya xmlns:tools="http://schemas.android.com/tools"

Kemudian ditambahkan tools:replace="android:icon,android:theme"ke tag aplikasi

Ini memberitahu merger untuk menggunakan ikon manifes dan tema saya dan bukan dari perpustakaan lain

Semoga ini bisa membantu, terima kasih

shimi_tap
sumber
6
Masalahnya masih ada untuk saya. Bekerja di Android Studio 1.1.
Bolling
1
Terima kasih! Bekerja untuk saya
Sandeep
4
Versi terbaru Android 2.0. tidak bekerja Siapa pun yang menjawab harus memperbarui Q ini jika ia bermaksud menyelamatkan generasi lain, itu akan segera sia-sia
Karue Benson Karue
3
Studio 2.2 mulai hari ini memiliki semua ini dan menyelesaikan masalah ini
Prasad
2
tidak bekerja untuk Android Studio 2.2 dengan gradle 2.2.0.
DysaniazzZ
54

Saya memiliki masalah yang sama, saya memperbaikinya seperti ini dengan menambahkan xmlns:tools="http://schemas.android.com/tools"ke bagian atas file mainfest, dan menambahkan tools:replace="android:icon"agar terlihat seperti

<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>
Mina Fawzy
sumber
1
tidak bekerja untuk Android Studio 2.2 dan gradle 2.2.0.
DysaniazzZ
jawaban cemerlang
Gundu Bandgar
10

saya memiliki kesalahan yang sama, hanya kode ini yang menyelesaikan masalah saya, saya ingin berbagi dengan Anda:

di Manifest.xml:

  • tambahkan kode ini di atas file xml Anda:

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

  • Kemudian ditambahkan:

    tools:replace="android:icon,android:theme,android:label,android:name" ke tag aplikasi

Adnan Abdollah Zaki
sumber
@DysaniazzZ, tidak tergantung Android Studio. lihat log pesan.
Adnan Abdollah Zaki
Oke, saya akan melihat.
DysaniazzZ
@Funwise, periksa log pesan Anda, saya pikir itu tidak tergantung pada android studio.
Adnan Abdollah Zaki
@ adnan9011, masalah saya adalah memiliki izin duplikat di file Manifest.
Darush
9

Jawaban shimi_tap sudah cukup. Yang harus diingat adalah bahwa hanya memilih apa yang Anda butuhkan. Pilih dari {ikon, nama, tema, label}. Saya menambahkan tools:replace="android:icon,android:theme", itu tidak berhasil. Saya menambahkan tools:replace="android:icon,android:theme,android:label,android:name", itu tidak berhasil. Ini berfungsi ketika saya menambahkan tools:replace="android:icon,android:theme,android:label". Jadi cari tahu apa konflik sebenarnya di file manifes Anda.

黄锐铭
sumber
1
tidak bekerja untuk Android Studio 2.2 dan gradle 2.2.0.
DysaniazzZ
5

Tambahkan saja xmlns:tools="http://schemas.android.com/tools"tag manifes Anda, dan kemudian Anda perlu menambahkan tools:replace="android:icon" sebelumnya android:icon="@mipmap/ic_launcher" .

Ilya Mentimun
sumber
3

Kesalahan ini juga terjadi ketika minSdk aplikasi Anda lebih tinggi dari minSdk perpustakaan mana pun.

app's minSdk >= libraries minSdk
Hisham Muneer
sumber
1
jadi apa solusinya?
itzhar
2

DAPATKAN SOLUSI SETELAH BANYAK GOOGLING WAKTU

dapatkan saja ic_launcher Anda dan rekatkan di folder drawables Anda,

Buka manifes Anda dan ubah android: icon = "@ drawable / ic_launcher"

Bersihkan proyek Anda dan bangun kembali

Semoga ini bisa membantu Anda

Ismail ozil
sumber
2

Saya mengalami masalah saat mengubah ikon dari drawable ke mipmap.

Saya hanya melewatkan garis

tools:replace="android:icon"

dalam manifes.

Alecs
sumber
1

Untuk beberapa alasan android studio tidak suka memanggil ikon aplikasi dari folder yang dapat ditarik. Jadi dalam hal ini saya membuat direktori sumber daya mipmap di bawah folder res.

Klik kanan folder res> baru> direktori sumber android> jenis sumber daya: mipmap dan sekarang letakkan ikon apa pun di sana kemudian rujuk ke file manifes. Berbagi ini karena metode ini bekerja untuk saya.

android: icon: @ drawable / ic_launcher "

untuk

android: icon = "@ mipmap / ic_launcher"

Alex
sumber
bagi saya pengaturan gaya tampak lebih baik android:theme="@style/AppTheme" dilihat -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS
1

Jika tidak ada yang berhasil, tutup Android Studio. Buka aplikasi / src / main, buka file AndroidManifest.xml dalam editor teks (seperti sublime), hapus / ganti garis erros, simpan dan buka kembali android studio.

Ricardo Mutti
sumber
1

Ketika nilai atribut berisi placeholder (lihat format di bawah), merger nyata akan menukar nilai placeholder ini dengan nilai yang disuntikkan. Nilai yang dimasukkan ditentukan dalam build.gradle. Sintaks untuk nilai placeholder adalah $ {name} karena @ dicadangkan untuk tautan. Setelah penggabungan file terakhir terjadi, dan sebelum file manifes android gabungan yang dihasilkan ditulis, semua nilai dengan placeholder akan ditukar dengan nilai yang disuntikkan. Kerusakan build akan dihasilkan jika nama variabel tidak dikenal.

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

Shixin Zhang
sumber
0

Jawaban Shimi_tap adalah cara yang tepat untuk memperbaiki masalah. Jika Anda ingin menggunakan alat merger lama, Anda dapat menambahkan ini ke file build.gradle

android {useOldManifestMerger true}

San
sumber
2
"Pada 1.0, kami menghapus kemampuan untuk meminta merger manifes lama ..." tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg
Tidak dapat menemukan metode useOldManifestMerger () untuk argumen [benar] pada proyek ': app' dari tipe org.gradle.api.Project.
DysaniazzZ
0

Bagi saya, masalah ini terjadi setelah memperbarui Layanan Google Play. Salah satu perpustakaan yang saya gunakan menggabungkan perpustakaan ini menggunakan "+" dalam referensi gradel, seperti

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

Ini menciptakan masalah karena versi min yang ditargetkan oleh perpustakaan itu kurang dari apa yang ditargetkan oleh versi Google Play Services saat ini. Saya menemukan ini hanya dengan melihat log.

Rarw
sumber
0

Di .gradleMinSDK perubahan Anda , misalnya:

  • build.gradle (Modul: aplikasi)
    • sebelum: minSdkVersion 9
    • setelah: minSdkVersion 14

dll.

Fili Briliant
sumber
0

Saya mencoba semua solusi yang disebutkan di atas

di Manifest.xml:

  • tambahkan kode ini di atas file xml Anda di dalam tag manifes:

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

  • Kemudian ditambahkan:

    tools:replace="android:icon,android:theme,android:label,android:name" ke tag aplikasi

tapi tidak ada yang berhasil. Saya perlu menghapus file xml yang terletak di

mipmap-anydpi-v26 / ic_launcher_round.xml

Saya sedang menguji aplikasi di

Samsung Galaxy 8 dengan OS versi 8.0.0

apakah ini benar-benar solusi?

surhidamatya
sumber
0

Di dalam file AndroidManifest.xml, tambahkan berikut ini ke applicationsimpul:

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
Messou
sumber