it-roy-ru.com

java.lang.NoClassDefFoundError: com.google.Android.gms.R $ настраиваемый в Android

Я попробовал демо при отображении карт Google 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

Пожалуйста, помогите мне. Я пропускаю какую-либо ссылку? 

13
Mahe

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

В частности, важно импортировать google-play-services_lib как project
Выберите 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 (вы можете щелкнуть правой кнопкой мыши на вашем проекте и выбрать Properties, затем выбрать Android). 
    • Не добавляйте not в качестве зависимого проекта через «Путь сборки Java» для вашего проекта, который мне не помог.
29
Alexander

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

package="com.google.Android.gms"
6
Artem

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

Но то, что я сделал, я использовал com.google.Android.gms. Код версии 3265130

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

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

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

enter image description here

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

enter image description here

1
Sophia

При импорте google-play-services_lib установите флажок «скопировать проект в рабочую область». Меня устраивает!

1
Ellison Yang

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

1
yiati

У меня было много проблем с этими картами. Но в конце концов, сборка! Я не использую 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 .... но были некоторые ошибки, например вернуть ноль и т. д. (сделать головную боль). но после этого муравей создает папки bin и gen в папке myProject/google-play-services_lib 

5) после многих поисков решений, чтобы выяснить, почему ant debug вернул ошибки, я, наконец, отрезаю кусочки и просто копирую каталоги 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/ЛИЭС/Google-игра-services.jar 

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

adb install -r bin/myProject-debug.apk

и наконец увидел гугл карту в моем проекте приложения на эмуляторе Android :)

Конечно, другие вещи, такие как API_KEY или добавления и разрешения из учебника Google Maps, я сделал, прежде чем скомпилировать проект .... Чтобы увидеть карту без запроса, например. «Instal Goodle Play Services» использует эмулятор с уже установленными сервисами Google. Я использовал Google API (Google Inc.) из списка AVD Manager .... Надеюсь, это поможет Вам.

0
ferfluchte

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

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

0
Svendvd

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

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

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

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

0
viktor0710

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

0
user2739528