web-dev-qa-db-fra.com

Impossible de résoudre: com.google.Android.gms: play-services dans IntelliJ Idea with gradle

J'essaie d'ajouter des services 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. Je viens d'ajouter ces lignes à mon build.gradle dans la section correspondante, ainsi les choses se présentent 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'
    }
}

Ensuite, j'essaie de synchroniser mon projet Gradle dans Idea pour obtenir l'erreur "Echec de la résolution".

Le guide d'installation indique également "Assurez-vous de mettre à jour ce numéro de version à chaque mise à jour des services Google Play", mais le problème est qu'il semble presque impossible de trouver ce numéro de version: ma version du SDK des services Google Play selon le SDK Android manager est "43", et jusqu'à présent, je n'ai pas pu mettre en corrélation un tel "11.2.0" ou une chaîne de version typique avec le numéro de version "43". Non pas que le guide d'installation ne dit rien à ce sujet.

Quoi qu’il en soit, j’ai essayé de nombreuses choses parmi la pléthore de questions liées à cela en vain. Plus précisément, je dois signaler que mon SDK Android est correctement mis à jour et que je suis certain que c'est celui-ci qui est utilisé par Idea (j'ai déjà vérifié trois fois cela ...):

 Android SDK Manager  Project Structure

J'utilise l'API de 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 AUCUN autre SDK Android installé sur cet ordinateur portable, il n'y a donc aucun doute sur l'idée qu'Idea utilise celui-ci et celui-là seulement. 

Toutes les idées sont plus que bienvenues.

Merci d'avance!

57
Fran Marzoa

Je viens de remplacer la version 11.2.0 par la version 11.0.0, puis cela a semblé bien fonctionner. Cela signifie donc que la version 11.2.0 n'était pas incluse dans le dernier SDK Android. 

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

Je cite à partir de là:

Faits saillants de la version 11.2 des services Google Play. Jeu de Google les dépendances de services sont maintenant disponibles via maven.google.com

Maintenant, 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 réellement le cas.

Quoi qu'il en soit, l'ajout de google () à mon build.gradle ne fonctionnait pas (non trouvé, non défini, etc.), j'ai donc utilisé une approche différente de celle que j'ai trouvée dans ce document:

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

J'ai modifié mon fichier build.gradle en ajoutant cette ligne à tous les projets/référentiels, 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 suffisaient à synchroniser Gradle sans problèmes. Je n'ai pas eu besoin d'ajouter d'autres plugins que ceux déjà ajoutés par défaut à mon projet libGDX.

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

Tout d’abord, j’avais une minSdkVersion de 8. Résolu en l’élevant à 14. Je pense pouvoir vivre sans prendre en charge tous les appareils de moins de 14 ans. 

Deuxièmement, j'ai eu des problèmes avec la limite supérieure de références dex. Je n'ai jamais rencontré ce problème auparavant, mais vous avez peut-être déjà remarqué la solution que j'ai utilisée: au lieu de compiler l'intégralité de 'com.google.Android.gms: play-services', je n'ai utilisé que 'com.google.Android.gms. : play-services-ads ', c'est l'API qui m'intéresse actuellement. Pour les autres cas particuliers dans lesquels une solution de ce type pourrait ne pas être utile, ce document pourrait fournir des informations plus précises: https://developer.Android.com/studio/build/multidex.html

Troisièmement, même après cela, le problème "jumbo" a été décrit et résolu ici: https://stackoverflow.com/a/26248495/1160360

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

Cela fait des heures que je réfléchis, ce qui me fait me demander si tous ces systèmes d’automatisation que nous utilisons récemment valent la charge supplémentaire qu’ils ajoutent. 

Je veux dire, la première fois que j'ai dû ajouter Admob à une application il y a cinq ans environ, je devais simplement télécharger un fichier .jar et le placer dans un répertoire de mon projet. C'était assez évident et tout le processus, de googler "comment installer Admob dans mon projet Android" pour que mon application affiche une bannière Admob ne m'a pris que quelques minutes. Je vais le laisser 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.

