Aktualisierung der Google Play Services-Bibliothek und fehlendes Symbol @ integer / google_play_services_version


186

Wenn Sie mein Projekt auf die neueste Version von Google Play Services ( v4.0, veröffentlicht an Halloween 2013 ) aktualisieren, sollten Sie der AndroidManifest.xmlDatei jetzt ein neues Tag hinzufügen .

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

Wenn ich das versuche, erhalte ich leider den folgenden Kompilierungsfehler:

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

Ich kann dann zu der Datei unter navigieren google-play-services_lib/res/values/version.xmlund die rohe Ganzzahl für dieses Symbol anzeigen:

<integer name="google_play_services_version">4030500</integer>

Und dann füge es wieder in mein ein AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

Dies funktioniert absolut einwandfrei und ich kann dann das Projekt und die App gut kompilieren und ausführen. Aber es ist definitiv eine unerwünschte Lösung mit offensichtlichen Problemen bei der Aufrüstbarkeit.

Irgendwelche Ideen?


habe gerade genau das gleiche Problem - konnte aber die Ganzzahl nicht finden.
Björn Hallström

Antworten:


256

Für alle, die Eclipse verwenden, sollten Sie dies so tun.

Eclipse -> importieren -> vorhandener Android-Code -> durchsuchen -> zu google-play-services_lib FOLDER navigieren (android-sdk / extras / google / google_play_services / libproject).

Dann zu Ihrem Projekt

Steuerklick -> Eigenschaften -> Android -> Bibliotheken, Hinzufügen -> Wählen Sie das gerade importierte Projekt aus -> OK


Ich habe es versucht (gemäß den Anweisungen aus dieser anderen Frage , um den Ordner zu finden), aber Eclipse sagt, dass die .projectDatei nicht in das angegebene google-play-services_libVerzeichnis geschrieben werden kann. Der unmittelbare Grund ist natürlich, dass Eclipse nicht in das Programmdateiverzeichnis schreiben kann, in dem sich das SDK befindet. Die konkretere Frage wäre jedoch, warum eine Änderung der .projectDatei (die anscheinend zum SDK gehört und daher "korrekt" sein sollte) erforderlich ist an erster Stelle.
ODER Mapper

Ich habe das noch nie gesehen, daher weiß ich nicht genau, wie ich es beheben soll. Vor diesem Hintergrund glaube ich nicht, dass der Fehler im Ordner vorhanden ist, es sei denn, dies wurde bereits explizit geändert. Es ist möglich, dass es einfach veraltet ist und erneut heruntergeladen werden muss (wahrscheinlich ist es auch nicht das Problem, aber Sie wissen es nie).
PSchuette

Ist dieser Fehler beim Hinzufügen der Bibliothek oder beim Importieren des Projekts aufgetreten?
PSchuette

Danke, ich habe bei Eclipse gearbeitet. Ich dachte, ich hätte es richtig gemacht, aber ich habe es erneut gemacht und das hat das Compiler-Problem behoben.
Anna Billstrom

4
Der Ordner, den Sie importieren müssen, ist hier: extras \ google \ google_play_services \ libproject
Kamil Szot

78

Bitte beachten Sie, dass dieses Update möglicherweise nur für IntelliJ-Benutzer gilt !! (Weitere Informationen am Ende dieses Beitrags sollten für alle gelten.)

Dieses Problem wurde behoben! Ich benutze IntelliJ und es stellte sich heraus, dass ich gerade die Art und Weise falsch konfiguriert hatte, wie ich das google-play-services_libModul als Abhängigkeit aufgenommen habe.

Da ich dies vollständig über die GUI und überhaupt nicht durch Bearbeiten von Dateien behoben habe, sind hier einige Screenshots:

Schritt 1 - Erste Projektstruktur Meine Projektstruktur sah also zunächst so aus ...

Schritt 2 - Google-Play-Services-Bibliothek entfernt Dann habe ich das entfernt google-play-services Bibliothek aus meiner Abhängigkeitsliste entfernt, indem sie ausgewählt und dann unten auf die Minus-Schaltfläche geklickt habe. Beachten Sie den Fehler am unteren Rand des Dialogfelds, da für mein Projekt diese Bibliothek unbedingt erforderlich ist. Aber keine Sorge, wir werden es bald wieder hinzufügen!

