После обновления службы Google Play до версии 13 я получил ошибку

Как я могу решить эту ошибку?

Вызвано: 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 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 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>

EDIT:

Эта информация может быть найдена в сообщении об ошибке logcat, а также в Настройка сервисов Google Play (спасибо Brais Gabin)

Ответ 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-игра-services_lib > Рез > значения > version.xml

Как

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

Заключение: для последних сервисов google play требуется имя версии, которое должно быть указано с помощью <meta-data .. /> внутри AndroidManifest.xml

Примечание: Я бы настоятельно рекомендовал использовать 1-й способ

Ответ 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 для вас - нет необходимости вручную добавлять Это! Прекрасный пример простого слияния манифеста, где библиотеки могут добавлять необходимые метаданные, приемники, разрешения и все остальное, что они нужна была - еще одно дело забыть!

Примечание: это не относится к полным игровым сервисам или play-services-all-wear AARs - только гранулированные AARs имеют это встроенное в.

Ответ 4

Просто не забудьте добавить ниже двух тегов метаданных в ваше приложение 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"/>

Это решение сработало для меня.

Ответ 5

Я импортировал свой существующий проект из Eclipse в Android Studio, а проект Eclipse Integers.xml содержал жестко заданное значение, как показано ниже.

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

вызывает конфликт версий с последней версией Play Services, создаваемой Android Studio. после удаления этой строки из Integers.xml он начал работать для меня.

Ответ 6

Я создал файл "version.xml" в папке res/values ​​включенной копии google-сервисов и вставил код:

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

оригинальная копия пропустила файл и решила мою проблему

Ответ 7

Если у вас все еще есть ошибка, попробуйте это.

это сработало для меня

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

Ответ 8

Добавьте <meta-data> после закрытия тега <application>. Это решило мою проблему