Manifest Merger gagal dengan banyak kesalahan di Android Studio

249

Jadi, saya pemula di Android dan Java. Saya baru mulai belajar. Saat saya bereksperimen dengan Intent hari ini, saya mengalami kesalahan.

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

Saya menemukan beberapa solusi di sini dan mencoba menerapkannya, tetapi tidak berhasil.

Ini adalah build.gradle saya:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"

defaultConfig {
    applicationId "com.example.rohan.petadoptionthing"
    minSdkVersion 10
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
}

Ini adalah AndroidManifest saya:

<?xml version="1.0" encoding="utf-8"?>

package="com.example.rohan.petadoptionthing" >

<application

    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".Second"
        />

    <activity android:name=".third"/>
    <activity android:name=".MainActivity"/>


</application>

Ini minggu pertama saya dengan coding, saya minta maaf jika ini adalah hal yang sangat konyol. Saya benar-benar baru dalam hal ini dan tidak menemukan tempat lain untuk bertanya. Maaf jika saya melanggar aturan

Rohan Mallya
sumber
2
hapus baris <activity android: name = ". MainActivity" /> di file menifest.xml Anda
Pankaj Talaviya
10
Untuk informasi terperinci tentang kesalahan Anda dapat memeriksa Gradle Console di Android Studio di sudut kanan bawah.
DragonT
Saya harap tautan ini bermanfaat.
Mortreza AD
Saya mendapat kesalahan yang sama. Tetapi menyelesaikannya dengan menjaga SDK minimum yang sama di proyek dan perpustakaan.
Raja Jawahar
youtu.be/K88WaSm3q8Y "Manifest Merger gagal dengan banyak kesalahan di Android Studio"?
Roman Pokrovskij

Jawaban:

964

Buka manifes aplikasi ( AndroidManifest.xml) dan klik Merged Manifest. Periksa gambar di bawah ini:

android-manifest-merge-feature

Dari gambar Anda dapat melihat Kesalahan di kolom kanan, cobalah untuk menyelesaikan kesalahan. Mungkin membantu seseorang dengan masalah yang sama. Baca lebih lanjut di sini .

CLIFFORD PY
sumber
5
brilian ... tidak dapat menemukan kata-kata untuk mengucapkan terima kasih
Shahzad Afridi
2
dalam kasus saya, saya menggulirkannya sedikit ke bawah untuk melihat kesalahan
CodeToLife
Sayangnya, tidak ada tab "Merged Manifest" di Android Studio 3.5.2.
FractalBob
@FractalBob Saya menjalankan 3.5.2 dan melihat tab 'Manifes Digabungkan' .. mungkin Anda memiliki beberapa kesalahan lain yang terjadi sebelum manifes digabungkan.
sonyisda1
@ sonyisda1 Apakah Anda menjalankan lingkungan Linux? Saya memiliki Ubuntu 18,04 LTS.
FractalBob
120

Hapus <activity android:name=".MainActivity"/>dari file mainfest Anda. Seperti yang telah Anda definisikan sebagai:

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Jadi, file Manifest menunjukkan ambiguitas.

Android Geek
sumber
31
Sayang sekali bahwa ini adalah jawaban yang diterima, ketika itu hanya memperbaiki kode Rowen tetapi sama sekali tidak membantu bagi orang lain. Jawaban oleh CLIFFORD sebenarnya menunjukkan kepada Anda bagaimana "melihat log" seperti pesan kesalahan menyarankan.
Andrew Koster
Ini berfungsi sangat baik hanya memeriksa dan menghapus entri duplikat dalam file AndroidManifest.xml.
vishwajit76
61

Bagi saya INI bekerja -

Menemukan Kesalahan Penggabungan di AndroidManifest.xml

masukkan deskripsi gambar di sini

Klik pada Manifest Tergabung dalam AndroidManifest.xml

masukkan deskripsi gambar di sini

Anda dapat melihat kesalahan penggabungan nyata di kolom kanan. Mungkin membantu menyelesaikan masalah ini.

Anirban
sumber
3
Ini adalah perbaikan umum untuk masalah ini. Ini membantu Anda menemukan alasan sebenarnya untuk masalah apa pun mengenai hal ini.
JoeGalind
60

