Android Studio mit Google Play Services

95

Ich versuche, Google Play Services mit dem neuen Android Studio zu testen. Ich habe ein Projekt mit einer Abhängigkeit von google_play_services.jar. Wenn ich jedoch versuche, das Projekt neu zu erstellen, werden folgende Fehler angezeigt:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

Es scheint, dass es zwei BuildConfig-Dateien und auch zwei R-Klassen hat. Wie kann ich das Problem beheben?

BEARBEITEN:

Ich habe festgestellt, dass der Compiler zwei R.java-Dateien kompiliert: die in meinem Projektordner und eine im Ordner% USERPROFILE% .AndroidStudioPreview. Daher habe ich versucht, diesen Ordner "Preview" in den Compilereinstellungen auszuschließen und jetzt funktioniert es. Dieses Problem tritt erst auf, nachdem ich begonnen habe, Google Play Services-Klassen in meinem Projekt zu verwenden. Ich würde mich freuen, wenn jemand den Grund für dieses Problem erklären kann.

Android-Tester
quelle
Jeder kann helfen, was diese Kompilierung "com.google.android.gms: play-services: 6.5.87" bewirkt, während sie dem Abschnitt "Abhängigkeiten" in Android Studio hinzugefügt wird. Wir können das Glas auch hinzufügen, aber was die obige Zeile bewirkt, da wir keine Gläser hinzufügen.
Android Killer

Antworten:

243

Alle diese Antworten sind falsch, da mit der Veröffentlichung des Gradle-Plugins v0.4.2 die Einrichtung von Google Play-Diensten unter Android Studio unkompliziert ist. Sie müssen kein JAR importieren oder eine Projektbibliothek hinzufügen oder ein neues Modul unter Android Studio hinzufügen. Sie müssen der Datei build.gradle die richtigen Abhängigkeiten hinzufügen. Bitte schauen Sie sich diese Links an: Gradle Plugin v0.4.2 Update , New Build System und dieses Beispiel

Der richtige Weg dazu ist wie folgt:

Zunächst müssen Sie den SDK-Manager starten und die folgenden Dateien unter "Extras" herunterladen und installieren: Android-Support-Repository , Google Play-Dienste , Google-Repository .

Starten Sie Android Studio neu und öffnen Sie die Build-Gradle-Datei. Sie müssen Ihre build.gradle-Datei so ändern, dass sie unter Abhängigkeiten so aussieht:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

Und schließlich synchronisieren Sie Ihr Projekt (die Schaltfläche links neben dem AVD-Manager).

Seit Version 6.5 können Sie die gesamte Bibliothek (sehr groß) oder nur die benötigten Module (Best Option) einbinden. Wenn Sie nur Google Maps und Analytics benötigen, können Sie das vorherige Beispiel durch das folgende ersetzen:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

Die vollständige Abhängigkeitsliste finden Sie hier

Einige Randnotizen:

  • Verwenden Sie die neueste Version der Play Services-Bibliothek. Wenn es eine alte Version ist, wird Android Studio es hervorheben. Ab heute (5. Februar ist 6.5.87) können Sie aber die neueste Version bei Gradle Please überprüfen
  • Bereinigen Sie nach einem umfassenden Update von Android Studio Ihr Projekt, indem Sie die nächsten Anweisungen befolgen, wie in den Kommentaren von @ user123321 vorgeschlagen

    CD in Ihren Projektordner
    ./gradlew clean
    ./gradlew build

Imanol
quelle
Hey Estornino. Ich habe dieses Update auch gesehen, aber ich habe mich gefragt, wie Android Studio (zumindest die IDE selbst) die Abhängigkeiten aufnimmt. Hast du es nur mit den Gradle-Einstellungen zum Laufen gebracht?
Sieger n.
Ja, es hat bei mir funktioniert. Die IDE kann auch die neuen Namen auflösen. Vielen Dank.
Sieger n.
Entschuldigung für die späte Antwort. Wenn Sie auf die Schaltfläche "Synchronisieren" klicken, fügt das ide die neuen Abhängigkeiten automatisch hinzu. Es ist das Build-System, das das ide-Verhalten regelt, und es wird davon abgeraten, Änderungen am Projekt im "alten" Ideenstil vorzunehmen (ich meine, die Module und die Projektkonfiguration zu ändern). Ich bin froh, dass es für dich funktioniert.
Imanol
5
Stellen Sie sicher, dass Sie ./gradlew sauber und dann ./gradlew erstellen, bevor Android Studio 2.x die Abhängigkeit aufnimmt. Andernfalls erhalten Sie einen NoClassDef-Fehler
user123321
2
Ab heute war der letzte Build, den ich bekam, 5.2.08
chrisbjr
114
  1. Gehen Sie zu Datei -> Projektstruktur
  2. Wählen Sie 'Projekteinstellungen'
  3. Wählen Sie die Registerkarte "Abhängigkeiten"
  4. Klicken Sie auf '+' und wählen Sie '1. Bibliotheksabhängigkeiten'.
  5. Suche nach: com.google.android.gms: play-services
  6. Wählen Sie die neueste Version und klicken Sie auf "OK".

