Java.lang.NoClassDefFoundError: com.google.android.gms.R $стиль для Android

Я попробовал демонстрацию при отображении google maps v2 в android.

Код java,

package com.example.gpslocator;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}


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

Код Xml,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

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

Я добавил ключ API в manifest.xml,

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

<uses-sdk
    android:minSdkVersion="3"
    android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
 The following two permissions are not required to use
 Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<permission
    android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />

<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="com.example.gpslocator.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="MY_API_KEY" />
</application>

</manifest>

Когда я попытался запустить приложение, приложение неожиданно завершает работу. Когда я отлаживаю, он показал мне ошибку: "java.lang.NoClassDefFoundError: com.google.android.gms.R $styleable".  Я добавил файл google-play-services.jar в свое приложение.

Логарифм,

04-09 05:33:53.677: E/Trace(1053): error opening trace file: No such file or directory (2)
04-09 05:33:53.807: W/ActivityThread(1053): Application com.example.gpslocator is waiting for the debugger on port 8100...
04-09 05:33:53.878: I/System.out(1053): Sending WAIT chunk
04-09 05:33:54.207: I/dalvikvm(1053): Debugger is active
04-09 05:33:54.288: I/System.out(1053): Debugger has connected
04-09 05:33:54.288: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:54.487: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:54.697: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:54.897: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.097: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.297: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.498: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.708: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.907: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:56.167: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:56.367: I/System.out(1053): debugger has settled (1344)
04-09 05:34:06.097: W/dalvikvm(1053): VFY: unable to resolve static field 867 (MapAttrs) in Lcom/google/android/gms/R$styleable;
04-09 05:34:06.097: D/dalvikvm(1053): VFY: replacing opcode 0x62 at 0x000e
04-09 05:40:21.278: D/AndroidRuntime(1053): Shutting down VM
04-09 05:40:21.278: W/dalvikvm(1053): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
04-09 05:40:21.398: E/AndroidRuntime(1053): FATAL EXCEPTION: main
04-09 05:40:21.398: E/AndroidRuntime(1053): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.Activity.onCreateView(Activity.java:4716)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.Activity.setContentView(Activity.java:1881)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.example.gpslocator.MainActivity.onCreate(MainActivity.java:12)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.Activity.performCreate(Activity.java:5104)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.os.Looper.loop(Looper.java:137)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at android.app.ActivityThread.main(ActivityThread.java:5041)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at java.lang.reflect.Method.invokeNative(Native Method)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at java.lang.reflect.Method.invoke(Method.java:511)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at dalvik.system.NativeStart.main(Native Method)
04-09 05:40:26.487: I/Process(1053): Sending signal. PID: 1053 SIG: 9

В свойствах → Android →

enter image description here

Пожалуйста, помогите мне. Мне не хватает ссылки?

Ответ 1

См. ответ здесь:
Google Maps Android API v2 - сбой кода образца
Хотя вопрос содержит другое исключение, в ответе конкретно указывается ваша конкретная проблема.

