it-swarm.com.de

Fehler beim Beheben von: com.google.Android.gms: play-services in IntelliJ Idea mit Gradle

Ich versuche, Google Play-Services zu meinem libGDX-Projekt in IntelliJ Idea hinzuzufügen. Ich habe die Installationsanleitung hier befolgt: https://developers.google.com/Android/guides/setup

das sieht ziemlich unkompliziert aus. Ich habe diese Zeilen gerade zu meinem build.gradle im entsprechenden Abschnitt hinzugefügt, so dass die Dinge jetzt so aussehen:

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

Dann versuche ich, mein Gradle-Projekt in Idea zu synchronisieren, um den Fehler "Fehler beim Lösen" zu erhalten.

Nun, in der Installationsanleitung steht auch "Vergewissern Sie sich, dass Sie diese Versionsnummer jedes Mal aktualisieren, wenn Google Play-Dienste aktualisiert werden", aber das Problem ist, dass es fast unmöglich scheint, diese Versionsnummer zu finden: meine Google Play Services-SDK-Version gemäß Android SDK Manager ist "43", und bisher konnte ich solche "11.2.0" oder einen anderen typischen Versionsstring nicht mit der Versionsnummer "43" in Beziehung setzen. Nicht, dass die Installationsanleitung dazu nichts sagt.

Jedenfalls habe ich aus der Fülle von Fragen, die sich auf diese Frage beziehen, viele Dinge ohne Erfolg ausprobiert. Insbesondere muss ich darauf hinweisen, dass mein Android-SDK ordnungsgemäß aktualisiert wurde, und ich bin mir sicher, dass es von Idea verwendet wird (ich habe das bereits dreimal geprüft ...):

 Android SDK Manager  Project Structure

Ich verwende die API-Ebene 26, aber die anderen Definitionen verwenden dasselbe Verzeichnis für das Android-SDK. Darüber hinaus habe ich KEIN anderes Android-SDK in diesem Laptop installiert. Es ist also keine Frage, ob Idea dieses und das einzige Gerät verwendet. 

Alle Ideen sind mehr als willkommen.

Danke im Voraus!

57
Fran Marzoa

Ich habe gerade Version 11.2.0 durch 11.0.0 ersetzt und dann schien es gut zu funktionieren, so dass 11.2.0 nicht im neuesten Android-SDK enthalten war. 

Nachdem ich mit all den verfügbaren verstreuten Dokumentationen zu kämpfen hatte, erreichte ich dieses Dokument durch Zufall (ich schätze, es wird von Google nicht hoch genug indiziert): https://developers.google.com/Android/guides/ Veröffentlichungen

Ich zitiere von dort:

Highlights aus der Version 11.2 der Google Play-Dienste. Google Play Dienstabhängigkeiten sind jetzt über maven.google.com verfügbar

Auch wenn dies nicht unbedingt bedeutet, dass sie mit dem heruntergeladenen SDK nicht mehr verfügbar sind, scheint dies tatsächlich der Fall zu sein.

Das Hinzufügen von google () zu meinem build.gradle-Programm hat jedoch nicht funktioniert (nicht gefunden, undefiniert oder was auch immer ...). Daher habe ich einen anderen Ansatz verwendet, den ich in diesem Dokument gefunden habe:

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

Ich habe meine build.gradle-Datei geändert und diese Zeile zu allen Projekten/Repositorys hinzugefügt, wie in:

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

Und dann auch im Android-Bereich in derselben build.gradle -Datei:

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

Diese beiden Zeilen reichten aus, um die Synchronisation von Gradle problemlos durchzuführen. Ich musste keine Plugins hinzufügen, außer denen, die bereits standardmäßig in meinem libGDX-Projekt hinzugefügt wurden.

Danach bekam ich einige verschiedene Fehler, aber keine über Gradle oder Abhängigkeiten. Kurz gesagt, JFTR: 

Zuerst hatte ich eine minSdkVersion von 8. Gelöst, indem ich es auf 14 erhöhte. Ich denke, ich könnte leben, ohne all diese Geräte unter 14 zu unterstützen. 

Zweitens hatte ich Probleme mit der Dex-Obergrenze von Referenzen. Ich habe dieses Problem noch nie gesehen, aber vielleicht haben Sie die Lösung, die ich verwendet habe, bereits bemerkt: Anstatt das gesamte 'com.google.Android.gms: play-services' zu verwenden, habe ich nur 'com.google.Android.gms' verwendet : play-services-ads 'das ist die API, die mich gerade interessiert. Für andere Fälle, in denen eine Lösung wie diese möglicherweise nicht nützlich ist, könnte dieses Dokument einen besseren Einblick bieten: https://developer.Android.com/studio/build/multidex.html

Drittens, auch danach habe ich dieses "Jumbo" -Ding Problem beschrieben und hier beantwortet: https://stackoverflow.com/a/26248495/1160360

