83 votes

Échec de la résolution de : com.google.Android.gms:play-services dans IntelliJ Idea avec gradle

J'essaie d'ajouter les services de google play à mon projet libGDX dans IntelliJ Idea. J'ai suivi le guide d'installation ici : https://developers.google.com/Android/guides/setup

ce qui semble assez simple. J'ai juste ajouté ces lignes à mon build.gradle dans la section correspondante, de sorte que les choses ressemblent maintenant à :

project(":android") {
    apply plugin: "android"
    apply plugin: 'com.android.application'

    configurations { natives }

    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
        compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
        compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
        compile 'com.google.android.gms:play-services:11.2.0'
    }
}

J'essaie ensuite de synchroniser mon projet gradle dans Idea pour obtenir l'erreur "Failed to resolve".

Le guide d'installation dit également "Assurez-vous de mettre à jour ce numéro de version chaque fois que Google Play Services est mis à jour", mais le problème est qu'il semble presque impossible de trouver ce numéro de version : la version de mon SDK Google Play Services selon le gestionnaire Android SDK est "43", et jusqu'à présent, je n'ai pas été en mesure de corréler un tel "11.2.0" ou toute autre chaîne de version typique avec le numéro de version "43". Le guide d'installation ne dit rien à ce sujet.

Quoi qu'il en soit, j'ai essayé beaucoup de choses à partir de la pléthore de questions relatives à ce sujet, sans succès. Plus précisément, je dois préciser que j'ai bien mis à jour mon SDK Android et que je suis sûr que c'est celui qui est utilisé par Idea (je l'ai déjà vérifié trois fois...) :

Android SDK Manager Project Structure

J'utilise l'API niveau 26, mais de toute façon les autres définitions utilisent le même répertoire pour le SDK Android. De plus, je n'ai PAS d'autre SDK Android installé sur cet ordinateur portable, donc il n'y a aucun doute sur le fait que Idea utilise celui-là et seulement celui-là.

Toute idée est la bienvenue.

Merci d'avance !

2 votes

Je ne vois pas apply plugin: 'com.google.gms.google-services'

0 votes

Je ne le vois pas non plus dans le guide de configuration des services Google Play. D'où cela vient-il ?

0 votes

JFTR, remplacer le numéro de version par 11.0.0 au lieu de 11.2.0 semble faire l'affaire, mais je suis encore en train de faire des tests ici et je ne le publierai pas comme réponse avant d'en être sûr.

225voto

Mouss Points 2354

J'ai eu le problème quand j'ai mis jcenter() avant google() dans le build.gradle au niveau du projet. Lorsque j'ai changé l'ordre et mis google() avant jcenter() dans build.gradle le problème a disparu

Voici mon build.gradle final

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

1 votes

Ca a marché... Mais pourquoi ce problème est-il apparu en premier lieu ?

1 votes

@PaulMathew : si j'avais eu l'explication de ce problème/réparation, je l'aurais mise sur le post. J'ai "découvert" le correctif par hasard en me débattant avec ce problème et en testant de nombreuses manipulations.

1 votes

Quel genre de sorcellerie est-ce là ? Ça marche comme sur des roulettes. Peut-être que quelque chose ne va pas entre ces 2 dépôts... Encore un qui veut connaître l'explication.

85voto

Fran Points 631

Je viens de remplacer la version 11.2.0 par 11.0.0 et cela semble fonctionner correctement. Cela doit donc signifier que la version 11.2.0 n'était pas incluse dans le dernier SDK Android.

Ainsi, après avoir lutté avec toute la documentation éparpillée disponible, j'ai atteint ce document par pur hasard (je suppose qu'il n'est pas indexé assez haut par Google) : https://developers.google.com/Android/guides/releases

Je le cite :

Points forts de la version 11.2 des services Google Play. Les dépendances de Google Play sont désormais disponibles via maven.google.com.

Or, même si cela ne signifie pas nécessairement qu'ils ne sont plus disponibles avec le SDK téléchargé, il semble que ce soit effectivement le cas.

Quoi qu'il en soit, ajouter google() à mon build.gradle ne fonctionnait pas (not found, undefined, ou autre...), j'ai donc utilisé une approche différente que j'ai trouvée dans ce document référencé dans le précédent :

https://developer.Android.com/studio/build/dependencies.html#google-maven

J'ai modifié mon fichier build.gradle en ajoutant cette ligne à allprojects/repositories, comme dans :

allprojects {
...
    repositories {
...
        maven { url "https://maven.google.com/"}
    }
}

Et puis aussi dans la section Android dans le même fichier build.gradle :

project(":android") {
...
    dependencies {
...
        compile 'com.google.android.gms:play-services-ads:11.2.0'
    }
}

Ces deux lignes ont suffi pour que Gradle se synchronise sans problème. Je n'ai pas eu besoin d'ajouter d'autres plugins que ceux qui sont déjà ajoutés par défaut dans mon projet libGDX.

Après cela, j'ai eu quelques erreurs différentes, mais aucune concernant Gradle ou les dépendances. En bref, JFTR :

Tout d'abord, j'avais une version minimale de SdkVersion de 8. Résolu en l'augmentant à 14. Je pense que je pourrais vivre sans supporter tous ces appareils en dessous de 14.

Deuxièmement, j'ai eu des problèmes avec la limite supérieure des références dex. Je n'ai jamais été confronté à ce problème auparavant, mais peut-être avez-vous déjà remarqué la solution que j'ai utilisée : au lieu de compiler l'ensemble de 'com.google.Android.gms:play-services', j'ai utilisé uniquement 'com.google.Android.gms:play-services-ads', qui est l'API qui m'intéresse en ce moment. Pour les autres cas particuliers où une solution comme celle-ci ne serait pas utile, ce document pourrait fournir un meilleur aperçu : https://developer.Android.com/studio/build/multidex.html

Troisièmement, même après cela, j'ai eu ce problème de "jumbo" décrit et répondu ici : https://stackoverflow.com/a/26248495/1160360

Et c'est tout. A partir de maintenant, tout se construit et mon jeu montre enfin ces bannières Admob.

J'ai passé des heures à réfléchir à ce sujet, ce qui me fait me demander si tous ces systèmes d'automatisation des bâtiments que nous utilisons ces derniers temps valent la charge supplémentaire qu'ils ajoutent.

La première fois que j'ai dû ajouter Admob à une application, il y a environ cinq ans, il m'a suffi de télécharger un fichier .jar et de le placer dans un répertoire de mon projet. C'était assez évident et l'ensemble du processus, de la recherche sur Google de "comment configurer Admob dans mon projet Android" à l'affichage d'une bannière Admob dans mon application, ne m'a pris que quelques minutes. Je vais laisser cela ici, car ce n'est pas l'endroit pour ce genre de débat.

Néanmoins, j'espère que ma propre expérience sera utile à quelqu'un d'autre plus loin.

6 votes

J'ai le sentiment que cette réponse va être très visitée au cours des prochaines semaines.

2 votes

Réponse fantastique. Merci.

1 votes

Merci @Fran... vous êtes le sauveur des délais.

17voto

zsubzwary Points 401

Ajoutez ceci à votre projet build.gradle fichier :

repositories {
    maven {
        url "https://maven.google.com"
    }
}

Cela a marché pour moi

0 votes

Veuillez lire les réponses précédentes avant de publier la vôtre.

0 votes

@Fran Ohooo Désolé !

14voto

AlexioVay Points 944

J'ai essayé de résoudre ce problème pendant des heures, car je n'ai pas utilisé Android Studio depuis un certain temps et je n'étais pas au courant des mises à jour.

Il est important que google() est le premier élément qui se trouve dans repositories comme ça :

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

En quelque sorte google() était le deuxième élément après jcenter() donc tout était en désordre et ne fonctionnait pas. Peut-être que cela aidera quelqu'un.

11voto

Aryan Points 15417

Le SDK des services Google Play est à l'intérieur Google Repository .

  1. Démarrez Intellij IDEA.

  2. Dans le menu Outils, cliquez sur Android > SDK Manager.

  3. Mettez à jour le gestionnaire SDK Android : cliquez sur Outils SDK , développer Référentiel de soutien , sélectionnez Référentiel Google puis cliquez sur OK.

La version actuelle de Google Repository est 57.

Après la mise à jour, synchronisez votre projet.

EDIT

De la version 11.2.0 Nous devons utiliser le repo google maven, donc ajoutez le lien vers le repo google maven dans la balise repositories. Vérifiez la note de publication de ici .

allprojects {
     ..
     repositories {
     ...
        maven {
            url 'https://maven.google.com'
            // Alternative URL is 'https://dl.google.com/dl/android/maven2/'
        }
     }
}

0 votes

Google Repository est déjà installé. Je vais ajouter une capture d'écran avec cela aussi.

0 votes

Peut-être que vous pointez le mauvais SDK. Vérifiez dans File>ProjectStructure et assurez-vous que vous avez le bon SDK.

0 votes

Je me cite à partir de la question : "Je dois préciser que j'ai bien mis à jour mon SDK Android et que je suis sûr que c'est celui qui est utilisé par Idea (je l'ai déjà vérifié trois fois...)". Je vais ajouter une autre capture d'écran pour éviter toute confusion supplémentaire, et pour que personne n'ait à me croire sur parole non plus...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X