В частности, важно импортировать google-play-services_lib в качестве проекта:
Выберите File > Import > Android > Existing Android Code Into Workspace и нажмите "Далее".
Выберите "Обзор...", введите [android-sdk-folder]/extras/google/google_play_services/libproject/google-play-services_lib и нажмите "Готово".
(См. https://developers.google.com/maps/documentation/android/intro в разделе "Пример кода" )
Затем следуйте инструкциям из связанного ответа:

  • Импортировать фактический источник проекта "google-play-services_lib" и связать его как библиотеку > Android.
    • Сделайте это через Project → Properties → Android → Library, Add → google-play-services_lib (вы можете щелкнуть правой кнопкой мыши по вашему проекту и выбрать "Свойства", а затем выбрать Android).
    • Сделайте не добавление его в качестве зависимого проекта через "путь сборки Java" для вашего проекта, который не работает для меня.

Ответ 2

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

package="com.google.android.gms"

Ответ 3

Когда вы импортируете google-play-services_lib, проверьте "скопируйте проект в рабочее пространство". Это работает для меня!

Ответ 4

У меня была такая же проблема, и я смог ее решить, щелкнув правой кнопкой мыши проект google-play-services_lib и обновив его. По какой-то причине проект не синхронизировался с Eclipse, который вызывал ошибку.

Ответ 5

У меня такая же проблема.

Но то, что я сделал, я использовал com.google.android.gms Version Code this 3265130

Вместо того, чтобы использовать com.google.android.gms Version Code this 4452000, который является последним, я не знаю, в чем проблема. Но его работа для меня.

[Следуйте инструкциям Александра]

Может быть хорошо работать с новыми обновлениями.

enter image description here

Может быть хорошо работать с новыми обновлениями.

enter image description here

Ответ 6

Путь к файлу google-play-services_lib должен иметь только [A-Z,a-z] not ÄÖÜ. Я переместил его в D:\google-play-services_lib\, чем импортировал его новый, и он работает!

Извините за мой английский; -)

Ответ 7

импортировать в рабочую область как google-play-services_lib, так и демонстрационный проект; cope android-support-v4.jar в папку "libs" в демонстрационном проекте; а затем: свойства проекта → android- > library ", а затем добавьте google-play-services_lib

Ответ 8

Посмотрите на шаги Джона Олейника: www.stackoverflow.com/a/15709686/20146. Это сработало для меня.

Ответ 9

Когда вы импортировали проект google-play-services_lib в свою IDE, не забудьте проверить его свойства. google-play-services_lib должен быть создан с той же версией Android SDK, которую вы используете для своего проекта. Например, ваш проект и сервисы google-play создаются вместе с Android 4.4.2. После этого вы увидите, что lib правильно построен.

Наконец, вы должны добавить следующий метатег в AndroidManifest.xml внутри тегов <application> ... </application>:

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

Ответ 10

У меня было много проблем с этими картами. Но окончательно, стройте! Я не использую eclipse, просто командной строки. Во-первых, я стараюсь, что просто копирую в myProject/libs/files из google-play-services_lib/libs и ececute ant debug... После установки на эмулятор Android я получаю сообщение об ошибке java.lang.NoClassDefFoundError: com.google.android.gms.R $styleable

Через день решение афер часов для серфинга:

1) Сначала я скопирую каталог sdk/extras/google/.../google-play-services_lib в мой каталог myProject.

2) Сделайте android update project --target <your target> -p myProject/google-play-services_lib как пользователь dzeikei (чтобы проверить цели exec: android list target)

3) отредактируйте файл "project.properties" в папке myProject и добавьте эту строку в конец android.library.reference.1 = google-play-services_lib или выполните android update project --target android-19 --path myProject --library myProject/google-play-services_lib

4) ant clean, ant debug.... но были некоторые ошибки, например. возврат null и т.п (сделать головная боль). но после этого ant создайте папки bin и gen в папке myProject/google-play-services_lib

5) aer ищет множество решений для возрастов, чтобы избавиться от необходимости ant отлаживать возвращенные ошибки. Я окончательно откупил и просто скопировал каталоги bin и gen из myProject/google-play-services_lib/в myProject/bin и myProject/gen

6), затем удалите строку, которую я добавил ранее в пункте 3. выше # android.library.reference.1 = google-play-services_lib, и скопируйте файл myProject/google-play-services_lib/libs/google-play-services.jar в myProject/libs/google-play-services.jar

7) выполните ant debug

adb install -r bin/myProject-debug.apk

и finaly увидел карту google в моем проекте. Применение на эмуляторе Android:)

Конечно, другие stuf, подобные API_KEY, или добавление и разрешения из учебника по картам google, которые я выполнил, прежде чем компилировать проект. Чтобы увидеть карту без promt, например. "Службы Instal Goodle Play" используют эмулятор с уже установленными службами google. Я использовал API Google API (Google Inc.) из списка AVD Manager. Надеюсь, это поможет вам.