75
Fran Marzoa

J'ai eu le problème lorsque j'ai mis jcenter() avant google() dans le fichier build.gradle du projet. Quand 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
}
208
Mouss

Ajoutez ceci à votre fichier build.gradle au niveau du projet:

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

Ça a fonctionné pour moi

14
Zakawat

J'ai essayé de résoudre ce problème pendant des heures après ne pas avoir utilisé Android Studio et ne pas être au courant des mises à jour.

Il est important que google() soit le premier élément figurant dans repositories comme ceci:

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

D'une manière ou d'une autre, google() était le deuxième élément après jcenter(), donc tout était en désordre et ne fonctionnait pas. Peut-être que cela aide quelqu'un.

11
AlexioVay

Le SDK des services Google Play se trouve à l'intérieur de Google Repository.

  1. Démarrez Intellij IDEA.

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

  3. Mettez à jour Android SDK Manager: cliquez sur Outils SDK, développez Référentiel de support, sélectionnez Référentiel Google, puis cliquez sur OK.

La version actuelle du référentiel Google est 57.

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

MODIFIER

À partir de la version 11.2.0, nous devons utiliser le référentiel Google Maven afin d'ajouter le lien du référentiel Google Maven dans la balise référentiels. Vérifiez la note de version de ici .

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

Une réponse plus à jour:

allprojects {
    repositories {
        google() // add this
    }
}

Et n'oubliez pas de mettre à jour gradle à 4.1+ (dans gradle-wrapper.properties):

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.Zip

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

6
Noureddine AMRI

J'ai trouvé la solution suivante pour remplacer le code suivant

// 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'
        classpath 'com.google.gms:google-services:3.2.0'

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

Ça marche bien pour moi

3
user3318703

Au plus tard Google Play Services 15.0.0, il se produit cette erreur lorsque vous incluez un service de jeu complet comme celui-ci

implementation 'com.google.Android.gms:play‐services:15.0.0'

Au lieu de cela, vous devez spécifier le service de détail tel que Google Drive

com.google.Android.gms:play-services-drive:15.0.0
2
Alen Lee

J'ai le même problème et le problème a été résolu en désactivant le mode Cradle Offline, même si je ne me souvenais plus du moment où je l'ai désactivé!

voici la solution:

Comment désactiver gradle 'mode déconnecté' dans Android studio? [dupliquer]

1
Lily bentham

Vérifiez vos paramètres de gradation, il peut être réglé sur Travail hors ligne

1
MJahongir

J'ai eu ce problème… .. Et j'ai trouvé ceci résoudre… .. Dans Android Studio, menu Ouvrir le fichier, allez à Structure de projet, dans l'application Module, allez dans l'onglet Dépendances et vous pouvez ajouter 'com.google.Android. gms: play-services: xxx 'en cliquant sur le bouton +. 

0
Amirhosein

J'ai aussi cette erreur, mais pour une raison différente. Il s'avère que j'ai fait une faute de frappe lorsque j'ai essayé de spécifier le numéro de version en tant que variable:

dependencies {
    // ...
    implementation "com.google.Android.gms:play-services-location:{$playServices}"
    // ...
}

J'avais défini la variable playServices dans gradle.properties dans le répertoire racine de mon projet:

playServices=15.0.1

La faute de frappe était {$playServices} qui aurait dû dire ${playServices} comme ceci:

dependencies {
    // ...
    implementation "com.google.Android.gms:play-services-location:${playServices}"
    // ...
}

Cela a résolu le problème pour moi.

0
Michael Osofsky

il s’agit probablement de ne pas entrer la version de dépendance correcte. vous pouvez sélectionner la dépendance correcte à partir de ceci:

file>menu>project structure>app>dependencies>+>Library Dependency>select any thing you need > OK

si vous ne trouvez pas vos besoins, vous devriez mettre à jour votre sdk de la manière suivante: 

outils> Android> sdk manager> sdk update> sélectionnez tout ce dont vous avez besoin> ok

0
a.miadian