Bildirim Birleştirmesi, Android Studio'da birden çok hatayla başarısız oldu


251

Bu yüzden Android ve Java'ya yeni başlıyorum. Öğrenmeye yeni başladım. Bugün Intent'i denerken bir hataya maruz kaldım.

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

Burada bazı çözümler buldum ve uygulamaya çalıştım, ama işe yaramadı.

Bu benim build.gradle:

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'
}

Bu benim AndroidManifest'im:

<?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>

Bu benim kodlama ile ilk hafta, bu gerçekten aptalca bir şeyse üzgünüm. Gerçekten bu konuda yeni ve sormak için başka bir yer bulamadık. Herhangi bir kuralı ihlal edersem özür dilerim


2
menifest.xml dosyanızdaki <etkinlik android: name = ". MainActivity" /> satırını kaldırın
Pankaj Talaviya

10
Hata hakkında ayrıntılı bilgi için sağ alt köşedeki Android Studio'daki Gradle Console'u kontrol edebilirsiniz.
DragonT

Umarım bu bağlantı faydalı olacaktır.
Mortreza AD

Aynı hatayı aldım ama aynı minimum SDK'yı proje ve kütüphanede tutarak çözdüm.
Raja Jawahar

youtu.be/K88WaSm3q8Y "Manifest Birleşme, Android Studio'da birden çok hata ile başarısız oldu"
Roman Pokrovskij

Yanıtlar:


967

Uygulama manifestini ( AndroidManifest.xml) açın ve üzerine tıklayın Merged Manifest. Aşağıdaki resmi kontrol edin:

android-tezahür-birleştirme-özellik

Resimden sağ sütunda Hata görebilirsiniz , hatayı çözmeye çalışın. Aynı sorunu olan bazılarına yardımcı olabilir. Daha fazlasını buradan okuyun .


5
pırlanta ... teşekkür ederim ifade etmek için kelimeler bulamıyorum
Shahzad Afridi

2
benim durumumda hataları görmek için biraz aşağı kaydırdım
CodeToLife

Ne yazık ki, Android Studio 3.5.2'de "Birleştirilmiş Manifest" sekmesi yok.
FractalBob

@FractalBob 3.5.2 çalıştırıyorum ve 'Birleştirilmiş Manifest' sekmesine bakın .. belki manifests birleştirilmeden önce başka bir hata var.
19:24

@ sonyisda1 Linux ortamında mı çalışıyorsunuz? Ubuntu 18.04 LTS var.
FractalBob

120

<activity android:name=".MainActivity"/>Mainfest dosyanızdan kaldırın . Önceden tanımladığınız gibi:

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

Yani, belirsizlik gösteren Manifest dosyası.


31
Sadece Rowen'in kodunu düzelttiğinde, ancak herkes için tamamen yararsız olduğunda, bunun kabul edilen cevap olması çok kötü. CLIFFORD'un cevabı aslında hata mesajının önerdiği gibi "günlükleri nasıl göreceğinizi" gösterir.
Andrew Koster

Çok iyi çalışır sadece AndroidManifest.xml dosyasında herhangi bir yinelenen girişi kontrol edin ve kaldırın.
vishwajit76

61

Benim için BU çalışır -

Konumunda Birleştirme Hataları Bulma AndroidManifest.xml

resim açıklamasını buraya girin

Birleştirilmiş Manifest'i tıklayın AndroidManifest.xml

resim açıklamasını buraya girin

Manifest birleştirme hatasını sağ sütunda görebilirsiniz. Bu sorunun çözülmesine yardımcı olabilir.


3
Bu, bu sorun için genel bir çözümdür. Bu, bununla ilgili herhangi bir sorunun gerçek nedenini bulmanıza yardımcı olur.
JoeGalind

60

Aynı sorunlarla karşı karşıya kaldım ve birçok araştırmadan sonra çözüm bulundu:

  1. Min sdk sürümünüz kullandığınız modüllerle aynı olmalıdır, örneğin: modül min sdk sürümünüz 14 ve uygulama min sdk sürümünüz 9'dur. Aynı olmalıdır.
  2. Uygulamanızın ve modüllerin derleme sürümü aynı değilse. Yine aynı olmalıdır ** Kısacası, uygulama build.gradledosyanız ve manifestiniz aynı yapılandırmalara sahip olmalıdır **
  3. Bildirim dosyasına iki kez eklenen aynı izinler gibi bir kopya yoktur, aynı etkinlik iki kez belirtilir.
  4. Projenizden herhangi bir etkinlik sildiyseniz, manifest dosyanızdan da silin.
  5. Bazen manifest dosyasının etiketi, simgesi vb etiketi nedeniyle:

a) xmlns:toolsSatırı bildirim etiketine ekleyin .

b) Uygulama etiketine tools:replace=veya tools:ignore=etiketi ekleyin .

Misal:

<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. İki bağımlılık aynı sürümde değilse örnek: appcompat v7: 26.0.0 ve facebook com.facebook.android:facebook-android-sdk:[4,5 için bağımlılık kullanıyorsunuz) facebook com.android sürümünün cardview özelliğini kullanır. destek: cardview-v7: 25.3.1 ve appcompat v7: 26.0.0, v7: 26.0.0 sürümünün cardview'ini kullanır, Bu nedenle iki kütüphanede açıklık vardır ve bu nedenle hata verir

Hata: ': app: processDebugManifest' görevi için yürütme başarısız oldu.

Manifest birleşmesi başarısız oldu: [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 özellik meta-data#android.support.VERSION@value değeri = (26.0.0-alpha1) -38 ayrıca [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 değeri = (25.3.1) 'de de mevcuttur. Öneri: AndroidManifest.xml: 25: 5-27: 41'deki öğeye geçersiz kılmak için 'tools: replace = "android: value"' ekleyin.

Dolayısıyla, 25.3.1 sürümünün uygulama paketini kullanarak, bu hatayı önleyebiliriz

Yukarıdaki noktaları göz önünde bulundurarak, bu rahatsız edici sorundan kurtulacaksınız. Blogumu da kontrol edebilirsiniz https://wordpress.com/post/dhingrakimmi.wordpress.com/23


1
benim durumumda eklediğim modül teması nedeniyle araç olarak kullandım: "simge, etiket, tema" yerine
turbandroid

benim durumumda eklediğim modül teması nedeniyle araçlar olarak kullandım: "simge, etiket, tema" ve xmlns: tools = " schemas.android.com/tools " yerine. thanks @ O'one
alfo888_ibg

14

Mevcut çözümlere ek olarak, lütfen bunu da kontrol edin.
Eğer kurduysanız android:allowBackup="false"Gözlerinde farklı AndroidManifest.xmlardından bir çakışma olabilir android:allowBackup="true"diğer bağımlılıkları.

Çözüm
olarak @CLIFFORD PY önerdiği, geçiş Merged ManifestGözlerinde farklı AndroidManifest.xml. Android Studio eklemek önerir tools:replace="android:allowBackup"içinde <application />Gözlerinde farklı AndroidManifest.xml.


12

Aynı sorunla karşılaşıyordum ve manifest.xml dosyasına bir satır ekledim ve benim için çalıştı.

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

bu satırı altına ekle

<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">

Umarım yardımcı olur.


çok teşekkür ederim! "Dosya ekle" yi tıklarken Zendesk destek sayfasının neden olduğu çok özel bir senaryoda bu sorunla karşı karşıya kaldım. Farklı sorulardan çok sayıda cevap denedim ve sadece yorumunuz yardımcı oldu!
Natalie

@Natalie Yardımcı oldum sevindim :)
Pre_hacker

11

Sadece proje Manifest uygulama etiketinize aşağıdaki kodu ekleyin ...

<application
        tools:node="replace">

Çok teşekkür ederim
tej shah

8

Benim durumumda bir hata gösteriyordu çünkü <uses-permission>elemanda artıklık vardı . Lütfen kontrol edinAndroidManifest.xml dosyanızı .

Android Studio sürümü 3.0.1'dir

İşletim Sistemi Windows 7

İşte referans için ekran görüntüsü.

Manifest dosyasında yedekliliği gösteren ekran görüntüsü.


Bu, @ CLIFFORD-PY'nin cevabından önce yayınlanmış olsa da, Birleştirilmiş Manifest görünümünden birleştirme hataları bulmak bu gereksiz hatayı yakalayacaktır.
sonyisda1 26:19


7

Genellikle manifestinizde hatalar olduğunda oluşur.AndroidManifest.xml dosyasını açın. Birleştirilmiş manifest sekmesine tıklayın. Hatalar orada görülebilir. .maps.model.LatLng, uygulama etiketine araçlar eklememi önerdi: overrideLibrary = "com.google.android.gms.maps" ve uygulama etiketinde başarılı oldu.


3

Benim durumum tarafından düzelttim

build.gradle (Modül: Uygulama)

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

Bu cevap OnSignal push bildirimi ile ilgilidir


2
  1. İçinde AndroidManifest.xml:

    • Uygulamada, tools:replace="android:icon, android:theme ve
    • Manifest kökünde, xmlns:tools="http://schemas.android.com/tools
  2. İçinde build.gradle:

    • Kökte, ekle useOldManifestMerger true

2

Minium sdk sürümü, kullandığınız modül / lib ile aynı olmalıdır. Örneğin: Modül min sdk sürümünüz 26 ve uygulama min sdk sürümünüz 21'dir. Aynı olmalıdır.


1

son birkaç gündür ben de aynı sorunu yaşıyordum. Ama sonra, birçok araştırma sonunda bunun için bir çözüm buldum.
Bu sorunu çözmek için yapmanız gerekenler:
1. Projenizin build.gradle dosyasının ve modülün build.gradle dosyasının tüm bağımlılıkların aynı sürümlerini içerip içermediğini kontrol edin.
2. Projenizin compileSdkVersion , buildToolsVersion , minSdkVersion ve targetSdkVersion öğelerinin , projeye eklediğiniz modüllerde veya kitaplıklardakilerle eşleştiğinden emin olun .

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

}