Schritt 3 - Google-Play-Dienste als Modulabhängigkeit hinzugefügt Als nächstes habe ich google-play-services_libals Modulabhängigkeit anstelle einer Bibliotheksabhängigkeit hinzugefügt . Dann drücke ich ein paar Mal auf den Aufwärtspfeil unten, um diese Abhängigkeit an den Anfang der Liste zu verschieben. Beachten Sie aber den Fehler unten (wir sind noch nicht fertig!)

Schritt 4 - Klicken Sie auf die Glühbirne, um die Google Play-Services-Bibliothek als Abhängigkeit hinzuzufügen Ich habe dann auf die Glühbirne am unteren Rand des Dialogfelds im Bereich für Fehlermeldungen geklickt, um dieses kleine Popup mit zwei Auswahlmöglichkeiten aufzurufen ( Zu Abhängigkeiten hinzufügen ... oder Bibliothek entfernen ). Klicken Sie auf die Option Zu Abhängigkeiten hinzufügen ... !

Schritt 5 - Fügen Sie die Bibliothek zum Modul google-play-services_lib hinzu Ein neues kleines Dialogfenster sollte aufgetaucht sein. Ich hatte zwei Möglichkeiten, eine für mein Hauptprojekt (der Name ist verschwommen) und eine für das google-play-services_libProjekt. Abhängig von Ihrem Projekt haben Sie möglicherweise eine Menge mehr (wie Sie vielleicht sehen actionbarsherlock, solche Sachen). Wählengoogle-play-services_lib und klicken Sie auf OK!

Und endlich bist du fertig! Ich hoffe das hilft jemand anderem da draußen!

Weitere Informationen

Ich glaube, der Grund, warum dieses Problem anfänglich auftrat, ist, dass ich dachte , ich hätte das gesamte google-play-services_libProjekt richtig in mein Gesamtprojekt aufgenommen ... aber ich hatte es tatsächlich nicht und stattdessen nur seine JAR-Datei ( google-play-services_lib/libs/google-play-services.jar) richtig aufgenommen . Diese JAR-Datei enthält nur Code, keine Werte für Android-Ressourcen@integer/google_play_services_version Wert in meinem Projekt nie wirklich vorhanden . Aber der Code konnte in meinem Projekt verwendet werden, und so schien alles in Ordnung zu sein.

Nebenbei bemerkt, das Beheben dieses Problems scheint auch den GooglePlayServicesUtil.getErrorDialog(...).show()Absturz behoben zu haben , den ich früher hatte. Das hätte aber auch durch das Update behoben werden können, da nicht wirklich 100% sicher.


2
Ich arbeite nicht für mich. Ich habe nicht die "Glühbirne am unteren Rand des Dialogfelds im Fehlermeldungsbereich, um dieses kleine Popup
aufzurufen

2
In Ihrem Fall würde ich möglicherweise versuchen, Google Play Services vollständig aus Ihrem Projekt zu entfernen und dann erneut zu importieren. Da dieses Problem mit fehlenden Ganzzahlen nur auftritt, wenn die Google Play-Dienste überhaupt nicht ordnungsgemäß importiert wurden, ist es möglicherweise eine gute Idee, von vorne zu beginnen.
Charles Madere

1
@Vadorequest Sie können auch das Modul google-play-services-lib auswählen und die Datei google-play-services.jar als Modulabhängigkeit hinzufügen (! Zum Modul google-play-services-lib!)
Su-Au Hwang

2
Zusätzlich zu dieser Antwort (IntelliJ-spezifisch) müssen Sie, wenn Sie die Methoden / Klassen der Bibliotheken tatsächlich verwenden möchten, zu Datei> Projektstruktur> Modul google-play-services_lib> Abhängigkeiten auswählen und "Exportiert" aktivieren die google-play-services.jar
Su-Au Hwang

2
Zusammenfassung: Fügen Sie das libproject-Verzeichnis als Modul hinzu und machen Sie es zu einer Abhängigkeit von Ihrem Hauptprojekt, um den ganzzahligen Wert aus dem libproject-Verzeichnis
abzurufen

31

Ich hatte das gleiche Problem und anscheinend hat Eclipse die version.xmlDatei google-play-services_libbeim Erstellen einer Kopie in / res / values ​​aus dem ursprünglichen Projekt belassen . Ich habe die Datei aus dem Originalprojekt gezogen und in meine Kopie des Projekts eingefügt, und das Problem ist behoben.


Dies war die Lösung, die mich auch repariert hat. Es ist ein unglaubliches Versehen von Google, wenn Sie mich fragen.
Henrique de Sousa

Danke Kumpel, das hat mein Problem behoben
Fabii

