web-dev-qa-db-fra.com

Android: erreur "La fusion du manifeste a échoué" après la mise à jour vers une nouvelle version de Gradle

Après avoir accepté de mettre à jour le projet vers la nouvelle version de Gradle, le message d'erreur suivant s'affiche:

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.

Comment puis-je résoudre ce problème? Voici le fichier build.gradle de mon application:

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

Et voici le build.gradle du projet:

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
}

Comment corriger cette erreur tout en conservant les modifications apportées en mettant à jour la version de Gradle?

97
tux-world

Mettez ceci à la fin de votre module d'application 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 '25.3.0'
            }
        }
    }
}
188
Vishal

Vous utilisez plusieurs versions des bibliothèques de support 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+'

Deux sont 26.0.0-alpha1, et un utilise 25+.

Choisissez une version concrète et utilisez-la pour les trois. Puisque votre compileSdkVersion n'est pas O, utilisez 25.3.1 pour ces trois bibliothèques, ce qui donne:

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'
84
CommonsWare

J'ai changé toutes les versions de la bibliothèque de support en 25.3.1 et j'ai travaillé comme un charme:

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

Vous devez également modifier compileSdkVersion et targetSdkVersion à 25:

compileSdkVersion 25
targetSdkVersion 25
14
Darush

Vous pouvez trouver quelle bibliothèque dépend d'une version incorrecte de la bibliothèque de support et l'exclure de la manière suivante:

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

stripe-Android dans mon cas.

8
paynd

Je n'utilise pas différentes versions de bibliothèques et j'ai la même erreur, c'est ce qui s'est passé après la suppression de buildToolsVersion dans AS RC 1, mais l'ajout de tools:node="replace" a tout mis en œuvre. Ajoutez simplement ceci dans votre fichier manifest.xml à l'intérieur du bloc <application ..../>:

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

Cela m'arrive la même chose. Voir Gradile -> Construire Gradle -> et assurez-vous que la compatibilité correspond aux deux lignes de compilation "app compat" et "support design", elles doivent avoir la même version. 

Ensuite, pour être absolument sûr qu'il se lancera sans problème, allez dans Fichier -> Structure du projet -> application et vérifiez la propriété de la version des outils de compilation, elle devrait être identique à votre ligne de compilation de support, juste au cas où je m la version cible du SDK ainsi que sur l'onglet 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'*
}

C'est ce que j'ai fait et travaillé. Bonne chance!

5
  • Mettez à jour votre bibliothèque de support avec la dernière version 

  • Ouvrez Manifest File et ajoutez-le dans le fichier manifeste 

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

  • Et ajoutez pour recyclage dans >> build.gradle Module app:

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

  • Et cliquez sur: Sync Now 

3
AmmAr Yasser

Je résous cela en mettant ceci à la fin de mon module d'application 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'
        }
    }
  }
}
2
Maryam Azhdari

La réponse est acceptée, mais vous pouvez également définir les bibliothèques à partir de la structure de votre projet. Ce que vous pouvez faire c'est: 

  1. Commenter toutes les bibliothèques dans lesquelles le problème vient 
  2. Allez à la structure de votre projet 
  3. Ajoutez des bibliothèques à partir de là, la synchronisation se fera automatiquement et le problème disparaîtra.
  4. Si le problème persiste, essayez d’observer dans le journal des erreurs que la bibliothèque qu’elle exige après avoir suivi les 3 étapes ci-dessus.

Ce qui se passe, c'est que les bibliothèques prédéfinies sont désactivées maintenant. Je prends le appcompat: 26.0.0-alpha1 il utilise l'ancienne version des choses lorsque vous ajoutez quelque chose de nouveau et tente de le résoudre avec les anciens fichiers. Lorsque vous l'ajoutez à partir de la structure de votre projet, il ajoute la même chose, mais avec les nouveaux éléments pour le résoudre. Votre problème serait résolu.

2
Alok

J'ai mis à jour l'ancien projet Android pour Wear OS. J'ai reçu ce message d'erreur pendant la construction du projet:

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.

Mon application build.gradle for Wear contient les dépendances suivantes:

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

SOLUTION:

Ajouter implementation 'com.Android.support:support-v4:28.0.0' dans les dépendances a résolu mon problème.

0
Malder

Essayez de supprimer les métadonnées et de reconstruire le projet.

0
Anga Koko

L'erreur pour moi était:

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.

La solution pour moi était dans mon fichier de projet Gradle dont j'avais besoin pour modifier ma version de com.google.gms: google-services.

J'utilisais la version 3.1.1:

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

Et l'erreur résolue après que je l'aie remplacé par la version 3.2.1:

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

Je venais de mettre à niveau toutes mes bibliothèques vers la dernière version, y compris la v27.1.1 de toutes les bibliothèques de support et la v15.0.0 de toutes les bibliothèques de Firebase lorsque j'ai vu l'erreur.

0
Lucy