Ява.ленг.noclassdeffounderror: com.гуглить.андроид.СБМ.R$styleable


Я создаю приложение для android с помощью google maps. вот код:

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>

когда я пытаюсь этот код я получаю сообщение об ошибке, вот журнал:

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.access0(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)

когда я делаю некоторые изменения в MapFragActivity.java, затем отображается карта. вот изменения:

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();
        }
    }

изменение, которое я сделал, прокомментировано setContentView. Я выполнил все необходимые шаги, и все же я получаю и ошибку. если раскомментировать setContentView (), то снова я получаю ошибку.

пожалуйста, помогите!!!

12 53

12 ответов:

Что вам нужно сделать, это включить библиотеку сервисов Google Play в свой проект. Google имеет очень хорошие инструкции здесь:

кроме того, есть быстрый старт, который я нашел очень полезным, пытаясь заставить Google Maps v2 работать.

Если вы используете Intellij Idea,

  1. выберите проект из проекта группы
  2. нажмите F4, чтобы открыть окно структуры проекта
  3. выберите модули из левой панели, затем нажмите кнопку+, затем выберите " Импорт модуля "и перейдите к" ANDROID-SDK " / extras/google/google_play_services/libproject / google-play-services_lib. При этом этот проект будет добавлен в модули вместе с вашим проект
  4. выберите свой проект, затем выберите "зависимости" (это вкладка) на правой панели. Нажмите кнопку + затем " 3 зависимости модуля... и выберите "google-play-services_lib".
  5. Нажмите кнопку + еще раз, затем "1 банки или каталоги..."и перейдите в папку" / libs "в указанном выше пути и выберите" google-play-services.сосуд."
  6. Нажмите кнопку ОК и закройте окно структуры проекта.

Примечание: убедитесь, что вы не добавили проект " google-play-services_lib "как библиотека в разделе" библиотеки " (левая панель под модулями). Если у вас есть, вы можете перейти к "библиотеки и просто удалить его. Библиотека Google Play Не Должна Появляться В Библиотеках.

примечание 2.: вы можете скопировать весь каталог google-play-services_lib в свой собственный проект, если вы хотите иметь его в системе управления версиями или аналогичной.

Я думаю, что вы должны импортировать всю библиотеку сервисов Google Play в свою IDE, а не только .банку

попробуй ;-)

Я решил проблему, сначала проверив, что lib play services добавлен правильно и добавив эти данные в файл манифеста под тегом приложения <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

у меня та же ошибка. Я использую Android Studio и Gradle, таким образом, есть не слишком много вещей, чтобы настроить или улучшить. Я сделал почти все, но все они не работали для меня. Последний работает: замените весь пакет play-services на более мелкие. В моем случае:

заменить (в build.gradle file):

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

by:

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

Я также получил эту ошибку в Android studio, и я уже включил play services alpha 3 с gradle alpha5, то, что я сделал неправильно, я включил multidex.

в gradle

multiDexEnabled true

и в классе приложений onCreate

MultiDex.установить (это);

но я забыл расширяет класс приложения с помощью MultiDexApplication

потому что MultiDexApplication не был расширен, так что он не может включать gms и любые другие классы dex, поэтому он дает ошибку при запуске строки gms.

Надежда этой помогает

Проверьте AndroidManifest.xml-файл вашего проекта google-play-services_lib. Должно быть:

package="com.google.android.gms"
  1. использование Android SDK Manager Скачать "google play services"

  2. импортируйте его в рабочую область (путь: Android-sdk root / extras / google / google_play_service / libproject/google-play-service_lib)

  3. свойства проекта - > android - > библиотека добавить google-play-service_lib

  4. путь сборки - > порядок и экспорт проверьте Android частные библиотеки

Я решил эту ошибку путем проверки " копировать проекты в рабочую область " при импорте библиотеки сервисов Google Play.
Более подробная информация здесь:http://developer.android.com/google/play-services/setup.html

Я пошел по ссылке http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html

и добавил проект библиотеки google-play-services_lib в мое приложение. Он отлично работал до вчерашнего дня. Но сегодня у меня есть исключение, упомянутое выше. Это из-за отсутствия библиотеки google play или мой проект не может получить доступ к файлам из библиотеки. Я перестроил свой проект, но это не удалось. Затем я перестроил проект библиотеки google-play-services_lib, но нет надежды. Затем я попробовал опцию "построить все" в eclipse, и она отлично работает.

enter image description here

Если вы используете split Google Play Services (смотрите здесь:https://developers.google.com/android/guides/setup#split)

необходимо указать базовый play services to your gradle file:

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

С помощью slipt Play Services предотвратить ошибку 65k и сделать ваше приложение меньше

Это два сервиса google play добавить в сборку.Gradle в Это сработало для меня.. компиляции в COM.гуглить.андроид.gms: play-services-appindexing: 8.1.0' компиляции в COM.гуглить.андроид.gms: play-services: 8.1.0'