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.
Надеюсь, это поможет вам.