Saya juga menghadapi masalah yang sama, dan setelah banyak penelitian menemukan solusinya:

  1. Versi min sdk Anda harus sama dengan modul yang Anda gunakan misalnya: modul min sdk modul Anda adalah 14 dan versi aplikasi min sdk Anda adalah 9 Itu harus sama.
  2. Jika versi aplikasi dan modul Anda tidak sama. Sekali lagi itu harus sama ** Singkatnya, build.gradlefile aplikasi Anda dan manifes harus memiliki konfigurasi yang sama **
  3. Tidak ada duplikasi seperti izin yang sama ditambahkan dalam file manifes dua kali, aktivitas yang sama menyebutkan dua kali.
  4. Jika Anda telah menghapus aktivitas apa pun dari proyek Anda, hapus juga dari file manifes Anda.
  5. Kadang-kadang ini karena label, ikon dll tag file manifes:

a) Tambahkan xmlns:toolsbaris dalam tag manifes.

b) Tambahkan tools:replace=atau tools:ignore=dalam tag aplikasi.

Contoh:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.slinfy.ikharelimiteduk"
    xmlns:tools="http://schemas.android.com/tools"
    android:versionCode="1"
    android:versionName="1.0" >

  <application
      tools:replace="icon, label"
      android:label="myApp"
      android:name="com.example.MyApplication"
      android:allowBackup="true"
      android:hardwareAccelerated="false"
      android:icon="@drawable/ic_launcher"
      android:theme="@style/Theme.AppCompat" >
  </application>

</manifest>
  1. Jika dua dependensi tidak versi versi yang sama: Anda menggunakan dependensi untuk appcompat v7: 26.0.0 dan untuk facebook com.facebook.android:facebook-android-sdk:[4,5) facebook menggunakan cardview versi com.android. dukungan: cardview-v7: 25.3.1 dan appcompat v7: 26.0.0 menggunakan cardview versi v7: 26.0.0, Jadi ada perbedaan dalam dua perpustakaan dan dengan demikian memberikan kesalahan

Kesalahan: Eksekusi gagal untuk tugas ': app: processDebugManifest'.

Manifest merger gagal: Atribut meta-data#android.support.VERSION@value value = (26.0.0-alpha1) dari [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 juga hadir di [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 value = (25.3.1). Saran: tambahkan 'tools: replace = "android: value"' ke elemen di AndroidManifest.xml: 25: 5-27: 41 untuk menggantikan.

Jadi dengan menggunakan appcompat versi 25.3.1, Kita dapat menghindari kesalahan ini

Dengan mempertimbangkan poin-poin di atas dalam pikiran, Anda akan menyingkirkan masalah menjengkelkan ini. Anda dapat memeriksa blog saya juga https://wordpress.com/post/dhingrakimmi.wordpress.com/23

Kimmi Dhingra
sumber
1
dalam kasus saya itu karena tema modul yang saya tambahkan jadi saya gunakan sebagai alat: ganti "ikon, label, tema"
turbandroid
dalam kasus saya itu karena tema modul yang saya tambahkan jadi saya gunakan sebagai alat: ganti "ikon, label, tema" dan xmlns: tools = " schemas.android.com/tools ". thanks @ O'one
alfo888_ibg
14

Selain solusi yang tersedia, silakan periksa ini juga.
Jika Anda telah mengatur android:allowBackup="false"di Anda AndroidManifest.xmlmaka mungkin ada konflik android:allowBackup="true"di dependensi lain.

Solusi
Seperti yang disarankan oleh @CLIFFORD PY, alihkan ke Merged ManifestdalamAndroidManifest.xml . Android Studio akan menyarankan untuk menambahkan tools:replace="android:allowBackup"di <application />dalam Anda AndroidManifest.xml.

Chintan Shah
sumber
12

Saya menghadapi masalah yang sama dan saya baru saja menambahkan satu baris di manifes.xml saya dan itu berhasil untuk saya.

tools:replace="android:allowBackup,icon,theme,label,name"> 

tambahkan baris ini di bawah

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:screenOrientation="portrait"
    android:supportsRtl="true"
    android:theme="@style/AppThemecustom"
    tools:replace="android:allowBackup,icon,theme,label">

Semoga ini bisa membantu.

Pre_hacker
sumber
Terima kasih banyak! Saya menghadapi masalah ini dalam skenario yang sangat spesifik yang disebabkan oleh halaman dukungan Zendesk, ketika mengklik "lampirkan file". Sudah mencoba banyak jawaban dari berbagai pertanyaan dan hanya komentar Anda yang membantu!
Natalie
@ Natalie Aku senang itu membantu :)
Pre_hacker
11

Cukup tambahkan kode di bawah ini dalam tag aplikasi Manifest proyek Anda ...

<application
        tools:node="replace">
