web-dev-qa-db-fra.com

NoClassDefFoundError dans la bibliothèque Google Play Services V2

J'obtiens l'exception suivante lorsque j'essaie d'utiliser la bibliothèque Google Play Services V2 après avoir suivi le tutoriel officiel .

Java.lang.NoClassDefFoundError: com.google.Android.gms.R$string
at com.google.Android.gms.common.GooglePlayServicesUtil.b(Unknown Source)
at com.google.Android.gms.common.GooglePlayServicesUtil.a(Unknown Source)
at com.google.Android.gms.common.GooglePlayServicesUtil.getErrorDialog(Unknown Source)

Où est-ce que je me suis trompé?

46
keyboardsurfer

La version 2 comprend des ressources et doit être importée en tant que projet de bibliothèque. Voir les instructions sur http://developer.Android.com/google/play-services/setup.html pour savoir comment procéder dans divers IDE.

Les ressources sont destinées à GooglePlayServicesUtil.getErrorDialog (), qui demande à l'utilisateur d'installer, de mettre à jour, d'activer, etc. les services Google Play s'il n'est pas disponible sur l'appareil.

32
jham

J'ai également les mêmes problèmes une fois, j'ai suivi l'étape correctement et j'ai pu résoudre ce problème

Premièrement (Configurez votre projet à partir de la console développeur de Google) Allez à Console API - Code Google

Créer un projet comme indiqué dans les images enter image description here

Cliquez sur Créer puis vous demanderez d'ajouter un nom de projet comme indiqué

enter image description here

une fois que vous avez créé votre projet, il est temps de sélectionner le service que nous devons utiliser, dans ce cas, nous avons besoin de la carte Android v2 alors sélectionnez la Google Maps Android API v2 du service Comme indiqué, enter image description here

Accédez maintenant à Api Access et créez votre OAuth 2.0 .En fournissant votre nom de package et votre empreinte SHA1 dans les champs correspondants. enter image description here

une fois que vous avez terminé avec OAuth 2.0, nous sommes prêts à utiliser votre clé API enter image description here

Maintenant, créez un projet Android avec le même nom de package utilisé lors de la création du OAuth 2.0. Et vérifiez si vous avez le service google play dans Android SDK Manager, sinon installez le service google play. enter image description here

Après avoir installé Google playservice, vous trouverez une bibliothèque Google play dans Your Android YourSdkpath\extras\google\google_play_services. Importez ce projet dans votre espace de travail et donnez-le comme bibliothèque de réfraction à votre projet enter image description here

enter image description here

enter image description here

Après cela, placez les fichiers Java et xml correspondants dans votre projet).

MainActivity.Java

package yourpackage;//Package name used while creating the Api key


import com.google.Android.gms.common.ConnectionResult;
 import com.google.Android.gms.common.GooglePlayServicesUtil;
import com.google.Android.gms.maps.GoogleMap;
import com.google.Android.gms.maps.SupportMapFragment;

import Android.os.Bundle;
import Android.app.Activity;
import Android.app.Dialog;
import Android.support.v4.app.FragmentActivity;
import Android.view.Menu;

public class MainActivity extends FragmentActivity {
GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Getting status
    int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());

    // Showing status
    if(status==ConnectionResult.SUCCESS)
    {
        SupportMapFragment supportMapFragment = (SupportMapFragment) 
                getSupportFragmentManager().findFragmentById(R.id.map);

        // Getting a reference to the map
        googleMap = supportMapFragment.getMap();
    }
    else{

        int requestCode = 10;
        Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode);
        dialog.show();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

activity_main.xml

<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:id="@+id/map"
   Android:name="com.google.Android.gms.maps.SupportMapFragment"
   Android:layout_width="wrap_content"
   Android:layout_height="match_parent" />

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="yourpackage"
Android:versionCode="1"
Android:versionName="1.0" >

<uses-sdk
    Android:minSdkVersion="8"
    Android:targetSdkVersion="16" />
   <permission
    Android:name="yourpackage.permission.MAPS_RECEIVE"
    Android:protectionLevel="signature"/>

<uses-permission Android:name="yourpackage.permission.MAPS_RECEIVE"/>

<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>

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

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name="yourpackage.MainActivity"
        Android:label="@string/app_name" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
      <meta-data
        Android:name="com.google.Android.maps.v2.API_KEY"
        Android:value="YourAPIkey"/>

J'espère que cela vous aidera

34
Ramz

Pour Android Studio:

1) Ouvrir les paramètres du module:

2) Ajouter (importer) le module google_play_service_lib à partir du SDK

Picture

3) Module google_play_service_lib check en tant que bibliothèque

4) Ajouter la bibliothèque google_play_service.jar à partir du SDK

5) Terminer

Picture

11
Denis Dolgikh

Si vous avez déjà mis à niveau le SDK et obtenez une telle erreur, n'oubliez pas de:

  • utilisez la nouvelle version de google-play-services.jar si vous avez copié ce fichier dans votre projet Eclipse
  • set target = Android-19 in project.properties
  • pour les API plus récentes (j'utilise l'API 19), vous devrez peut-être ajouter le code suivant

AndroidManifest.xml

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

J'utilise également ourSdkpath\extras\google\google_play_services comme bibliothèque Eclipse importée comme décrit ci-dessus.

2
Damian

si vous utilisez

compile 'com.google.Android.gms:play-services:9.0.2'

changer en individuels tels que

compile 'com.google.Android.gms:play-services-location:9.0.2'

ajoutez également compile 'com.Android.support:multidex:1.0.1' si tu as multiDexEnabled=true

1
Dennis Djan

J'ai résolu cette erreur en cochant "Copier les projets dans l'espace de travail" lors de l'importation de la bibliothèque des services google play.
Plus d'informations ici: http://developer.Android.com/google/play-services/setup.html

1
Umberto

Je suis également confronté au même problème. Si vous exécutez votre application dans l'émulateur, il se peut que cette erreur se produise, car dans la plupart des émulateurs, Google PlayService (application Play Store) n'est pas installé.

Essayez donc d'exécuter votre application sur Android qui est l'application playService est installé.

Solution: - ajoutez le code de pièce d'erreur dans try...catch puis essayez, cela fonctionnera également dans l'émulateur.

Remarque: - Le service Google Messaging nécessite un service de palyservice. sinon, lancez l'erreur SERVICE_NOT_AVAILABLE

0
Mansukh Ahir

J'ai le même problème avec Android Studio lors de la construction d'un projet sans Gradle. Il peut y avoir un problème avec le nom du package dans AndroidManifest.xml dans le projet GooglePlayService. Il devrait être package = " com.google.Android.gms ".

Le problème apparaît lorsque j'ajoute un projet de bibliothèque sous la forme "Nouveau module" à la place "Module d'importation".

enter image description here

Lorsque vous choisissez Nouveau module, Android Studio affiche la boîte de dialogue pour spécifier "Nom du module" et "Nom du package" et par défaut "Nom du package" ressemble à "com.example.MODULE_NAME_YOU_SPECIFED" qui est - faux. Il est très facile de le manquer, car le projet se construit avec succès.

enter image description here

Lorsque vous ajoutez Library Project par "Import Module" tout devrait être OK, car Android Studio ajoutez simplement un projet sans apporter de modifications avec le code source de Library Project.

0
klimat