Der Import com.google.android.gms kann nicht aufgelöst werden

74

Ich bin neu in der Android-Entwicklung. Durch Anschluss an dieses Tutorial habe ich Fehler , The import com.google.android.gms cannot be resolvedwenn ich den Code in das schrieb MainActivity.java:

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

Bei der Suche nach verschiedenen Korrekturen habe ich Folgendes ausprobiert:

  • Ich habe Google APIs für eine bestimmte API-Ebene über den Android SDK-Manager heruntergeladen.
  • Ich habe die Google-API als Projekterstellungsziel abgehakt.
  • Ich habe <uses-library android:name="com.google.android.maps" /> Zeile in das AndroidManifest.xmlals Kind von <application>Tag hinzugefügt .
  • Ich habe das Projekt bereinigt, indem ich es ausgewählt Project->Clean...und von Grund auf neu erstellt habe.
  • Ich habe eine .jarDatei für Karten eingefügt, indem ich mit der rechten Maustaste auf mein Projekt geklickt habe, den Pfad erstellt und ein externes Archiv hinzugefügt habe, in dem ich es in meinem SDK gefunden habe:android-sdk-windows\add-ons\addon_google_apis_google_inc_8\libs\maps

Leider hat keines der oben genannten geholfen.

Arnoldas Bendoraitis
quelle

Antworten:

40

Ich habe die Google-API als Projekterstellungsziel abgehakt.

Dies ist irrelevant, da dies für Maps V1 gilt und Sie versuchen, Maps V2 zu verwenden.

Ich habe eine JAR-Datei für Karten eingefügt, indem ich mit der rechten Maustaste auf mein Projekt geklickt habe, den Pfad erstellt und ein externes Archiv hinzugefügt habe, das sich in meinem SDK befindet: android-sdk-windows \ add-ons \ addon_google_apis_google_inc_8 \ libs \ maps

Das ist doppelt falsch.

Erstens, nie manuell den Build - Pfad in einem Android - Projekt ändern . Wenn Sie dies tun, stürzen Sie bestenfalls zur Laufzeit ab, da die JAR, die Sie in Ihr Projekt eingefügt haben (über die manuelle Änderung des Erstellungspfads), nicht in Ihrer APK enthalten ist. Legen Sie eine normale JAR eines Drittanbieters in das libs/Verzeichnis Ihres Projekts, wodurch sie automatisch zu Ihrem Erstellungspfad hinzugefügt und ihr Inhalt zu Ihrer APK-Datei hinzugefügt wird.

Maps V2 ist jedoch kein JAR. Es ist ein Android-Bibliotheksprojekt, das eine JAR enthält. Sie benötigen das gesamte Bibliotheksprojekt.

Sie müssen das android-sdk-windows\add-ons\addon_google_apis_google_inc_8Projekt in Eclipse importieren und dann als Referenz zu einem Android-Bibliotheksprojekt zu Ihrer App hinzufügen .

CommonsWare
quelle
2
Du hattest Recht. Ich habe es importiert google-play-services-lib(das auch die Karten enthält) und es dann als Referenz hinzugefügt, und diese Fehler sind jetzt verschwunden. Ich bin mir immer noch nicht sicher, was ich mit der .jarbereits importierten Datei tun soll . Sollte ich mir Sorgen machen, es irgendwie zu löschen?
Arnoldas Bendoraitis
@ArnoldasBendoraitis: Machen Sie die manuelle Änderung rückgängig, die Sie an Ihrem Erstellungspfad vorgenommen haben.
CommonsWare
3
Erläuterung: Importieren Sie das Projekt über Datei → Importieren → Android → Vorhandenen Android-Code in den Arbeitsbereich in Eclipse. Und natürlich heißt das gesuchte Verzeichnis nicht "android-sdk-windows", wenn Sie Windows nicht verwenden. ;-)
Michael Scheper
1
@CommonsWare, Irgendwie funktioniert es, wenn ich das Jar direkt hinzufüge, aber wenn ich versuche, stattdessen auf das Projekt zu verweisen, funktioniert es nicht. Die Referenz zeigt das grüne Häkchen, wenn ich "Hinzufügen" mache. Wenn ich jedoch auf "OK" klicke und Projekt> Eigenschaften erneut öffne, wird wieder ein rotes Kreuz angezeigt. Wissen Sie, warum dies passieren kann?
Pacerier
1
Vielleicht ist es ein Update. Derzeit lautet der zu importierende Pfad jedoch <sdk> \ extras \ google \ google_play_services \ libproject \ google-play-services_lib
jasxir
54

