После обновления сервиса Google Play до версии 13 я получил сообщение об ошибке
как я могу решить эту ошибку?
вызвано: java.ленг.illegalargumentexception 11-01 11: 08: 12.845: E/AndroidRuntime(28885): вызвано: java.ленг.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
8 ответов:
вам нужно добавить в манифест следующее:
<application> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> ... </application>
EDIT:
эта информация может быть найдена в ошибке logcat msg, а также на Настройка Сервисов Google Play(Спасибо Brais Gabin)
@Benoit'a ответ имеет точное решение я отвечаю с дополнительными знаниями:
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
Примечание:я настоятельно рекомендую использовать 1-ый способ
несколько вещей изменилось с тех пор, как вы задали этот вопрос. Если вы используете Google Play services 7.0 или новее, Gradle автоматически объединит манифесты и включит необходимые метаданные для вас.
со ссылкой на Яна Озеро:
(...) Сервисы Google Play 7.0 также имеет еще одну функцию экономии времени, если вы используете Gradle: он автоматически включает в себя
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
запись в вашем AndroidManifest.XML для вас - нет нужно вручную добавить это! Прекрасный пример простого слияния Манифеста, где библиотеки могут добавьте необходимые метаданные, приемники, разрешения и все остальное сделанное нужно-одной вещью меньше забыть!
Примечание: это не относится к полным play-services или play-services-all-wear AARs - только гранулированные AARs имеют это построено в.
просто убедитесь, что вы добавили следующие два тега метаданных в 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"/>
Это решение работает для меня.
я импортировал свой существующий проект из Eclipse в Android Studio, в Eclipse project
Integers.xml
содержал жестко закодированное значение следующим образом<integer name="google_play_services_version">5089000</integer>
вызывая конфликт версий с последней версией Play Services, построенной Android Studio. после удаления этой строки из
Integers.xml
он начал работать на меня.
Я создал файл "версия.xml " в папку res / values включенной копии сервисов google и вставил код:
<?xml version="1.0" encoding="UTF-8"?> <resources> <integer name="google_play_services_version">4030500</integer> </resources>
оригинальная копия пропустила файл, и это решило мою проблему