Android: Obținerea erorii „Manifest merger failed” după actualizarea la o nouă versiune de gradle (Programare, Android)

tux-world a intrebat.

După ce am acceptat să actualizez proiectul la o nouă versiune de gradle, primesc această eroare:

Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed : Attribute meta-data#[email protected] 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.

Cum pot să rezolv această problemă?Aceasta este aplicația mea. build.gradle de la aplicația mea:

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

Și acesta este fișierul proiectului 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
}

Cum pot rezolva această eroare păstrând în același timp modificările făcute prin actualizarea versiunii gradle?

13 răspunsuri
Vishal

Puneți acest lucru la sfârșitul modulului build.gradle al aplicației dvs:

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

Credit pentru Eugen Pechanec

Comentarii

  • Frumos, aceasta este soluția care a funcționat pentru mine atunci când am construit aplicația mea nativescript –  > Por ded.
  • Aceasta a funcționat și pentru mine, mulțumesc @Vishal. Poți să explici ce se întâmplă aici 🙂 –  > Por Ismail Iqbal.
  • Asigurați-vă că utilizați cea mai recentă versiune a bibliotecii de suport, care la momentul scrierii acestui articol este details.useVersion '27.0.0'. În caz contrar, nu veți avea cele mai recente caracteristici de asistență, cum ar fi eliminarea redundanței de turnare a vederii. –  > Por Drew Szurko.
  • Vă rugăm să adăugați puțină descriere despre aceasta. Funcționează, dar va funcționa pentru versiunea și caracteristicile actualizate –  > Por Ghanshyam Nayma.
  • Dacă a mai avut cineva eroarea „Cannot resolve Symbol DependencyResolveDetails”, am rezolvat-o eliminând „DependencyResolveDetails” (am citit undeva pe StackOverflow despre faptul că nu are nevoie de el, deoarece este Groovy, deci poate rezolva dinamic) –  > Por knjk04.
CommonsWare

Folosiți mai multe versiuni ale bibliotecilor de asistență Android:

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

Două sunt 26.0.0-alpha1, iar una folosește 25+.

Alegeți o versiune concretă și folosiți-o pentru toate cele trei. Deoarece compileSdkVersion nu este O, utilizați 25.3.1 pentru toate aceste trei biblioteci, rezultând :

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'

Comentarii

  • utilizând 25.3.1 pentru bibliotecile de suport sau buildToolsVersion? pentru buildToolsVersion primesc o eroare Package Unavailable –  > Por tux-world.
  • @tux-world: „folosind 25.3.1 pentru bibliotecile de suport sau buildToolsVersion?” — pentru bibliotecile de suport. Consultați răspunsul meu actualizat. –  > Por CommonsWare.
  • am testat asta, dar problema mea nu se rezolvă, care versiune trebuie să fie pe compileSdkVersion ? –  > Por tux-world.
  • primesc acest mesaj All 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 –  > Por tux-world.
  • @tux-world: Nimic în fișierul dvs. build.gradle ar trebui să se refere la 26.0.0-alpha1 mai mult. Încercați să vă curățați proiectul (Build > Clean Project) și vedeți dacă problema dispare. În caz contrar, va trebui să depistați ce atrage în com.android.support:support-compat:26.0.0-alpha1, cum ar fi prin rularea unui raport de dependență Gradle. –  > Por CommonsWare.
Darush

Am schimbat toate versiunile de bibliotecă de suport la 25.3.1 și a funcționat ca prin minune:

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

De asemenea, trebuie să schimbați compileSdkVersion și targetSdkVersion la 25:

compileSdkVersion 25
targetSdkVersion 25

Comentarii

  • de acord, răspunsurile de mai sus sunt bune, dar motivul erorii este că ați setat versiuni diferite în fișierul gradle. Folosiți doar suportul 26 sau 25 –  > Por Andrew V..
  • În cazul meu este din cauza minSdkVersion. –  > Por Fructe.
paynd

Puteți afla ce bibliotecă depinde de o versiune greșită a bibliotecii de suport și o puteți exclude astfel:

compile ('com.stripe:stripe-android:5.1.1') {
    exclude group: 'com.android.support'
  }

stripe-android în cazul meu.

Comentarii

  • Cum puteți afla? –  > Por Zapnologica.
  • @Zapnologica încercați să listați dependențele de sarcini gradle, ca stackoverflow.com/questions/21645071/… -…  > Por paynd.
user6490462

