web-dev-qa-db-fra.com

java.lang.noclassdeffounderror: com.google.Android.gms.R $ styleable

Je crée une application Android en utilisant Google Maps. Voici le code:

MapFragActivity.Java

 import Android.os.Bundle;
    import Android.support.v4.app.FragmentActivity;
    import com.google.Android.gms.maps.GoogleMap;
    import com.google.Android.gms.maps.SupportMapFragment;

    public class MapFragActivity extends FragmentActivity {

    private GoogleMap map;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map_frag);

        map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                .getMap();
     }
    }

AndroidManifest.xml:

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
        package="com.him.mapfrag_rnd"
        Android:versionCode="1"
        Android:versionName="1.0" >

        <uses-sdk
            Android:minSdkVersion="11"
            Android:targetSdkVersion="15" />


        <permission
            Android:name="com.him.mapfrag_rnd.permission.MAPS_RECEIVE"
            Android:protectionLevel="signature" />

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

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


        <application
            Android:icon="@drawable/ic_launcher"
            Android:label="@string/app_name"
            Android:theme="@style/AppTheme" >
            <activity
                Android:name=".MapFragActivity"
                Android:label="@string/title_activity_map_frag" >
                <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="my_api_key" />

        </application>

    </manifest>

activity_map_frag.xml:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:tools="http://schemas.Android.com/tools"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent" >

    <fragment
      Android:id="@+id/map"
      Android:name="com.google.Android.gms.maps.SupportMapFragment"
      Android:layout_width="match_parent"
      Android:layout_height="match_parent" />

    </RelativeLayout>

quand j'essaye ce code je reçois une erreur, voici le journal:

01-17 10:01:17.685: E/AndroidRuntime(8923): FATAL EXCEPTION: main
    01-17 10:01:17.685: E/AndroidRuntime(8923): Java.lang.NoClassDefFoundError: com.google.Android.gms.R$styleable
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at com.google.Android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at com.google.Android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.Java:279)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:669)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:739)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:489)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:396)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:352)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:272)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.Activity.setContentView(Activity.Java:1835)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at com.him.mapfrag_rnd.MapFragActivity.onCreate(MapFragActivity.Java:16)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.Activity.performCreate(Activity.Java:4470)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1052)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1931)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1992)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.ActivityThread.access$600(ActivityThread.Java:127)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1158)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.os.Handler.dispatchMessage(Handler.Java:99)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.os.Looper.loop(Looper.Java:137)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Android.app.ActivityThread.main(ActivityThread.Java:4511)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Java.lang.reflect.Method.invokeNative(Native Method)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at Java.lang.reflect.Method.invoke(Method.Java:511)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:986)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:753)
    01-17 10:01:17.685: E/AndroidRuntime(8923):     at dalvik.system.NativeStart.main(Native Method)

lorsque je modifie MapFragActivity.Java, la carte s’affiche. voici les changements:

package com.him.mapfrag_rnd;

    import Android.os.Bundle;
    import Android.support.v4.app.FragmentActivity;

    import com.google.Android.gms.maps.SupportMapFragment;

    public class MapFragActivity extends FragmentActivity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.activity_map_frag);
          SupportMapFragment fragment = new SupportMapFragment();
          getSupportFragmentManager().beginTransaction().add(Android.R.id.content, fragment).commit();
        }
    }

Le changement que j'ai fait est commenté le setContentView. J'ai suivi toutes les étapes requises et j'obtiens toujours une erreur. si décommenter la setContentView () alors encore une fois, je reçois l'erreur.

S'il vous plaît HELP !!!

53
Himanshu

Vous devez inclure une bibliothèque de services Google Play dans votre projet. Google a de très bonnes instructions ici:

En outre, il existe un démarrage rapide que j'ai trouvé très utile lorsque j'essaie de faire fonctionner Google Maps v2.

40
Michael