sankalp
sumber
Terima kasih banyak
tej shah
8

Dalam kasus saya itu menunjukkan kesalahan karena ada <uses-permission>elemen redundansi . Jadi, harap periksa diAndroidManifest.xml file untuk hal yang sama.

Versi Android Studio adalah 3.0.1

Sistem Operasi adalah Windows 7

Ini screenshot untuk referensi.

Tangkapan layar yang menunjukkan redundansi dalam file manifes.

Parth Patel
sumber
Sementara ini diposting sebelum jawaban @ CLIFFORD-PY, menemukan kesalahan penggabungan melalui tampilan Manifest Gabungan akan menangkap kesalahan yang berlebihan ini.
sonyisda1
8

Saya mengatasi ini dengan Refactor -> Migrasikan ke AndroidX

GL

Braian Coronel
sumber
7

Biasanya terjadi ketika Anda memiliki kesalahan di manifes Anda. Buka AndroidManifest.xml. Klik pada tab manifes gabungan. Kesalahan dapat dilihat di sana. Juga sertakan saran yang disebutkan di sana. Ketika saya memiliki masalah yang sama saat mengimpor com.google.android.gms .maps.model.LatLng, disarankan agar saya menyertakan alat: overrideLibrary = "com.google.android.gms.maps" di tag aplikasi dan build berhasil.

Archana Prabhu
sumber
3

Kasus saya, saya sudah memperbaikinya

build.gradle (Modul: aplikasi)

defaultConfig {
----------
multiDexEnabled true
}
dependencies {
    ...........
    implementation 'com.google.android.gms:play-services-gcm:11.0.2'
    implementation 'com.onesignal:OneSignal:3.+@aar'
    }

Jawaban ini kembali ke notifikasi push OnSignal

Md. Shofiulla
sumber
2
  1. Dalam AndroidManifest.xml:

    • Pada aplikasi, tambahkan tools:replace="android:icon, android:themedan
    • Di root Manifest, tambahkan xmlns:tools="http://schemas.android.com/tools
  2. Dalam build.gradle:

    • Di root, tambahkan useOldManifestMerger true
ao wu
sumber
2

Versi minium sdk harus sama dengan modul / lib yang Anda gunakan Sebagai contoh: Modul min sdk versi Anda adalah 26 dan versi aplikasi min sdk Anda adalah 21 Itu harus sama.

Ejaz Ahmad
sumber
1

selama beberapa hari terakhir saya juga mengalami masalah yang sama. Tetapi setelah banyak penelitian akhirnya saya menemukan solusi untuk ini.
Untuk mengatasi masalah ini, apa yang perlu Anda lakukan adalah:
1. Periksa apakah proyek Anda build.gradle file dan modul build.gradle file yang mengandung versi yang sama dari semua ketergantungan.
2. Pastikan, kompilasiSdkVersion proyek Anda , buildToolsVersion , minSdkVersion , dan targetSdkVersion cocok dengan yang ada di modul atau pustaka yang telah Anda tambahkan ke dalam proyek.

compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.example.appname"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 22
    versionName "2.0.3"

}

Semoga ini membantu.

Rahul Deep Singh
sumber
1

Jika setelah Anda menambahkan Modul Perpustakaan Android dan Anda mendapatkan kesalahan ini.
Anda dapat memperbaikinya dengan menghapus sederhana android:label="@string/app_name"dari Modul Perpustakaan AndroidAndroidManifest.xml Anda

Phan Van Linh
sumber
1

Buka konsol gradle Anda, lalu Anda melihat gradle menyarankan Anda untuk menambahkan baris tertentu (Seperti: tools: replace = "android: allowBackup" atau tools: replace = "android: label" dll). Tambahkan baris itu ke file manifes Anda di bawah tag dan sinkronisasi gradle, itu saja.

Nazmus Saadat
sumber
1

Dalam kasus saya itu terjadi karena meninggalkan beberapa filter niat kosong di dalam tag Activity

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

            <intent-filter>

            </intent-filter>

    </activity> 

Jadi hanya menghapus mereka memecahkan masalah.

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
    </activity> 
Dr TJ
sumber
0

Sebagai pemula di Android Studio, dalam kasus saya, saya telah memindahkan proyek yang ada dari Eclipse ke Android Studio dan menemukan bahwa ada definisi duplikat dari suatu aktivitas di dalam Manifest.xml saya yang belum diambil oleh Eclipse ditunjukkan sebagai kesalahan Gradle.

