web-dev-qa-db-fra.com

Après la mise à jour du service Google Play vers la version 13, une erreur s'est produite.

Comment puis-je résoudre cette erreur?

Causée par: Java.lang.illegalargumentexception 11-01 11: 08: 12.845: E/AndroidRuntime (28885): Causée par: Java.lang.IllegalStateException: la balise de méta-données dans AndroidManifest.xml n'a pas la valeur correcte. . Attendu 4030500 mais trouvé 0. Vous devez avoir la déclaration suivante dans l'élément:


Manifeste de google-play-services_lib:

<?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();
}


Journal des erreurs complet:

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
70
Igor Kostenko

Vous devez ajouter ce qui suit dans votre manifeste:

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

MODIFIER:

Cette information peut être trouvée dans le message d'erreur logcat ainsi que sur Configuration des services Google Play (Merci Brais Gabin)

154
Benoit

@ Benoît'a réponse a une solution exacte je réponds avec des connaissances supplémentaires:

1. L'une des réponses de Benoit est d'ajouter la balise suivante à l'intérieur de l'application, AndroidManifest.xml

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

2. on peut directement ajouter le code de version comme

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

4030500 est le code de version qui est stocké à l'intérieur

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

Comme

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

Conclusion: les derniers services de Google Play nécessitent un nom de version, qui doit être mentionné à l'aide de <meta-data .. /> à l'intérieur AndroidManifest.xml

Note: Je recommande fortement d'utiliser la 1ère voie

23
Tarsem Singh

Certaines choses ont changé depuis que vous avez posé cette question. Si vous utilisez les services Google Play 7.0 ou plus récents, Gradle fusionnera automatiquement les manifestes et inclura les métadonnées nécessaires.

Citant Ian Lake :

(...) Les services Google Play 7.0 disposent également d’une autre fonction permettant d’économiser du temps si vous utilisez Gradle: elle inclut automatiquement

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

entrée dans votre AndroidManifest.xml pour vous - pas besoin de l'ajouter manuellement! Exemple parfait de fusion simple d'un manifeste, où les bibliothèques peuvent ajouter les métadonnées, les destinataires, les autorisations et tout ce dont elles ont besoin - une chose de moins à oublier!

Remarque: ceci ne s'applique pas aux AAR complets de services de jeu ni aux AARs de services de jeu - seuls les AAR granulaires intègrent cette fonctionnalité.

4
EyesClear

J'ai importé mon projet existant d'Eclipse vers Android Studio, projet Eclipse Integers.xml contenait la valeur codée en dur comme suit

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

provoquant un conflit de version avec la dernière version de Play Services construite par Android Studio. après la suppression de cette ligne de Integers.xml ça a commencé à marcher pour moi.

2
Aqib Mumtaz

Assurez-vous simplement d'ajouter les deux balises de méta-données ci-dessous à l'AndroidManifest.xml de votre application.

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

Cette solution a fonctionné pour moi.

2
vaaa

Si vous rencontrez toujours une erreur, essayez celui-ci.

cela a fonctionné pour moi

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

J'ai créé un fichier "version.xml" dans le dossier res/values ​​de la copie incluse de google services et ai collé le code:

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

la copie originale a manqué le fichier et cela a résolu mon problème

1
user3072712