53 votes

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

Je suis en train de créer une application Android 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>

lorsque j'essaie ce code, j'obtiens 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 fais quelques changements dans 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();
        }
    }

La modification que j'ai apportée consiste à commenter le setContentView. J'ai suivi toutes les étapes requises et j'obtiens toujours une erreur. Si je décommente le setContentView(), j'obtiens à nouveau l'erreur.

S'il vous plaît, AIDEZ-MOI ! !!

74voto

Hesam Points 6415

Si vous utilisez Intellij Idea,

  1. Sélectionnez votre projet du groupe de projet
  2. Appuyez sur F4 afin d'ouvrir la fenêtre de la structure du projet.
  3. Sélectionnez Modules dans le panneau de gauche, puis appuyez sur le bouton + et sélectionnez "import module" et naviguez jusqu'à ". Android-SDK "/extras/google/google_play_services/libproject/google-play-services_lib. En faisant cela, ce projet sera ajouté aux modules en même temps que 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 Module dependencies..." et sélectionnez "google-play-services_lib".
  5. Cliquez à nouveau sur le bouton + puis sur "1 jars ou répertoires..." et naviguez jusqu'au dossier "/libs" dans le chemin ci-dessus et sélectionnez "google-play-services.jar".
  6. Cliquez sur ok et fermez la fenêtre de la structure du projet.

Note : Assurez-vous que vous n'avez pas ajouté le projet "google-play-services_lib" comme bibliothèque dans "Libraries" (panneau de gauche sous Modules). Si vous l'avez fait, vous pouvez aller dans " Bibliothèques et le retirer simplement. La bibliothèque Google Play ne devrait pas apparaître dans les bibliothèques .

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

40voto

Michael Points 822

Ce que vous devez faire, c'est inclure une bibliothèque Google Play Services dans votre projet. Google fournit de très bonnes instructions ici :

Il existe également un démarrage rapide que j'ai trouvé très utile lorsque j'essayais de faire fonctionner Google Maps v2.

6voto

m3n0R Points 2333

Je pense que vous devez importer l'ensemble de la bibliothèque Google Play Service dans votre IDE, et pas seulement le fichier .jar.

essayez-le ;-)

4voto

Artem K Points 71

Vérifiez le fichier AndroidManifest.xml de votre projet google-play-services_lib. Il devrait être :

package="com.google.android.gms"

2voto

iceboxi Points 26
  1. Utilisez Android SDK Manager pour télécharger "google play services".

  2. l'importer dans votre espace de travail (chemin : Android-sdk Root/extras/google/google_play_service/libproject/google-play-service_lib)

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

  4. Chemin de construction -> Commander et exporter vérifier les bibliothèques privées Android

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