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
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)
@ 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
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é.
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.
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.
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" />
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