web-dev-qa-db-fra.com

Android Assistance technique 46.0.0 avec Android Studio 2.3

J'ai mis à jour aujourd'hui mon référentiel de support technique à 46.0.0 lorsque la notification Android Studio est apparue.

Je vais l'erreur ci-dessous:

Erreur: L'exécution a échoué pour la tâche ': app: processDevDebugManifest'.

La fusion du manifeste a échoué: L'attribut meta-data#Android.support.VERSION@value value = (25.3.0) from [com.Android.support:support-v13:25.3.0] AndroidManifest.xml: 27: 9-31 est également présent sur [com.Android.support:preference-v7:26.0.0-alpha1] AndroidManifest.xml: 24: 9-38 valeur = (26.0.0-alpha1). Suggestion: ajoutez 'tools: replace = "Android: value"' à l'élément sur AndroidManifest.xml: 25: 5-27: 34 pour remplacer.

J'ai mis à jour toutes mes dépendances pour utiliser Revision 26.0.0 Alpha 1 à partir de 25.3.0, mais il s'avère que j'ai besoin de passer le compileSdk de 25 à 26. Vous ne pouvez pas le faire si vous avez AS 2.3, vous devez obtenir le version instable alpha/beta de canary.

Ce lien affiche les modifications: https://developer.Android.com/topic/libraries/support-library/revisions.html#26-0-0-alpha1

Et concernant la migration vers le nouveau Android O, voici le lien: https://developer.Android.com/preview/migration.html

Il semble que l'utilisation de la version stable d'AS ne fonctionnera pas avec le nouveau référentiel.

Comment puis-je revenir à la Android Studio Repository Version 45 au lieu de la nouvelle 46?

** Mise à jour: le manifeste fusionné indique que l'un des manifestes de bibliothèque générés contient

<meta-data
        Android:name="Android.support.VERSION"
        Android:value="26.0.0-alpha1" />

Mais comme c'est un fichier généré, l'édition est inutile, c'est pourquoi, pour l'instant, je m'en tiendrai à la version 45 jusqu'à ce que le nouvel AS soit stable.

53
RJFares

Quel est le problème

Certaines bibliothèques dépendent de la version "X ou plus récente" de Android bibliothèques de prise en charge afin que la résolution de dépendance Gradle saisisse la version la plus récente disponible en ignorant votre version actuelle spécifiée dans votre bloc dependencies.

Ce n'est pas ce que tu veux. Vous voulez que toutes les bibliothèques de support avec la même version et la version majeure doivent correspondre à la version du SDK de compilation.

Quelle est la solution

Heureusement, vous pouvez forcer une version spécifique de la bibliothèque de support.

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') {
            // Skip multidex because it follows a different versioning pattern.
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}

Bien sûr, remplacez la version par ce que vous utilisez.

Les valeurs de version pour les bibliothèques de support dans le bloc dependecies ne sont plus pertinentes.

Si vous avez des doutes

Ceci est un méthode bien documentée et ça marche.

Que pouvez-vous faire pour aider

Trouver les bibliothèques qui dépendent d'une plage des versions de bibliothèques de support

gradlew dependencies --configuration compile -p <module name> | grep ,

et laissez les auteurs de ces bibliothèques savoir qu'ils doivent dépendre de manière transitoire des bibliothèques de support les plus anciennes qu'ils peuvent utiliser avec .

Cela vise à éviter complètement le problème.

162
Eugen Pechanec

étape 1

Pour échapper à la vérification de Gradle à la recherche de versions com.Android.support incompatibles, une solution rapide consiste à ajouter le code suivant dans le module d'application build.gradle.

dependencies {
    //noinspection GradleCompatible
}

Ceci est une solution temporaire qui ne résout pas les problèmes sous-jacents! Cela a permis de continuer à développer votre application avec un minimum de modifications.

étape 2

Ajoutez ceci au fichier de manifeste principal AndroidManifest.xml.

<meta-data
    tools:replace="Android:value"
    Android:name="Android.support.VERSION"
    Android:value="25.3.1" />

Cette entrée sera supprimée lorsque l'une des prochaines mises à jour du référentiel de support sera disponible.

étape

Ajoutez le code suivant à la fin du fichier du module d'application build.gradle:

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

NB: Il est recommandé de s'assurer que vos bibliothèques Gradle sont mises à jour et compatibles pour éviter les erreurs d'exécution.

3
Hamza Rashid

Leur est une solution pour y remédier:

  1. Déplacer vers la vue Explorateur de projet
  2. Atteindre au fond leurs bibliothèques externes
  3. Voir quelle bibliothèque utilise 26.0.0-alpha6
  4. Maintenant, écrivez ceci dans app.gradle sur la base de la bibliothèque à l'étape 3

Ex. dans mon cas:

configurations.all {
    resolutionStrategy.force 'com.Android.support:appcompat-v7:25.3.0'
    resolutionStrategy.force 'com.Android.support:support-v13:25.3.0'
}

Cela forcera le projet à utiliser la bibliothèque mentionnée.

2
Rajesh Tiwari

Je pense que la meilleure solution consiste simplement à restaurer la Android Bibliothèque de support en version 45.

Pour ce faire, ouvrez ce lien (changez la version en fonction de vos besoins)

https://dl-ssl.google.com/Android/repository/Android_m2repository_r45.Zip

Une fois téléchargé, décompressez et copiez m2repository dans Android-sdk-root-folder\extras\Android. Assurez-vous de supprimer le répertoire m2 existant avant de décompresser pour éviter les problèmes.

1
Zoran P

Ceci est une solution temporaire qui ne résout pas les problèmes sous-jacents! Cela m'a aidé à continuer à développer des logiciels avec un minimum de modifications. Ajoutez simplement ceci au manifeste principal:

<meta-data
    tools:replace="Android:value"
    Android:name="Android.support.VERSION"
    Android:value="25.3.0" />

Si possible, cette entrée pourra être supprimée à nouveau avec l'une des prochaines mises à jour du référentiel de support.

SOLUTION: La solution marquée a fonctionné pour moi en ajoutant les éléments suivants à 4 de mes 10 fichiers build.gradle:

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

pour moi le problème était que les versions n'étaient pas les mêmes ici

implementation 'com.Android.support:appcompat-v7:**26.0.0-beta1**'
implementation 'com.Android.support:support-v4:**26.0.0-beta1**'
implementation 'com.Android.support:design:**26.0.0-beta1**'

et la vue de la carte était

compile 'com.Android.support:cardview-v7:26.1.0'

donc j'ai changé les bibliothèques de versions à ..

implementation 'com.Android.support:appcompat-v7:26.1.0'
implementation 'com.Android.support:support-v4:26.1.0'
implementation 'com.Android.support:design:26.1.0'

espérons que cette aide, bonne chance

0
Ali Masarra