Eine andere Möglichkeit besteht darin, Eclipse den Import für Sie ausführen zu lassen. Bewegen Sie die Maus über den com.google.android.gmsImport, der nicht aufgelöst werden kann, und wählen Sie unten im Popup-Menü die Option Projekt-Setup korrigieren ... wie unten. Anschließend werden Sie aufgefordert, die Google Play Services-Bibliothek zu importieren. Wählen Sie das und Sie sollten bereit sein zu gehen.

Geben Sie hier die Bildbeschreibung ein

tipycalFlow
quelle
Wenn ich diese vorgeschlagene Lösung ausprobiere, wird folgende Meldung angezeigt: "Es wurden keine Vorschläge gefunden, um den unlösbaren Verweis auf 'com.google.android.gms.internal.fn' zu beheben. Klicken Sie hier, um den Erstellungspfad oder das Projekt 'CouponClub manuell zu konfigurieren '. " Ich habe "google-play-services_lib" bereits erfolgreich importiert, daher dachte ich, dass dies ausreichen würde, um Zugriff auf com.google.android.gms.internal.fn zu erhalten.
Jaime Montoya
19

Aus meiner Erfahrung (Eclipse):

  1. Google-play-services_lib als Projekt hinzugefügt und von meiner App aus darauf verwiesen.
  2. Alle manuell hinzugefügten Gläser wurden entfernt
  3. Google-play-services.jar wurde im Ordner "libs" meines Projekts hinzugefügt.
  4. Ich hatte einige große Probleme, weil ich die Registerkarte "Bestellen" und "Exportieren" durcheinander gebracht habe. Die funktionierende Lösung lautet also (in dieser Reihenfolge): src, gen, Google APIs, Android-Abhängigkeiten, Android Private Libraries (nur diese wurde für den Export aktiviert).
Alex
quelle
Warum das Play Services-JAR manuell hinzufügen, wenn Gradle es im Build für Sie erledigt?
Igor Ganapolsky
5
Weil ich keine Zeit hatte, meine Projekte mit Gradle in das Android Studio-Format zu konvertieren. Dies ist eine Lösung für Eclipse IDE.
Alex
13

In meinem Fall oder alle mit Android Studio

Sie können den Google Play-Dienst importieren

Platz in Ihrem build.gradle

compile 'com.google.android.gms:play-services:7.8.0'

oder die neueste Version der Spieldienste hängt davon ab, wann Sie diese Antwort sehen

Spezifischerer Import

Bitte überprüfen Sie diese einzelnen Gradle-Importe

https://developers.google.com/android/guides/setup

Google Maps

com.google.android.gms:play-services-maps:7.8.0

Möglicherweise ist ein Fehler aufgetreten

Wenn beim Synchronisieren des Projekts mit Gradle-Dateien ein Fehler auftritt

Geben Sie hier die Bildbeschreibung ein

Stellen Sie sicher, dass Sie das neueste Update installieren

1- Android Support Repository.

2- Android Support Library.

3- Google Repository.

4-Google Play-Dienste.

Geben Sie hier die Bildbeschreibung ein

Möglicherweise müssen Sie Ihr Android Studio neu starten, um zu antworten

Mina Fawzy
quelle
7

Beachten Sie, dass Sie nach dem Importieren des Projekts google-play-services_lib in Ihre IDE auch google-play-services.jar hinzufügen müssen zu: Projekt => Eigenschaften => Java-Erstellungspfad => Bibliotheken => JARs hinzufügen