Und das ist es. Ab jetzt baut alles und mein Spiel zeigt endlich diese Admob-Banner. 

Ich habe Stunden damit verbracht, dachte ich. Ich frage mich, ob all diese Gebäudeautomationssysteme, die wir in letzter Zeit verwenden, die zusätzliche Last wert sind, die sie hinzufügen. 

Ich meine, vor etwa fünf Jahren musste ich Admob zum ersten Mal zu einer App hinzufügen. Ich musste nur eine .jar-Datei herunterladen und in ein Verzeichnis in meinem Projekt ablegen. Es war ziemlich offensichtlich und der ganze Prozess, vom Googeln "Wie man Admob in meinem Android-Projekt einrichtet", damit meine App ein Admob-Banner anzeigt, hat mich nur ein paar Minuten gekostet. Ich werde es hier belassen, da dies nicht der richtige Ort für solche Debatten ist.

Trotzdem hoffe ich, dass meine eigene Erfahrung für jemanden weiter nützlich ist.

75
Fran Marzoa

Ich hatte das Problem, als ich jcenter() vor google() in Projektebene build.gradle ablegte. Als ich die Reihenfolge änderte und google() vor jcenter() in build.gradle legte, verschwand das Problem

Hier ist mein endgültiges build.gradle

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

Fügen Sie dies Ihrer build.gradle-Datei auf Projektebene hinzu:

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

Es hat für mich funktioniert

14
Zakawat

Ich habe versucht, dieses Problem stundenlang zu lösen, nachdem ich Android Studio einige Zeit nicht verwendet hatte und die Updates nicht kannte.

Es ist wichtig, dass google() das erste Element ist, das in repositories wie folgt steht:

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

Irgendwie war google() das zweite Element nach jcenter(), also war alles durcheinander und funktionierte nicht. Vielleicht hilft das jemandem.

11
AlexioVay

Das Google Play-Services-SDK befindet sich in Google Repository.

  1. Starten Sie Intellij IDEA.

  2. Klicken Sie im Menü Extras auf Android> SDK-Manager.

  3. Aktualisieren Sie den Android SDK Manager: Klicken Sie auf SDK-Tools, erweitern Sie Support Repository, wählen Sie Google Repository aus und klicken Sie dann auf OK.

Die aktuelle Version des Google Repository ist 57.

Nach dem Update synchronisieren Sie Ihr Projekt.

EDIT

Ab Version 11.2.0 müssen wir das Google Maven Repo verwenden, also den Google Maven Repo-Link zum Repository-Tag hinzufügen. Überprüfen Sie die Release-Informationen von hier .

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

Eine aktuellere Antwort:

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

Und vergessen Sie nicht, Gradle auf 4.1+ zu aktualisieren (in gradle-wrapper.properties):

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

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

6
Noureddine AMRI

Ich habe folgende Lösung gefunden, um den folgenden Code zu ersetzen

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

Es funktioniert gut für mich

3
user3318703

Spätestens Google Play Services 15.0.0 tritt dieser Fehler auf, wenn Sie den gesamten Wiedergabedienst wie diesen einschließen

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

Stattdessen müssen Sie den Detaildienst wie Google Drive angeben.

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

Ich hatte das gleiche Problem und es wurde durch Deaktivieren des Cradle-Offline-Modus behoben, obwohl ich mich nicht erinnern konnte, wann ich es deaktiviert habe!

hier ist die Lösung:

Wie deaktiviere ich den Offline-Modus von Gradle in Android Studio? [Duplikat]

1
Lily bentham

Überprüfen Sie Ihre Einstellungen, möglicherweise ist Offline-Arbeit eingestellt

1
MJahongir

Ich hatte dieses Problem ... und dieses Problem wurde gelöst. In Android Studio, Menü "Datei" öffnen und unter Projektstruktur, In der Modul-App auf die Registerkarte "Abhängigkeiten" gehen und "com.google.Android" hinzufügen. gms: play-services: xxx 'durch klicken auf die + taste. 

0
Amirhosein

Ich habe diesen Fehler auch aus einem anderen Grund erhalten. Es stellte sich heraus, dass ich einen Tippfehler gemacht hatte, als ich versuchte, die Versionsnummer als Variable anzugeben:

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

Ich hatte die Variable playServices in gradle.properties im Stammverzeichnis des Projekts definiert:

playServices=15.0.1

Der Tippfehler war {$playServices}, der ${playServices} so hätte sagen sollen:

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

Das hat das Problem für mich behoben.

0
Michael Osofsky

wahrscheinlich handelt es sich hierbei um eine falsche Abhängigkeitsversion. Sie können hier die richtige Abhängigkeit auswählen:

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

wenn Sie Ihre Anforderungen nicht finden, sollten Sie Ihre SDK von unten aktualisieren: 

tools> Android> SDK-Manager> SDK-Update> Wählen Sie alles aus, was Sie brauchen> OK

0
a.miadian