Bu yardımcı olur umarım.


1

Bir Android Kütüphane Modülü ekledikten sonra bu hatayı alırsanız.
Sen kaldırmak basit tamir edebiliriz android:label="@string/app_name"dan AndroidManifest.xmlsenin içinde Android Kütüphane Modülü


1

Gradle konsolunuzu açın, sonra gradle'ın belirli bir satırı eklemenizi önerdiğini görürsünüz (Gibi: araçlar: replace = "android: allowBackup" veya araçlar: replace = "android: label" vb). Bu satırı etiketin altındaki manifest dosyanıza ekleyin ve derecelendirmeyi senkronize edin, hepsi bu.


1

Benim durumumda , Etkinlik etiketinin içine boş bir niyet filtresi bırakması oldu

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

            <intent-filter>

            </intent-filter>

    </activity> 

Yani onları kaldırmak sorunu çözdü.

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

0

Android Studio'ya yeni başlayan biri olarak, benim durumumda, mevcut bir projeyi Eclipse'den Android Studio'ya taşıdım ve Manifest.xml içinde Eclipse tarafından alınmamış bir etkinliğin yinelenen bir tanımı olduğunu gördüm. Gradle hatası.

Bunu Gradle Konsoluna (ekranın sağ alt köşesine) giderek buldum.


0

Refraktör (SHIFT + F6 ile Yeniden Adlandır) dosyalarımdaki bir alanın adı olduğunda iki kez benimle oldu ve her yerde değiştirmenizi istiyor ve dikkat etmeden her yerde adı değiştiriyoruz. Örneğin, Java sınıfınızda değişken adı "id" varsa ve bunu SHIFT + F6 ile yeniden adlandırdıysanız. Başka bir yerde kimliğini değiştireceğini soracak bir sonraki iletişim kutusuna dikkat etmezseniz ve tümünü işaretle seçeneğini işaretlerseniz, düzen dosyalarınızdaki tüm kimliği yeni değerden değiştirir.


0

Bu, mainifest.xml dosyasında herhangi bir etkinlik çağrısı iki kez tanımladığınızda çok basit bir hatadır.

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

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



//solution:use only one 

0

Bunu uygulama modülü derlemenizin sonuna koyun.

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'
        }
    }
}}

bundan


0

Phan Van Linh cevabını tamamlayın. Bu satırları sildim:

  android:icon="@mipmap/ic_launcher"
  android:label="name"

0

Yukarıda gösterildiği gibi Androidx'e geçin ve minimum sdk sürümünü 26'ya ayarlayın ... şüphesiz bu mükemmel çalışır


0

Aşağıdaki kesmek çalışır:

  1. xmlns:tools="http://schemas.android.com/tools"Manifest etiketine satır ekle
  2. tools:replace="android:icon,android:theme,android:allowBackup,label,name" Uygulama etiketine ekle


0

Benim durumumda jetbrains kütüphanesinden bazı ek açıklamalar kullanıyordum. Bu ek açıklamaları ve bağımlılıkları kaldırdım ve iyi çalıştı.

Bu yüzden lütfen android kod ve bağımlılıklarındaki kütüphaneleri dikkatlice kontrol edin.


0

Cihazınızda birden fazla manifestPlaceholderöğe kullanıyorsanızbuild.gradleDosyanızda , bunları ayrı öğeler yerine dizi öğeleri olarak eklemeniz gerekir.

Örneğin, bu bir derleme hatasına veya derleme hatasına neden olur: "java.lang.RuntimeException: Birden fazla hatayla bildirim birleştirme başarısız oldu":

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

Bu hatayı düzeltir:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}

0

Bunun nedeni, eski Destek Kitaplığı ile yeni Malzeme kitaplığını kullanmanızdır.

Sen göç zorunda android.supportiçin androidxkullanmak için com.google.android.material.

Android studio v 3.2 veya üstünü kullanıyorsanız,

refactor gidin ---> ANDROID X GÖÇ.

Projenizin bir yedeğini alın.


0

Sorunu bana neden olan FirebaseUI Libraryile birlikte kullanıyordum Facebook SDK Library.

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

Ve [buradan] [1] 'den bu sorundan kurtuldum.

İle latest updatearasında FirebaseUI kütüphanesinde , Facebook SDK'nın önceki sürümü de bunun bir parçasıdır.

Her iki kütüphaneyi de kullanıyorsanız , lütfen Facebook SDK Kütüphanesini kaldırın .

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

GÜNCELLEME

Dan Android Studio 3.0ve sonraki sürümleri, app.gradledosya kullanmak için gereklidir implementationveya apiyerine compileapp bağımlılıkları eklemek için.


0

CLIFFORD'un hatayı görmek için cevabını gördükten sonra, bu sorunu çözmeme yardımcı olan şey, amaç filtresi eylem etiketinde 'android: name' olarak 'android: name' olarak yeniden adlandırmaktı. Aynı çözümün başka birine yardım etmesi durumunda.

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.