原因: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.access0(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
#1 楼
您需要在清单中添加以下内容:<application>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
...
</application>
编辑:
此信息可以在logcat错误msg以及关于设置Google Play服务(感谢Brais Gabin)
评论
@ErichDouglass是的。设置一个使用Google Play服务的项目。带有参考源的答案总是更好;)。
–布莱斯·加宾(Brais Gabin)
2013年12月3日,12:30
来源的Thx,但是如果您仔细查看logcat,也可以在此处获取信息
–天赋
2013年12月5日,9:30
@Benoit嗨,我遵循了这个答案,但出现了一条logcat错误,提示您使用清单服务的应用程序标签中的使用Google Play服务需要名称为“ com.google.android.gms.games.APP_ID”的元数据标签
– Ogen
2014年1月17日在1:24
元数据标签更多,这一标签看起来像您正在使用特定于服务的游戏部分的标签。检查他们的文件
–天赋
2014年1月17日9:55
您需要在清单中同时包含两个
–拉杰·特里维迪(Raj Trivedi)
2014年1月29日10:00
#2 楼
@ Benoit'a答案具有确切的解决方案,我在回答时会附带其他知识:1。 Benoit回答的一种方法是在
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
来提及注意:我强烈建议您使用第一种方法
评论
@JanshairKhan google-play-services_lib> res> values> version.xml
–泰森·辛格(Tarsem Singh)
2013年12月3日12:00
以前,我在清单中包含此元数据标记:android:name =“ com.google.android.maps.v2.API_KEY” android:value =“ AIzaSyC2IpI158TISY8sV6DyJUkIFv-L_kGpkwE” />我收到了此错误。应用程式的AndroidManifest.xml中的值不正确。我现在收到此错误,因此更改了meta标签:原因:java.lang.RuntimeException:找不到API密钥。检查
– ozmank
2014年2月15日在21:10
#3 楼
自从您问了这个问题以来,有些事情发生了变化。如果您使用的是Google Play服务7.0或更高版本,Gradle会自动合并清单并为您提供所需的元数据。引用Ian Lake:
(...)Google Play服务
7.0如果您正在使用Gradle,还具有另一项省时功能:它自动包含
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<为您的AndroidManifest.xml中的br />
条目-无需手动添加
!完美的简单清单合并示例,库可以在其中添加所需的元数据,接收者,权限以及它们需要的其他任何内容
-一件值得忘记的事情!这不适用于完整的play-services或
play-services-all-wear AAR-只有粒状AAR内置了此
。
#4 楼
我确实在附带的Google服务副本的res / values文件夹中创建了一个文件“ version.xml”,并粘贴了代码:文件,它确实解决了我的问题评论
-1错误做法,因为您可能拥有其他版本的播放服务
–天赋
2013年12月24日20:41在
#5 楼
只需确保将以下两个元数据标签添加到“您的”应用程序的AndroidManifest.xml中即可。<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"/>
此解决方案对我有用。
评论
这个答案对一年多来已经存在并被接受的答案没有任何意义。
–墨菲
2015年4月8日19:55
也许吧 。但是我关注了这个帖子,我感到困惑。我们在Google Play服务库的清单文件中也有
–vaaa
2015年4月8日在21:58
@vaaa:您最好将这种解释有机地纳入答案;评论是相当随意的。
–内森·塔吉(Nathan Tuggy)
2015年4月9日,1:12
Atleast,我发布的东西比立即发表评论更好。。。这个博客不是要发布您的编码经验,它可以是任何形式的评论或答案。 :)
–vaaa
2015年4月9日下午6:43
#6 楼
我将现有项目从Eclipse导入到Android Studio中,在Eclipse项目Integers.xml
中包含如下所示的硬编码值<integer name="google_play_services_version">5089000</integer>
,导致版本冲突与正在构建的Play服务的最新版本Android Studio。从
Integers.xml
删除此行后,它开始为我工作。#7 楼
如果仍然有错误,请尝试使用此方法。它对我有用。
#8 楼
关闭<meta-data>
标签后添加<application>
。这解决了我的问题
评论
自今天发布的最新Android SDK工具更新以来,我也有这个功能如果您阅读完整的错误消息,它会有所帮助,因为从期望的角度来看,它实际上非常清楚。您可以直接将其复制粘贴到应用程序项目的清单中。
或安装并使用“适用于Froyo的Google Play服务”