Saya menemukan ini dengan masuk ke Gradle Console (kanan bawah layar).

JanB
sumber
0

Terjadi dengan saya dua kali ketika saya refractor (Ganti nama dengan SHIFT + F6) nama bidang dalam file kami dan meminta Anda untuk mengubahnya di mana-mana dan kami tanpa memperhatikan mengubah nama di mana-mana. Misalnya, jika Anda memiliki nama variabel "id" di kelas Java Anda dan Anda menamainya dengan SHIFT + F6. Jika Anda tidak memperhatikan dialog berikutnya yang akan menanyakan Anda di mana saja itu akan mengubah id dan Anda mencentang memeriksa semua itu akan mengubah semua id di file tata letak Anda dari nilai baru.

Rakesh Yadav
sumber
0

ini adalah kesalahan yang sangat sederhana hanya terjadi ketika Anda mendefinisikan panggilan aktivitas apa pun dua kali dalam file mainifest.xml Seperti contoh

<activity android:name="com.futuretech.mpboardexam.Game" ></activity>

//and launcher also------like that



//solution:use only one 
Lalit Baghel
sumber
0

Letakkan ini di akhir build.gradle modul aplikasi Anda:

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.0'
        }
    }
}}

dari ini

SHADOW NET
sumber
0

Tambahkan jawabannya Phan Van Linh. Saya menghapus baris ini:

  android:icon="@mipmap/ic_launcher"
  android:label="name"
Sarang
sumber
0

Hanya bermigrasi ke Androidx seperti yang ditunjukkan di atas dan kemudian mengatur versi minimum SDK ke 26 ... tanpa keraguan ini berfungsi dengan baik

sammy mutahi
sumber
0

Retasan berikut ini berfungsi:

  1. Tambahkan xmlns:tools="http://schemas.android.com/tools"baris dalam tag manifes
  2. Tambahkan tools:replace="android:icon,android:theme,android:allowBackup,label,name" tag aplikasi
Shoaib Ahmed
sumber
0

Saya memecahkan masalah ini dengan menghapus android:replacetag

Gurjap singh
sumber
0

Dalam kasus saya, saya menggunakan beberapa penjelasan dari perpustakaan jetbrains. Saya menghapus anotasi dan dependensi itu dan berfungsi dengan baik.

Jadi silakan periksa perpustakaan dalam kode android dan dependensi dengan hati-hati.

Chaman Gurjar
sumber
0

Jika Anda menggunakan banyak manifestPlaceholderitem dibuild.gradle file Anda, Anda harus menambahkannya sebagai elemen array, bukan item yang terpisah.

Misalnya, ini akan menyebabkan kesalahan pembangunan atau kesalahan kompilasi: "java.lang.RuntimeException: Penggabungan gagal dengan beberapa kesalahan":

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1"]
        manifestPlaceholders = [myKey2: "myValue2"] // Error!
    }
}

Ini akan memperbaiki kesalahan:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}
Tuan-IDE
sumber
0

Ini karena Anda menggunakan pustaka Material baru dengan Pustaka Dukungan lawas.

Anda harus bermigrasi android.supportke androidxagar dapat digunakan com.google.android.material.

Jika Anda menggunakan android studio v 3.2 atau lebih baru, cukup

pergi ke refactor ---> MIGRATE TO ANDROID X.

Lakukan backup proyek Anda.

Fazal Jarral
sumber
0

Saya menggunakan FirebaseUI Librarybersama dengan Facebook SDK Library, yang menyebabkan saya masalah.

implementation 'com.firebaseui:firebase-ui-database:0.4.4'
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

Dan dari [sini] [1], saya menyingkirkan masalah ini.

Dengan latest updatedari FirebaseUI perpustakaan , versi sebelumnya dari Facebook SDK juga merupakan bagian dari itu.

Jika Anda menggunakan kedua perpustakaan, harap hapus Facebook SDK Library .

https://github.com/firebase/FirebaseUI-Android/issues/230

MEMPERBARUI

Dari Android Studio 3.0dan versi yang lebih baru, app.gradlefile diperlukan untuk digunakan implementationatau apialih-alih compileuntuk menambahkan dependensi ke aplikasi.

Mohammedsalim Shivani
sumber
0

Setelah melihat jawaban CLIFFORD untuk melihat kesalahan, yang membantu saya untuk mengatasi masalah ini adalah mengganti nama 'android: namex' menjadi 'android: name' di tag action intent-filter. Seandainya solusi yang sama membantu orang lain.

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:namex="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Farhan
sumber