Voila! Keine Notwendigkeit mit Gradle zu kämpfen :)

Ivo Stoyanov
quelle
5
Das hat bei mir funktioniert und ist sehr einfach. Es kennt bereits die neueste Versionsnummer der Play-Services - Sie wählen sie einfach aus einer Liste aus und die Gradle-Datei wird für Sie geändert!
Nick Perkins
Kann ich BaseGameUtils für die Bestenliste mit derselben Methode importieren?
eng.ahmed
Ja, Ahmed. Auf diese Weise können Sie jede Android-Bibliothek importieren.
Ivo Stoyanov
Einfache, elegante Lösungen. Danke @IvoStoyanov, es wird Anfängern wie mir viel Zeit sparen.
Manikandan S
5

EDITIERT: Dieser Typ hat es wirklich nach Hause gebracht und hat ein gutes kleines Tutorial http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

eine Randnotiz: Ich hatte so viel herumgespielt, dass ich eine machen musste gradlew clean, damit es erfolgreich lief

Wenn Sie Ihr Projekt importiert haben oder aus der Beispielkartenanwendung unter \ extras \ google \ google_play_services \ samples \ maps arbeiten, lesen Sie dieses Tutorial.

https://stackoverflow.com/a/16598478/2414698

Wenn Sie ein neues Projekt von Grund auf neu erstellen, beachten Sie die Kommentare von Xav zu demselben Beitrag. Er beschreibt, dass Android Studio einen anderen Compiler verwendet und dass Sie die Datei build.gradle manuell ändern müssen. Ich habe das mit Erfolg gemacht. Ich habe kopiert

  • google-play-services.jar
  • google-play-services.jar.properties

in mein lib-Verzeichnis und fügte meiner build.gradle-Datei Folgendes hinzu

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

Wenn dies ein neues Projekt ist, lesen Sie auch diesen Beitrag.

https://stackoverflow.com/a/16671865/2414698

Packerprogrammierer
quelle
7
Der Artikel, auf den Sie verlinken, ist jetzt veraltet. Diese Lösung wird nicht empfohlen.
RevNoah
4

Die meisten dieser Antworten befassen sich nur mit Abhängigkeiten zur Kompilierungszeit. Zur Laufzeit finden Sie jedoch eine Vielzahl von NoClassDef-Ausnahmen. Das liegt daran, dass Sie mehr als die Datei google-play-services.jar benötigen. Es verweist auf Ressourcen, die Teil des Bibliotheksprojekts sind und die nicht korrekt enthalten sind, wenn Sie nur das Jar haben.

Was für mich am besten funktioniert hat, war, zuerst das Projekt in Eclipse richtig einzurichten. Lassen Sie Ihr Projekt so strukturieren, dass es sowohl Ihre App als auch die Bibliothek enthält, wie hier beschrieben: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Exportieren Sie dann Ihr App-Projekt aus Eclipse und importieren Sie es wie hier beschrieben in Android Studio: http://developer.android.com/sdk/installing/migrate.html . Stellen Sie sicher, dass Sie sowohl Ihr App-Projekt als auch das Google Play Services-Bibliotheksprojekt exportieren. Beim Import erkennt es das Bibliotheksprojekt und importiert es als Modul. Ich habe gerade alle Standardeinstellungen während des Projektimportprozesses akzeptiert.

Brad Armstrong
quelle
2
Danke, aber ich möchte Eclipse nicht verwenden!
Android-Tester
2

Google Play Services Integration in Android Studio.

Schritt 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Schritt 2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

Schritt 3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

Schritt 4:

Sync project file with grandle.
wait for few minute.

Schritt 5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

Bitte geben Sie einen Kommentar ab, wenn Sie Hilfe benötigen. Viel Spaß beim Codieren.

Harshid
quelle
2

Keine der oben genannten Lösungen hat bei mir funktioniert. Ich bin mir nicht sicher, ob es für mein Setup oder meine neue Version spezifisch ist.

Ich verwende Android Studio Beta 0.8.9 und habe keinen com.google.android.gms: Play-Service in der Bibliotheksliste erhalten, wenn ich diese Anweisung befolge:

Gehen Sie zu Datei -> Projektstruktur -> Projekteinstellungen auswählen -> Registerkarte 'Abhängigkeiten' auswählen Klicken Sie auf '+' -> 1. Bibliotheksabhängigkeiten -> Wählen Sie com.google.android.gms: play-services: +

Ich hatte das schon gemacht:

Zunächst müssen Sie den SDK-Manager starten und die folgenden Dateien unter "Extras" herunterladen und installieren: Android-Support-Repository, Google Play-Dienste, Google-Repository.

Das Problem bestand darin, im SDK-Manager "Google Play Services für Froyo" hinzuzufügen und dann den ersten Schritt zu wiederholen.

Ich habe den Grund nicht richtig verstanden, aber das hat funktioniert.

PS: Ich habe gerade bemerkt, dass dies auch jetzt nicht der Fall ist, wenn ich nach Spieldiensten suche, aber wenn ich direkt scrolle und durch die Liste schaue, ist es genau dort.

Selfx Aadhyant
quelle
2

Folgen Sie diesem Artikel -> http://developer.android.com/google/play-services/setup.html

Sie sollten Verwenden von Android Studio wählen

Geben Sie hier die Bildbeschreibung ein

Beispiel Gradle-Datei:

Hinweis: Öffnen Sie die Datei build.gradle in Ihrem Anwendungsmodulverzeichnis.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

Die neueste Version von Google Play Services finden Sie hier: https://developer.android.com/google/play-services/index.html

d.danailov
quelle
1

Ich habe dies funktioniert, nachdem ich Folgendes getan habe:

  • Haben Sie die google-play-services-lib als Modul (beachten Sie den Unterschied zwischen Modul und Projekt) und fügen Sie dann die Datei google-play-services.jar zum Verzeichnis "libs" Ihres Modells hinzu.
  • Fügen Sie danach die JAR-Datei zu Ihrem Erstellungspfad hinzu, indem Sie eine Bibliothek erstellen, oder fügen Sie die JAR-Datei einer anderen Bibliothek hinzu. Ich habe im Allgemeinen eine einzige IDEA-Bibliothek, zu der ich alle meine /libs/*.jar-Dateien hinzufüge.
  • Fügen Sie die Bibliothek über die Moduleinstellungen (F4) zu Ihrem Modulerstellungspfad hinzu.
  • Fügen Sie Ihrem Projekt die Google-Play-Services-Bibliothek als Modulabhängigkeit hinzu.
  • Getan!

Hinweis: Dies gibt mir auch keine Laufzeitausnahmen, es funktioniert.

Johan S.
quelle
Ich erhalte die gleichen Fehler: R.java und BuildConfig.java werden dupliziert
androidtester
Haben Sie das Modul als Kompilierungsabhängigkeit?
Johan S
Ja! Die einzige Lösung ist die, die ich zuvor erwähnt habe (
ausgenommen
0

Öffnen Sie Ihre Projektdatei build.gradle und fügen Sie die folgende Zeile unter dem Modul Abhängigkeiten hinzu.

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

Im Folgenden werden Google Analytics und Maps hinzugefügt, wenn Sie keine vollständige Bibliothek integrieren möchten

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}
Pankaj
quelle
0

In meinem Fall werden google-play-services_lib als Modul (Externe Bibliotheken) für Google Map & GCM in mein Projekt integriert.

Diese Zeit erfordert die Implementierung der Google Places Autocomplete-API. Das Problem ist jedoch, dass der Code neu und meine Bibliotheken alt sind, sodass einige Klassen nicht gefunden werden:

Befolgen Sie diese Schritte ...

1> Aktualisieren Sie den Google Play-Dienst in SDK Manager

2> Wählen Sie eine neue JAR-Datei des Google Play-Dienstes aus ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs) ) und ersetzen Sie diese durch eine alte

Ich habe Erfolg ... !!!

Dhruv Raval
quelle
-3

Ich habe die Play Libs-Dateien aus der google-play-services_lib in mein Projekt Libs-Verzeichnis kopiert:

  • google-play-services.jar
  • google-play-services.jar.properties.

Wählen Sie sie dann aus und klicken Sie mit der rechten Maustaste auf "Als Bibliotheken hinzufügen".

Bitte lösche mich
quelle
1
Vielen Dank für Ihre Antwort, aber es hat bei mir nicht funktioniert - es ähnelt etwas, das ich zuvor versucht hatte.
Android-Tester
Dieser Rat widerspricht anderen Informationen, die ich an anderer Stelle gelesen habe. Die in der ersten Antwort verknüpfte Antwort ist veraltet, da diese Methode verwendet wird.
RevNoah