Nu folosesc versiuni diferite de biblioteci și am primit aceeași eroare, s-a întâmplat după ce am eliminat buildToolsVersion în AS RC 1, dar adăugarea tools:node="replace" a făcut truc, doar adăugați acest lucru în manifest.xml în interiorul dvs. <application ..../> bloc:

<meta-data 
 tools_node="replace"
 android_name="com.google.android.gms.version"
 android_value="@integer/google_play_services_version" />

Comentarii

  • există vreun efect secundar atunci când faceți acest lucru? Mai funcționează pentru tine cu noul Android Studio 3? –  > Por Sakiboy.
Brenda Yanela Conzi

Mi s-a întâmplat același lucru. Vedeți pe Gradle -> Build Gradle -> și asigurați-vă că compatibilitatea se potrivește în ambele linii de compilare „app compat” și „support design”, acestea ar trebui să aibă aceeași versiune.

Apoi, pentru a fi foarte sigur, că se va lansa fără probleme, mergeți la File -> Project Structure ->app și verificați în fila propertie versiunea build Tools, ar trebui să fie aceeași cu linia de compilare support, pentru orice eventualitate, am pus și versiunea SDK țintă ca fiind 25 în fila Flavors.

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

Asta am făcut eu și a funcționat. Mult noroc!

AmmAr Yasser
  • Actualizați biblioteca de suport la ultima versiune

  • Deschideți Manifest File , și adăugați-o în fișierul Manifest

  • <uses-sdk tools_overrideLibrary="android.support.v17.leanback"/>

  • Și adăugați pentru recyclerview în >> build.gradle Module app :

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

  • Și faceți clic pe : Sync Now

Maryam Azhdari

Am rezolvat asta cu punerea acestui lucru la sfârșitul modulului meu de aplicație build.gradle:

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

Comentarii

  • Chiar mi-ai făcut ziua mai bună. –  > Por Hamed Jaliliani.
Alok

Răspunsul este acceptat, dar un lucru pe care l-ați putea face, de asemenea, este să definiți bibliotecile din structura proiectului dvs. Ceea ce puteți face este :

  1. Comentați toate bibliotecile în care apare problema
  2. Accesați structura proiectului dvs.
  3. Adăugați bibliotecile de acolo și se va sincroniza automat și problema dispare.
  4. Dacă problema persistă, încercați să căutați în jurnalul de erori ce bibliotecă este solicitată după ce ați urmat toți cei 3 pași de mai sus.

Ceea ce se întâmplă este că bibliotecile predefinite sunt dezactivate acum, acum iau appcompat:26.0.0-alpha1 utilizează versiunea mai veche a lucrurilor atunci când adăugați ceva nou și încearcă să rezolve problema cu lucrurile vechi. Atunci când adăugați un lucru din structura proiectului, acesta va adăuga același lucru, dar cu noile elemente pentru a-l rezolva. Problema dvs. va fi rezolvată.

Lucy

Eroarea pentru mine a fost:

Manifest merger failed : Attribute meta-data#[email protected] 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.

Soluția pentru mine a fost că în fișierul Gradle al proiectului meu trebuia să măresc versiunea com.google.gms:google-services.

Foloseam versiunea 3.1.1.1:

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

Și eroarea s-a rezolvat după ce am trecut la versiunea 3.2.1:

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

Tocmai actualizasem toate bibliotecile mele la cea mai recentă versiune, inclusiv v27.1.1 a tuturor bibliotecilor de suport și v15.0.0 a tuturor bibliotecilor Firebase, când am văzut eroarea.

Kiryl Belasheuski

Am actualizat vechiul proiect android pentru Wear OS. Am primit acest mesaj de eroare în timp ce construiesc proiectul:

Manifest merger failed : Attribute meta-data#[email protected] 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.

My build.gradle pentru aplicația Wear conține aceste dependențe:

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

SOLUȚIE:

Adăugarea implementation 'com.android.support:support-v4:28.0.0' în dependențe mi-a rezolvat problema.

Anga

Încercați să ștergeți datele meta și reconstruiți proiectul.

Pong Petrung

încercați să citiți linkul următor

Eroare:Execuția a eșuat pentru sarcina ‘:app:processDevDebugManifest’. Fuziunea manifestului a eșuat : Atributul meta-data#[email protected] value=(25.3.0) then usd VERSION 26.0.0

: https://medium.com/@PongPloyAppDev/error-execution-failed-for-task-app-processdevdebugmanifest-48576be751

Comentarii

  • huh? Ce încerci să spui? Cum te ajută asta? –  > Por Sakiboy.

Tags: