このエラーを解決するにはどうすればよいですか?
原因:Java.lang.illegalargumentexception 11-01 11:08:12.845:E/AndroidRuntime(28885):原因:Java.lang.IllegalStateException:アプリのAndroidManifest.xmlのメタデータタグに適切な値がありません。 4030500が必要ですが、0が見つかりました。要素内に次の宣言が必要です。
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();
}
完全なエラーログ:
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
マニフェストに次を追加する必要があります。
<application>
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
...
</application>
編集:
この情報は、logcatエラーメッセージと Google Play開発者サービスのセットアップ(Brais Gabinに感謝)
@ Benoit'aの答えには、私が追加の知識で答えている正確な解決策があります:
1。 Benoitが答えた1つの方法は、AndroidManifest.xml
のアプリケーションタグ内に以下を追加することです
<meta-data Android:name="com.google.Android.gms.version" Android:value="@integer/google_play_services_version" />
2。バージョンコードを直接追加できます。
<meta-data Android:name="com.google.Android.gms.version" Android:value="4030500" />
4030500は内部に保存されるバージョンコードです
google-play-services_lib> res> values> version.xml
好む
<integer name="google_play_services_version">4030500</integer>
結論:最新のGoogle Playサービスには、<meta-data .. />
内のAndroidManifest.xml
を使用して言及されるバージョン名が必要です。
注:第一の方法を使用することを強くお勧めします
あなたがその質問をしてから、いくつかのことが変わりました。 Google Play Services 7.0以降を使用している場合、Gradleはマニフェストを自動的にマージし、必要なメタデータを含めます。
引用 イアン湖 :
(...)Gradleを使用している場合、Google Play Services 7.0にはもう1つの時間節約機能もあります。
<meta-data Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version"/>
androidManifest.xmlのエントリ-手動で追加する必要はありません!ライブラリが必要なメタデータ、レシーバー、パーミッション、その他必要なものを追加できるシンプルなマニフェストマージの完璧な例-忘れてはならないことはもう1つ!
注:これは、完全なplay-servicesまたはplay-services-all-wear AARには適用されません。これは、グラニュラーAARのみに組み込まれています。
既存のプロジェクトをEclipseからAndroid Studioにインポートしました。EclipseプロジェクトではIntegers.xml
には次のようにハードコードされた値が含まれていました
<integer name="google_play_services_version">5089000</integer>
Android StudioによってビルドされているPlay Servicesの最新バージョンとバージョンの競合が発生します。 Integers.xml
からこの行を削除した後、それは私のために働き始めました。
「アプリケーション」のAndroidManifest.xmlに以下の2つのメタデータタグを必ず追加してください。
<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"/>
このソリューションは私のために働いた。
それでもエラーが発生する場合は、これを試してください。
それは私のために働いた
<meta-data
tools:replace="Android:value"
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
Googleサービスの付属コピーのres/valuesフォルダーに「version.xml」ファイルを作成し、コードを貼り付けました。
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<integer name="google_play_services_version">4030500</integer>
</resources>
元のコピーはファイルを逃し、それは私の問題を解決しました