Nach dem Update des Google Play Service auf Version 13 ist ein Fehler aufgetreten

70

Wie kann ich diesen Fehler beheben?

Auslöser: java.lang.illegalargumentexception 11-01 11: 08: 12.845: E / AndroidRuntime (28885): Auslöser: java.lang.IllegalStateException: Das Metadaten-Tag in der AndroidManifest.xml Ihrer App hat nicht den richtigen Wert . Erwartet 4030500, aber gefunden 0. Sie müssen die folgende Deklaration innerhalb des Elements haben:


google-play-services_lib Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms"
    android:versionCode="4030530"
    android:versionName="4.0.30 (889083-30)" >

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

</manifest>


public void loginGooglePlus() {
    aHelper.setup(this, GameHelper.CLIENT_APPSTATE | GameHelper.CLIENT_GAMES);
    mHelper = aHelper.getAppStateClient();
    //crash is here
    mHelper.connect();
}


Vollständiges Fehlerprotokoll:

11-01 11:38:13.507: E/AndroidRuntime(31297): FATAL EXCEPTION: main
11-01 11:38:13.507: E/AndroidRuntime(31297): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company.application.android.aja/com.company.application.android.aja.BeetleBattleAndroidActivity}: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4030500 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2077)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.ActivityThread.access$600(ActivityThread.java:134)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.os.Looper.loop(Looper.java:154)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.ActivityThread.main(ActivityThread.java:4624)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at java.lang.reflect.Method.invokeNative(Native Method)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at java.lang.reflect.Method.invoke(Method.java:511)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:965)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:732)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at dalvik.system.NativeStart.main(Native Method)
11-01 11:38:13.507: E/AndroidRuntime(31297): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4030500 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.google.android.gms.internal.de.connect(Unknown Source)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.google.android.gms.appstate.AppStateClient.connect(Unknown Source)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.company.application.android.aja.BeetleBattleAndroidActivity.loginGooglePlus(BeetleBattleAndroidActivity.java:153)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at com.company.application.android.aja.BeetleBattleAndroidActivity.onCreate(BeetleBattleAndroidActivity.java:143)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.Activity.performCreate(Activity.java:4509)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
11-01 11:38:13.507: E/AndroidRuntime(31297):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2041)
11-01 11:38:13.507: E/AndroidRuntime(31297):    ... 11 more
Igor Kostenko
quelle
1
Ich habe dies auch seit dem neuesten Android SDK Tools-Update, das heute veröffentlicht wird
Ivo Beckers
7
Es ist hilfreich, wenn Sie die vollständige Fehlermeldung lesen, da tatsächlich ziemlich klar ist, was erwartet wird. Sie können es kopieren und direkt in das Manifest Ihres App-Projekts einfügen.
MH.
2
Oder installieren und verwenden Sie die "Google Play Services für Froyo"
Tim

Antworten:

154

Sie müssen Folgendes in Ihr Manifest aufnehmen:

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

BEARBEITEN:

Diese Informationen finden Sie in der Logcat-Fehlermeldung sowie unter Einrichten der Google Play-Dienste (Danke Brais Gabin).

Benoit
quelle
4
@ErichDouglass ja, das ist es. Richten Sie ein Projekt ein, das Google Play Services verwendet . Eine Antwort mit einer Quellenreferenz ist IMMER besser;).
Brais Gabin
Danke für die Quelle, aber wenn Sie sich den Logcat genau ansehen, können Sie dort auch die Informationen erhalten
Benoit
2
@Benoit Hallo, ich bin dieser Antwort gefolgt und habe einen Logcat-Fehler erhalten, der besagt, dass für die Verwendung von Google Play-Diensten ein Metadaten-Tag mit dem Namen "com.google.android.gms.games.APP_ID" im Anwendungs-Tag Ihres Manifests erforderlich ist
Ogen
Es gibt mehr Metadaten-Tags. Dieses sieht so aus, als würden Sie etwas verwenden, das für den Spieleteil der Dienste spezifisch ist. Überprüfen Sie ihre Dokumentation
Benoit
Sie müssen beide <Metadaten /> im Manifest haben. 1.für den Goolge-API-Schlüssel 2.für google_play_services_version.
Raj Trivedi
23

@ Benoit'a Antwort hat genaue Lösung Ich antworte mit zusätzlichem Wissen:

1. Eine Möglichkeit, wie Benoit antwortete, ist das Hinzufügen des folgenden Anwendungs-Tags vonAndroidManifest.xml

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

2. Wir können den Versionscode direkt wie hinzufügen

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

4030500 ist der Versionscode, der im Inneren gespeichert ist

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

Mögen

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

Fazit: Für die neuesten Google Play-Dienste ist ein Versionsname erforderlich, der im <meta-data .. />Inneren erwähnt werden sollAndroidManifest.xml

Hinweis: Ich würde dringend empfehlen, den 1. Weg zu verwenden

Tarsem Singh
quelle
@ JanshairKhangoogle-play-services_lib>res>values>version.xml
Tarsem Singh
Zuvor hatte ich dieses Metadaten-Tag im Manifest: android: name = "com.google.android.maps.v2.API_KEY" android: value = "AIzaSyC2IpI158TISY8sV6DyJUkIFv-L_kGpkwE" /> Ich erhielt diesen Fehler. Das Metadaten-Tag in der AndroidManifest.xml Ihrer App hat nicht der richtige Wert. Ich habe das Meta-Tag geändert. Jetzt wird mir der Fehler angezeigt: Verursacht durch: java.lang.RuntimeException: API-Schlüssel nicht gefunden. Überprüfen Sie, ob <Metadaten android: name = "com.google.android.maps.v2.API_KEY" android: value = "Ihr API-Schlüssel" /> im Element <application> von AndroidManifest.xml
ozmank
4

Ein paar Dinge haben sich geändert, seit Sie diese Frage gestellt haben. Wenn Sie Google Play Services 7.0 oder höher verwenden, führt Gradle Manifeste automatisch zusammen und enthält die erforderlichen Metadaten für Sie.

Unter Berufung auf Ian Lake :

(...) Google Play Services 7.0 bietet außerdem eine weitere zeitsparende Funktion, wenn Sie Gradle verwenden: Sie enthält automatisch die

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

Eintrag in Ihrer AndroidManifest.xml für Sie - Sie müssen ihn nicht manuell hinzufügen! Perfektes Beispiel für eine einfache Manifest-Zusammenführung, bei der Bibliotheken die erforderlichen Metadaten, Empfänger, Berechtigungen und alles andere hinzufügen können, was sie benötigen - eine Sache weniger, die Sie vergessen sollten!

Hinweis: Dies gilt nicht für die vollständigen Play-Services- oder Play-Services-All-Wear-AARs. Dies ist nur in den granularen AARs integriert.

EyesClear
quelle
2

Ich habe eine Datei "version.xml" im Ordner res / values ​​der enthaltenen Kopie der Google-Dienste erstellt und den Code eingefügt:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<integer name="google_play_services_version">4030500</integer>
</resources>

Die Originalkopie hat die Datei übersehen und mein Problem gelöst

user3072712
quelle
1
-1 schlechte Praxis, da Sie möglicherweise eine andere Version der Spieldienste haben
Benoit
2

Stellen Sie einfach sicher, dass Sie die folgenden zwei Metadaten-Tags zur AndroidManifest.xml Ihrer Anwendung hinzufügen

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

Diese Lösung hat bei mir funktioniert.

vaaa
quelle
Diese Antwort fügt der bereits vorhandenen und akzeptierten Antwort von vor mehr als einem Jahr nichts Sinnvolles hinzu.
Mephy
Ja vielleicht . Aber ich folgte dem Beitrag und wurde verwirrt. Wir haben <Metadaten android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" /> auch in der Manifestdatei von google play service lib. Jemand, der Anfänger ist, kann verwirrt sein, ob er dieses Tag in die androidManifest.xml der eigenen App einfügt oder nicht (da es bereits in der Google Play Service-Bibliothek verfügbar ist, die zu unserer Projektbibliothek hinzugefügt wird, kann dies zu Duplikaten führen). Ich hoffe, dass diese beiden Aussagen mehr Klarheit über bestehende und akzeptierte Antworten geben. :)
Vaaa
@vaaa: Du solltest diese Erklärung besser organisch in die Antwort einarbeiten. Kommentare sollen ziemlich verfügbar sein.
Nathan Tuggy
Zumindest habe ich ein besseres Zeug gepostet als das, was sofort als Kommentar gepostet wird ... Dieser Blog ist nicht dazu gedacht, Ihre Codierungserfahrungen zu veröffentlichen, er kann in irgendeiner Form Kommentare oder Antworten sein. :)
Vaaa
2

Ich habe mein vorhandenes Projekt von Eclipse nach Android Studio importiert. In Eclipse Integers.xmlenthielt das Projekt den folgenden fest codierten Wert

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

Dies führt zu Versionskonflikten mit der neuesten Version von Play Services, die von Android Studio erstellt wird. Nachdem Integers.xmlich diese Zeile entfernt hatte , fing sie an, für mich zu arbeiten.

Aqib Mumtaz
quelle
1

Wenn Sie immer noch einen Fehler haben, versuchen Sie diesen.

es hat bei mir funktioniert

<meta-data
    tools:replace="android:value"
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
Ahmed Mujtaba
quelle
-1

Fügen Sie <meta-data>nach dem Schließen - <application>Tag. Dies löste mein Problem

Assasin_ng
quelle