Android: Gradle'ın yeni bir sürümüne güncelledikten sonra "Manifest birleşme başarısız" hatası alınıyor


108

Projeyi gradle'ın yeni sürümüne güncellemeyi kabul ettikten sonra şu hatayı alıyorum:

Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.0-alpha1) from [com.android.support:cardview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38
    is also present at [com.android.support:design:25.3.1] AndroidManifest.xml:27:9-31 value=(25.3.1).
    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:22:5-24:41 to override.

Bu sorunu nasıl çözebilirim? Bu benim uygulamamın build.gradledosyası:

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.sample.bookReader"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    ...
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:+'
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile 'com.android.support:cardview-v7:26.0.0-alpha1'
    compile 'com.android.support:design:25+'
    compile 'com.jakewharton:butterknife:8.2.1'
    apt 'com.jakewharton:butterknife-compiler:8.2.1'
    ...
}

Ve bu projenin build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://www.jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Gradle sürümünü güncelleyerek yapılan değişiklikleri korurken bu hatayı nasıl düzeltirim?

Yanıtlar:


212

Bunu uygulama modülü build.gradle'ın 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'
            }
        }
    }
}

Eugen Pechanec'e Kredi


1
İyiydi, bu benim nativescript app oluştururken benim için çalıştı çözüm
ded

7
Bu benim için de işe yaradı, teşekkürler @Vishal. Burada neler olduğunu açıklayabilir misiniz :)
Ismail Iqbal

3
Destek kitaplığının en son sürümünü kullandığınızdan emin olun, bu sürümü yazarken bu olan details.useVersion '27.0.0'. Aksi takdirde, yedek görünüm dökümünün kaldırılması gibi en son destek özelliklerine sahip olmayacaksınız.
Drew Szurko

9
Lütfen bununla ilgili biraz açıklama ekleyin. Çalışıyor ancak güncellenmiş sürüm ve özellikler için
çalışacak mı

1
Başka biri 'Symbol DependencyResolveDetails çözülemiyor' hatasını
aldıysa

90

Android Destek Kitaplıklarının birden çok sürümünü kullanıyorsunuz:

compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.android.support:cardview-v7:26.0.0-alpha1'
compile 'com.android.support:design:25+'

İkisi 26.0.0-alpha1ve biri kullanıyor 25+.

Somut bir versiyon seçin ve üçü için de kullanın. Siz compileSdkVersionolmadığından O, 25.3.1bu kitaplıkların üçü için de kullanın , sonuçta:

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:design:25.3.1'

kullanarak 25.3.1destek kütüphaneleri ya için buildToolsVersion? için buildToolsVersioni hata alıyorumPackage Unavailable
smokin-dünyayı

@ tux-world: "Destek kitaplıkları veya buildToolsVersion için 25.3.1 mi kullanıyorsunuz?" - destek kitaplıkları için. Güncellenen cevabıma bakın.
CommonsWare

1
Bunu test ediyorum ama sorunum çözülmüyor, hangi sürümde olmalı compileSdkVersion?
tux-world

bu mesajı alıyorumAll com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.0.0-alpha1, 25.3.1. Examples include com.android.support:support-compat:26.0.0-alpha1 and com.android.support:animated-vector-drawable:25.3.1
tux-world

1
@ tux-world: Artık hiçbir build.gradleşeye atıfta bulunmamalı 26.0.0-alpha1. Projenizi temizlemeyi deneyin (Oluştur> Temiz Proje) ve sorunun çözülüp çözülmediğine bakın. Değilse, com.android.support:support-compat:26.0.0-alpha1bir Gradle bağımlılık raporu çalıştırarak olduğu gibi, neyin çekildiğini izlemeniz gerekecektir .
CommonsWare

18

Tüm destek kitaplığı sürümlerini 25.3.1 olarak değiştirdim ve harika çalıştım:

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'

Ayrıca compileSdkVersion ve targetSdkVersion'ı 25 olarak değiştirmeniz gerekir :

compileSdkVersion 25
targetSdkVersion 25

Katılıyorum, yukarıdaki yanıtlar iyi, ancak hatanın nedeni, gradle dosyanızda farklı sürümler belirlemenizdir. Sadece veya 26 veya 25 desteği kullanın
Andrew V.

Benim durumum yüzünden minSdkVersion.
Meyve


6