1
Dies hat mein Problem behoben. Warum hat der Eclipse-Import diese Datei übersprungen? Irgendeine Ahnung?
nizam.sp

24

Unter Eclipse habe ich nach dem Importieren der Google Play-Bibliothek in den Projektarbeitsbereich gerade die Datei version.xml kopiert

google-play-services_lib/res/values/version.xml

zu

MyProjectName/res/values/version.xml

3
Dies funktioniert, aber das Problem ist, dass das Upgrade auf eine neuere Version der Google Play Services-Bibliothek etwas ärgerlicher ist. Sie müssen die version.xmlDatei wahrscheinlich bei jedem Upgrade ersetzen .
Charles Madere

20

Für alle, die gradle verwenden: Geben Sie die Projektquelle nicht an, sondern laden Sie sie stattdessen mit SDK Manager herunter und fügen Sie diese Zeile zu den Abhängigkeiten hinzu:

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

Nur dass es es nicht findet: Fehler: Beim Konfigurieren des Projekts ': app' ist ein Problem aufgetreten. > Es konnten nicht alle Abhängigkeiten für die Konfiguration ': app: _debugCompile' aufgelöst werden. > Es konnte keine Version gefunden werden, die mit com.google.android.gms übereinstimmt: play-services: 6.1. +. An folgenden Orten gesucht: jcenter.bintray.com/com/google/android/gms/play-services/… jcenter.bintray.com/com/google/android/gms/play-services
matteo

Datei: /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml Datei: / home / teo / Documents / programmi / android-studio-new / sdk / extras / android / m2repository / com / google / android / gms / play-services / Erforderlich von: xxxxxxx: app:
unspecified

Der Pfad, in dem nach der Bibliothek gesucht wird, scheint nicht mit dem Speicherort übereinzustimmen, an den der SDK-Manager sie tatsächlich heruntergeladen hat, aber selbst nach dem Erstellen eines symbolischen Links ist das Problem nicht behoben. Ich glaube, ich kann nicht herausfinden, welche Datei oder welcher Ordner genau gefunden werden muss. Irgendeine Idee?
Matto

1
Um zu sehen, welche Versionen Sie haben: "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". Führen Sie den SDK-Manager aus und aktualisieren Sie die gewünschten Komponenten, um neuere Versionen zu erhalten. Leg dich nicht mit Symlinks an.
Sofi Software LLC

12
  1. Installieren Sie "Google Play Services" und "Google Repository" vom Android SDK Manager.
  2. Fügen Sie die Zeile compile 'com.google.android.gms:play-services:4.1.32@aar'zu Ihrem hinzu build.gradle.
  3. Als Ergebnis wird die Ressource @integer/google_play_services_versionverfügbar sein.

1
Ich habe diese Kompilierung 'com.google.android.gms: play-services: 4.4.52'
hinzugefügt

das hat es für mich getan. Niemand hat veröffentlicht, wie das Endergebnis des Abhängigkeitsabschnitts in build.gradle aussah ... das wäre hilfreich gewesen
snowking16

10

Es fühlt sich an, als wäre Ihr Projekt mit einer älteren Version des Play Services-Bibliotheksprojekts verbunden. Der von Google empfohlene Ansatz besteht darin, das Bibliotheksprojekt im SDK zu finden und eine lokale Kopie zu erstellen. Dies bedeutet jedoch, dass Sie jedes Mal, wenn Sie das Play Services-Bibliotheksprojekt über den SDK-Manager aktualisieren, Ihre Kopie durch eine neue Kopie ersetzen müssen.


Ja, ich habe die Bibliothek in mein Projekt integriert, indem ich eine Kopie der mit dem Android SDK Manager heruntergeladenen Dateien in mein Arbeitsverzeichnis gestellt habe. Außerdem habe ich die Bibliothek auf dieselbe Weise auf diese neue Version aktualisiert (indem ich die Dateien aus dem Android SDK-Verzeichnis kopiert und die vorhandenen in meinem Projekt überschrieben habe).
Charles Madere


7

Nach dem Update auf die letzte Version hatte ich dieses Problem mit allen meinen Projekten, aber es wurde gelöst, indem ich erneut die Bibliotheksreferenz hinzufügte:

Wenn Sie die Bibliothek in Eclipse nicht in Ihrem Arbeitsbereich haben, können Sie sie hinzufügen mit: File-> Import-> Existing Android Code Into Workspace-> Durchsuchen und navigieren Sie zu google-play-services_libproject lib, ( android-sdk/extras/google/google_play_services/libproject).