Si vous utilisez Intellij Idea,

  1. Sélectionnez votre projet depuis le panneau de projet
  2. Appuyez sur F4 pour ouvrir la fenêtre de structure de projet
  3. Sélectionnez Modules dans le panneau de gauche, puis appuyez sur le bouton + puis sélectionnez "module d'importation" et accédez à "SDK Android"/extras/google/google_play_services/libproject/google-play-services_lib. En faisant cela, ce projet sera ajouté aux Modules à côté de votre projet.
  4. Sélectionnez votre projet, puis sélectionnez "Dépendances" (c'est un onglet) dans le panneau de droite. Cliquez sur le bouton + puis sur "3 dépendances du module ..." et sélectionnez "google-play-services_lib".
  5. Cliquez à nouveau sur le bouton + puis sur "1 fichiers ou répertoires ..." et accédez au dossier "/ libs" dans le chemin ci-dessus, puis sélectionnez "google-play-services.jar".
  6. Cliquez sur ok et fermez la fenêtre de la structure du projet.

Note: Assurez-vous de ne pas avoir ajouté le projet "google-play-services_lib" en tant que bibliothèque dans "Bibliothèques" (panneau de gauche sous Modules). Si vous en avez un, vous pouvez aller à "Bibliothèques et simplement le supprimer. La bibliothèque Google Play ne doit pas apparaître dans les bibliothèques.

Note 2: Vous pouvez copier le répertoire entier google-play-services_lib dans votre propre projet si vous souhaitez l’avoir sous contrôle de version ou similaire.

75
Hesam

J'ai la même erreur. J'utilise Android Studio et Gradle, donc il n'y a pas beaucoup de choses à configurer ou à améliorer. J'ai presque tout fait mais tout ne fonctionnait pas pour moi. Le dernier fonctionne: remplacer le package en entier les services de jeu par les plus petits. Dans mon cas:

Remplacer (dans le fichier build.gradle):

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

par:

// Google Cloud Messaging
compile 'com.google.Android.gms:play-services-gcm:8.4.0'

// Google Location
compile 'com.google.Android.gms:play-services-location:8.4.0'
6
Tony

Je pense que vous devez importer toute la bibliothèque du service Google Play dans votre IDE, pas seulement le .jar

essayez-le ;-)

6
cesards

j'ai aussi eu cette erreur dans Android studio et j'avais déjà inclus les services de jeu alpha 3 avec gradé alpha5, ce que j'ai eu tort, c'est d'avoir inclus multidex.

en grade

multiDexEnabled true

et dans onCreate de la classe Application

MultiDex.install (this);

mais j'ai oublié de étend la classe d'applications avec MultiDexApplication

car MultiDexApplication n'a pas été étendu de sorte qu'il ne puisse pas inclure gms ni aucune autre classe dex, de sorte qu'il génère une erreur au démarrage de gms String.

Hope this aide

5
rcb13

J'ai résolu le problème en vérifiant d'abord que les services de lecture lib ont été ajoutés correctement et en ajoutant ces données dans le fichier manifeste sous la balise d'application <meta-data Android:name="com.google.Android.gms.version" Android:value="@integer/google_play_services_version" />

5
vamshi palutla

Consultez le fichier AndroidManifest.xml de votre projet google-play-services_lib. Devrait être:

package="com.google.Android.gms"
4
Artem
  1. Utiliser Android SDK Manager télécharger "Google Play Services"

  2. importez-le dans votre espace de travail (chemin: racine Android-sdk/extras/google/google_play_service/libproject/google-play-service_lib)

  3. propriétés du projet -> Android -> Bibliothèque ajouter google-play-service_lib

  4. Chemin de construction -> Contrôle des commandes et des exportations Android bibliothèques privées

2
iceboxi

J'ai résolu cette erreur en cochant la case " Copier les projets dans l'espace de travail " lors de l'importation de la lib. Des services Google Play.
Plus d'infos ici: http://developer.Android.com/google/play-services/setup.html

1
Umberto

Ce service de jeu de deux Google a été ajouté dans le fichier build.gradle. Il a fonctionné pour moi. : 8.1.0 '

1
Soumen Das

Si vous utilisez des services Google Play fractionnés (voir ici: https://developers.google.com/Android/guides/setup#split )

Vous devez inclure les services de jeu de base dans votre fichier de classement:

compile 'com.google.Android.gms:play-services-base:7.5.0'

L'utilisation des services de lecture slipt empêche l'erreur de 65 000 $ et réduit la taille de votre application.

1
sonique

J'ai suivi le lien http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html

et ajouté le projet de bibliothèque google-play-services_lib à mon application. Cela fonctionnait très bien jusqu'à hier. Mais à ce jour, j'ai l'exception mentionnée ci-dessus. C'est en raison de l'absence de Google Play Library ou de mon projet incapable d'accéder aux fichiers de la bibliothèque. J'ai reconstruit mon projet mais cela n'a pas abouti. Ensuite, j'ai reconstruit le projet de bibliothèque google-play-services_lib mais sans espoir. Ensuite, j'ai essayé l'option "Tout construire" dans Eclipse et cela fonctionne bien.

enter image description here

1
Arshad