42 votes

Mise à jour des services Google Play

Hier, l'API 19 est sortie, j'ai donc mis à jour le SDK et les autres (y compris les services Google Play). maintenant cette méthode :

private boolean isGooglePlayInstalled(){
    int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if(status == ConnectionResult.SUCCESS){
        return true;
    }else{
        ((Dialog)GooglePlayServicesUtil.getErrorDialog(status, this,10)).show();
    }
    return false;
}

Jette à la ligne

int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

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" />

Comment réparer cela ? Je n'avais pas d'élément

"com.google.android.gms.version"dans le manifeste avant et ça a marché.

C'est mon manifeste :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sabatsoft.driveit"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.sabatsoft.driveit.activity.Start"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- other activities -->

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIza*********************************1MZI" />
    </application>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

</manifest>

62voto

BostonGeorge Points 518

Cela a marché pour moi :

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

Placez-la à la fin de votre manifeste, après votre balise de métadonnées Map API key. Puisque vous vérifiez la disponibilité de GPlayServices dans votre méthode onCreate, par exemple :

// Check status of Google Play Services
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

// Check Google Play Service Available
try {
    if (status != ConnectionResult.SUCCESS) {
        GooglePlayServicesUtil.getErrorDialog(status, this, RQS_GooglePlayServices).show();
    }
} catch (Exception e) {
    Log.e("Error: GooglePlayServiceUtil: ", "" + e);
}

...puis une fois que vous aurez cliqué sur la boîte de dialogue pour mettre à jour GPlayServices, vous serez amené au GPlayStore. Habituellement, je désinstalle à partir du menu GPlayStore, puis l'option de mise à jour sera disponible. Cela devrait fonctionner après cela.

21voto

Saran Points 1186

Comparaison du contenu des paquets

Le projet de librairie "google_play_services_froyo" contient les éléments suivants com.google.android.gms paquets :

  • appstate
  • authentification
  • commun
  • dynamique
  • jeux
  • gcm
  • interne
  • emplacement
  • cartes
  • panorama
  • plus

D'un autre côté, le nouveau projet de librairie (rev. 13) "google_play_services" a un certain nombre d'avantages. supplémentaire paquets au sein de com.google.android.gms :

  • annonces
  • appstate
  • authentification
  • commun
  • dynamique
  • jeux
  • gcm
  • interne
  • emplacement
  • cartes
  • panorama
  • plus
  • Portefeuille

De plus, ce paquet se trouve dans le nouveau (rev. 13) "google_play_services" : com.google.ads !

Comparaison de AndroidManifext.xml

L'ancien (rev. 12) "google_play_services" avait :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms"
    android:versionCode="3265130"
    android:versionName="3.2.65 (834000-30)" >

    <uses-sdk android:minSdkVersion="8"/>

</manifest> 

Le nouveau projet de librairie "google_play_services_froyo" a été introduit :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms"
    android:versionCode="3225130"
    android:versionName="3.2.25 (761454-30)" >

    <uses-sdk android:minSdkVersion="8"/>

</manifest>

Conclusion

Le projet "google_play_services_froyo" est fonctionnellement le même que l'ancien projet de librairie "google_play_services" (rev. 12), donc si vous voulez simplement garder votre application compatible et que vous ne vous souciez pas des nouvelles API, importez simplement le projet "google_play_services_froyo" dans votre projet et vous êtes prêt à partir.

D'autre part, si vous voulez utiliser le nouveau projet de librairie "google_play_services" (rev. 13), une fois que vous l'avez importé, vous devez l'ajouter à votre manifeste d'applications :

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

J'espère que cela vous a aidé :)

10voto

gian1200 Points 1766

Cela m'est arrivé hier. J'avais juste besoin d'ajouter ça dans le manifeste :

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

0voto

vamshi palutla Points 46

J'ai résolu mon problème de la même façon avec

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

0voto

Nantha kumar Points 9

Vous devez ajouter la ligne suivante dans le fichier manifest.
J'espère que ça va marcher.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X