Geben Sie hier die Bildbeschreibung ein

Löschen /binund dann /genOrdner meines Projekts (ähnlich der Option "Bereinigen") und erneutes Erstellen meines Projekts.


aber das macht die apk 5mb schwerer
Siddharth

6

Für Eclipse gelöst

Befolgen Sie die folgenden Schritte:

  1. Importieren Sie den Ordner google-play-services_lib als Projekt, indem Sie import-> Vorhandenen Android-Code in den Arbeitsbereich verwenden
  2. Wählen Sie in den Projekteigenschaften unten den Abschnitt Android aus. Klicken Sie im Abschnitt Bibliothek auf Hinzufügen und wählen Sie die google-play-services_lib aus. Übernehmen Folgen Sie dem Link http://i.stack.imgur.com/opSeJ.png , um den Screenshot anzuzeigen

Mein google-play-services_libwar inF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti

5

Auf der Android Developer-Website von Google finden Sie Anweisungen zum "Hinzufügen von Google Play Services zu Ihrem Projekt" sowie Informationen zum Aktualisieren der Play Services-Version. Es gibt sogar ein Dropdown-Menü, in dem Anweisungen für Eclipse, Android Studio oder "Etwas anderes" angezeigt werden. Dies ist der beste Ort, um Anweisungen anzuzeigen, falls sie sich ändern. Die Seite ist hier:

http://developer.android.com/google/play-services/setup.html

Da die meisten Antworten hier für Eclipse gelten, finden Sie hier eine kurze Zusammenfassung zum Aktualisieren von Play Services mit Android Studio

  1. Öffnen Sie die Datei build.gradle in Ihrem Anwendungsmodulverzeichnis. Hinweis: Android Studio-Projekte enthalten für jedes Modul eine build.gradle-Datei der obersten Ebene und eine build.gradle-Datei. Stellen Sie sicher, dass Sie die Datei für Ihr Anwendungsmodul bearbeiten.
  2. Aktualisieren Sie die Erstellungsregel unter "Abhängigkeiten", um auf die Version der Wiedergabedienste zu verweisen, die Sie auf Ihren Entwicklungscomputer heruntergeladen haben.

Die Versionsnummer für die Version der Wiedergabedienste, die Sie auf Ihren Entwicklungscomputer heruntergeladen haben, finden Sie in Ihrem Ordner \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services, wie hier erläutert : Wie kann ich eine Google Play Services-Version mit einer Installationsversion abgleichen?


Endlich eine gute, klare Antwort für Android-Anfänger. Diese Antwort sollte höher platziert werden.
Jelle

4

Für Eclipse habe ich gerade einen Projektverweis auf die google-play-services_lib hinzugefügt in:

Eigenschaften-Android Stellen Sie im Bibliotheksbereich (unterer Bereich) sicher, dass die google-play-services_lib aufgelistet ist. Wenn nicht, klicken Sie auf die Schaltfläche Hinzufügen .. und wählen Sie google-play-services_lib aus.


3

Ich hatte das gleiche Problem, die version.xml-Datei befand sich nicht in google-play-services_lib. Starten Sie einfach Ihren SDK-Manager und akzeptieren Sie das Update, insbesondere die Dinge, die mit "Extras" zu tun haben.


2

Überprüfen Sie beim Importieren der google-play-services_lib den in AndroidManifest.xml und version.xml definierten Versionscode. Ich hatte den Unterschied im Versionscode gefunden und ihn in 4242000 geändert . Nach der Änderung tritt in @ integer / google_play_services_version kein Kompilierungsfehler mehr auf .Geben Sie hier die Bildbeschreibung ein


2
Dies ist kein guter Weg, dies zu tun. Sie müssen jedes Mal manuell aktualisieren, wenn Sie Google Play Services aktualisieren.
PSchuette

2

Behoben durch Hinzufügen von Google Play Services zu meinem Modul: App Gradle Build-Datei. In der Dokumentation wird auch angegeben, dass die Version aktualisiert werden soll, wenn Sie GMS aktualisieren.

dependencies {

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

} 

1

Im Folgenden sind die wichtigsten Aktionen aufgeführt, mit denen viele Fehler bei der Verwendung des Google Play-Dienstes Lib vermieden werden:

  1. Stellen Sie sicher, dass Sie das lib-Projekt in den Arbeitsbereich von Eclipse-Projekten kopieren.
  2. Das Ziel-SDK für das Google Play Service Lib-Projekt sollte "Google" sein
  3. API "3- Metadaten sollten zur Manifestdatei hinzugefügt werden.
  4. Ihr Projektziel-SDK sollte 17 sein, es sei denn, Sie haben vollständig auf 19 aktualisiert, da 19 in einigen Fällen nicht gut funktioniert.