Kitaplıkların farklı sürümlerini kullanmıyorum ve aynı hatayı aldım, buildToolsVersionAS RC 1'de kaldırıldıktan sonra oldu , ancak tools:node="replace" hile eklendi, bunu manifest.xml <application ..../>bloğunuza ekleyin :

<meta-data 
 tools:node="replace"
 android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version" />

1
bunu yaparken herhangi bir yan etki var mı? Yeni Android Studio 3 ile hala sizin için çalışıyor mu?
Sakiboy

5

Bana da aynı şey oluyor. Gradle -> Build Gradle -> bölümüne bakın ve hem "uygulama uyumluluğu" hem de "destek tasarımı" satırlarında uyumluluğun eşleştiğinden emin olun, aynı sürüme sahip olmaları gerekir.

Daha sonra sorunsuz bir şekilde başlayacağından çok emin olmak için, Dosya -> Proje Yapısı -> uygulamasına gidin ve derleme Araçları sürümünün uygunluğunu kontrol edin, destek derleme satırınızla aynı olmalıdır, her ihtimale karşı Hedef SDK sürümü 25 olarak Flavours sekmesinde.

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-
   core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    *compile 'com.android.support:appcompat-v7:25.3.1'*
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    *compile 'com.android.support:design:25.3.1'*
}

Yaptığım ve çalıştığım buydu. İyi şanslar!


3
  • Destek kitaplığınızı son sürüme güncelleyin

  • Açın Manifest Fileve Manifest Dosyasına ekleyin

  • <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>

  • Ve geri dönüşüm için ekleyin >> incele build.gradle Module app:

  • compile 'com.android.support:recyclerview-v7:25.3.1'

  • Ve tıklayın: Sync Now


3

Bunu, build.gradle uygulama modülümün sonuna koyarak çözüyorum:

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

Gerçekten günümü yaptın.
Hamed Jaliliani

2

Cevap kabul edildi ancak yapabileceğiniz bir şey de kütüphaneleri proje yapınızdan tanımlamaktır. Yapabilecekleriniz:

  1. Sorunun geldiği tüm kütüphaneleri yorumlayın
  2. Proje yapınıza gidin
  3. Oradan kitaplıklar ekleyin, otomatik olarak eşitlenir ve sorun ortadan kalkar.
  4. Sorun devam ederse, yukarıdaki 3 adımı izledikten sonra hata günlüğünden hangi kitaplığın talep ettiğine bakmayı deneyin.

Önceden tanımlanmış kitaplıklar şu anda kapalı olduğu için şimdi appcompat'ı alıyorum: 26.0.0-alpha1 , yeni bir şey eklediğinizde ve onu eski şeylerle çözmeye çalıştığınızda şeylerin eski sürümünü kullanıyor. Bunu proje yapınızdan eklediğinizde, aynı şeyi ekleyecektir, ancak onu çözmek için yeni şeyler ekleyecektir. Sorununuz çözülecektir.


0

Benim için hata şuydu:

Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.2) from [com.android.support:percent:26.0.2] AndroidManifest.xml:25:13-35
    is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0).
    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.

Benim için çözüm, proje Gradle dosyamdaydı, com.google.gms: google-services sürümümü çarpmam gerekiyordu.

3.1.1 sürümünü kullanıyordum:

classpath 'com.google.gms:google-services:3.1.1

Ve 3.2.1 sürümüne çarptıktan sonra hata çözüldü:

classpath 'com.google.gms:google-services:3.2.1

Hatayı gördüğümde tüm kitaplıklarımı tüm destek kitaplıklarının v27.1.1'i ve tüm Firebase kitaplıklarının v15.0.0'ı da dahil olmak üzere en son sürüme yükselttim.


0

Wear OS için eski android projesini güncelledim. Projeyi oluştururken bu hata mesajını aldım:

Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.2) from [com.android.support:percent:26.0.2] AndroidManifest.xml:25:13-35
is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.

Wear.gradle for Wear uygulamam şu bağımlılıkları içerir:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.support:wearable:2.4.0'
implementation 'com.google.android.gms:play-services-wearable:16.0.1'
compileOnly 'com.google.android.wearable:wearable:2.4.0'}

ÇÖZÜM :

implementation 'com.android.support:support-v4:28.0.0'Bağımlılıklara eklemek sorunumu çözdü.


0

Meta verileri silmeyi ve projeyi yeniden oluşturmayı deneyin.


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.