Phileo99
quelle
Die einfachste einzeilige Antwort. Ich konnte selbst nach dem Import von Play Services nicht herausfinden, was passiert. Dann habe ich es satt, es in Google_apis zu ändern. Schließlich hat eine einzeilige Lösung für mich funktioniert.
Sud007
Vorsicht, dies wird Probleme verursachen: stackoverflow.com/questions/15894143/…
Mark Phillip
1

Die oben genannten Lösungen sollten Ihr Problem lösen. Wenn dies nicht der Fall ist, aktualisieren Sie Ihr Android-SDK mit dem SDK-Manager, installieren Sie das neueste lib-Projekt und wiederholen Sie die obigen Schritte erneut.

Mitech
quelle
1

Noch einmal Stellen Sie sicher, dass diese beiden Dinge richtig passieren, nichts weiter als das. (FÜR ECLIPSE-BENUTZER)

1) Kopieren Sie die JAR-Datei von -> C: \ Benutzer (Ihr Benutzername) \ android-sdks \ extras \ google \ google_play_services \ libproject \ google-play-services_lib \ libs \ google-play-services.jar

2) Klicken Sie mit der rechten Maustaste auf Projekt -> Pfad erstellen -> Externes Archiv hinzufügen -> google-play-services.jar

Tech Guru
quelle
1

In Android Studio gehen Sie zu: Datei -> Projektstruktur ... -> Benachrichtigungen (letzter Eintrag) -> Überprüfen Sie Google Cloud Messaging

Warten Sie ein paar Sekunden und Sie sind fertig :) import com.google.android.gms.gcm.GcmListenerService sollte ordnungsgemäß aufgelöst werden

s4uron
quelle
0

Ich hatte auch das gleiche Problem. Wurde durch Kompilieren mit den neuesten SDK-Tool-Versionen (Play-Dienste, Build-Tools usw.) behoben. Das Beispiel build.gradle wird unten als Referenz gezeigt.

    apply plugin: 'com.android.application'


android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.android.support:appcompat-v7:23.0.1'
}
Traumentwickler
quelle
0

Angenommen, Sie verwenden ECLIPSE:

Klicken Sie mit der rechten Maustaste auf PROJEKTEIGENSCHAFTEN ANDROID

Wenn Sie eine Version von ANDROID überprüft haben, müssen Sie sie in eine GOOGLE-API ändern. Wählen Sie eine Version von GOOGLE APIS, die mit der Zielversion Ihres Projekts kompatibel ist.

Tony Gil
quelle
1
Bitte erläutern Sie im Detail.
Dmitry Isakov
@DmitryIsakov Welchen Schritt soll ich klären?
Tony Gil
1
Sieht so aus, als hätte ich es getan ... Es war keine leichte Aufgabe, von Eclipse nach AStudio zu wechseln
Dmitry Isakov
@DmitryIsakov - Ich habe versucht und musste aufhören, weil ich es mir nicht leisten konnte, mir die Zeit für die Entwicklung zu nehmen und sie der Migration zu widmen. Könnten Sie mir bitte einige der grundlegenden Schritte erklären, die Sie unternommen haben?
Tony Gil
-1

In meinem Fall gcm.jarbegann es erst zu funktionieren, nachdem ich es zum lib-Ordner hinzugefügt hatte . Es war hier:C:\adt-bundle-windows-x86_64-20131030\sdk\extras\google\gcm\gcm-client\dist

Also hat das google-play-services.jarnicht funktioniert ...

RealNmae
quelle
Diese Frage bezieht sich nicht auf Google Map v1. Es geht um Google Map v2. gcm.jar ist in diesem Fall nutzlos.
cmcromance
-3

Ich hatte das gleiche Problem, so dass die dumme API, die ich wie folgt entschied, die Importzeile änderte

import com.google.android.gms.maps.model.LatLng;
Leonardo
quelle