1

Ich hatte das gleiche Problem mit einem Projekt mit Maven und IntelliJ. Google Play-Dienste werden als Maven-Abhängigkeit hinzugefügt. Der Maven-Build funktionierte gut über die Befehlszeile, aber IntelliJ beschwerte sich über dieses fehlende Symbol@integer/google_play_services_version

In meinem Fall habe ich ein Update der Maven-POM-Dateien erzwungen und das Problem behoben.


1

In meinem Fall musste ich den Ordner "google-play-services_lib" im selben DRIVE der Quellcodes meiner Apps kopieren

  • F: \ Produkte \ Android \ APP * .java <- Meine Apps sind hier, also habe ich sie in den folgenden Ordner kopiert
  • F: \ Produkte \ Android \ libs \ google-play-services_lib

1

Wenn Sie keine IDE verwenden, sondern Befehlszeilen-Builds (mit ant und ndk-build) verwenden, können Sie dies folgendermaßen lösen:

Installieren Sie alle erforderlichen Teile mit dem Befehl 'android'. Dann haben Sie eine Kopie von google-play-service_lib / in Ihrem Projektstamm. Bearbeiten Sie project.properties, um diese Zeile einzuschließen:

android.library.reference.1=./google-play-services_lib

Aber Sie müssen android update project -p . -t android-22auf google-play-services_liberste. Fügen Sie gleichwertig <property name="android.library.reference.1" value="./google-play-services_lib"/>zu Ihrem hinzu build.xml(ich habe mein minimiert build.xmlund das weggeworfen .properties).
Ciro Santilli 法轮功 冠状 病 六四 事件 14

0

Ich hatte das gleiche Problem. Das Problem war, dass die Datei "google-play-services.jar" nicht ordnungsgemäß in mein Projekt importiert wurde , obwohl sie Teil des Projekts "google_play_service_lib" war. Wenn Sie Eclipse verwenden, überprüfen Sie, ob Sie die JAR-Datei für Wiedergabedienste im Abschnitt "Private Bibliotheken für Android" sehen können und ob diese von der Bibliothek exportiert wird.

Ich verwende Android SDK-Plattform-Tools Version 17 (nicht 19) und Android SDK-Tools Version 22.0.1


0

Ich habe gerade die Google Play-Dienste im Ordner "Extras" im Android SDK-Manager aktualisiert


0

Das Problem für mich war, dass sich das Bibliotheksprojekt und das Projekt, das Spieldienste verwendet, in verschiedenen Verzeichnissen befanden. Also nur:

  • 1. Fügen Sie die Dateien demselben Arbeitsbereich hinzu und entfernen Sie die Bibliothek.
  • 2. Starten Sie Eclipse neu
  • 3. Fügen Sie das Bibliotheksprojekt erneut hinzu
  • 4. Löschen

0

Google schlägt vor, dass Sie kein Projekt direkt aus dem SDK-Verzeichnis erstellen. Es ist besser, das lib-Projekt an den Speicherort Ihrer App zu kopieren und von dort zu importieren. Andernfalls wird das Projekt beim nächsten Import für eine andere App bereits verwendet.

https://developer.android.com/google/play-services/setup.html

Hinweis: Sie sollten auf eine Kopie der Bibliothek verweisen, die Sie in Ihren Entwicklungsarbeitsbereich kopiert haben. Sie sollten nicht direkt aus dem Android SDK-Verzeichnis auf die Bibliothek verweisen.


0

Jeder, der 2017 nach der 10.0.1-Version von Play Services sucht, muss importiert werden play-services-basement(Verwendung in play-services-base).


Könnten Sie bitte etwas mehr erklären? Wie sehe ich aktuelle Abhängigkeiten und wie füge ich weitere hinzu?
Hassan Gulzar

Ich habe alles manuell und durch Versuch und Irrtum gemacht, als ich diese Antwort schrieb. Die Verwendung von Gradle machte die Sache viel einfacher.
Goobliata

0

Android Studio 3.3.2 unter Windows 10

Datei -> Caches ungültig machen / neu starten und invalidate and RestartSchaltfläche auswählen im Dialogfeld angezeigt .


0

Ich hatte das gleiche Problem, füge diese 2 Zeilen in dein build.gradle ein, das Problem wird wahrscheinlich behoben sein. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.