it-swarm.com.ru

Google Maps Android API v2 - пример сбоев кода

Я пытаюсь заставить пример кода Android Android Google Maps Android v2 работать. Я строю проект без ошибок. Однако, когда я пытаюсь запустить приложение на моем Galaxy Nexus (подключенном через USB к моему ноутбуку), приложение сразу вылетает.

  • Я заполнил свой собственный ключ API Карт на AndroidManifest.xml
  • Я построил против Android 4.1.2

Это регистрация:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
Java.lang.ExceptionInInitializerError
at Java.lang.Class.newInstanceImpl(Native Method)
at Java.lang.Class.newInstance(Class.Java:1319)
at Android.app.Instrumentation.newActivity(Instrumentation.Java:1054)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2097)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2230)
at Android.app.ActivityThread.access$600(ActivityThread.Java:141)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1234)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:5039)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:793)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:560)
at dalvik.system.NativeStart.main(Native Method) 
Caused by: Java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
at com.example.mapdemo.MainActivity.<clinit>(MainActivity.Java:97)
... 15 more

У кого-нибудь есть подсказка, как решить эту проблему или что я могу делать неправильно?

43
alexx

Очень, очень внимательно следите за листом кроватки:
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

В частности, я думаю, что вам необходимо:

  • Импортируйте фактический источник для проекта "google-play-services_lib" и свяжите его как библиотеку Android .
    • Сделайте это через Project -> Properties -> Android -> Library, Add -> google-play-services_lib (вы можете щелкнуть правой кнопкой мыши на вашем проекте и выбрать Properties, затем выбрать Android). 
    • Не добавляйте not в качестве зависимого проекта через «Путь сборки Java» для вашего проекта, который мне не помог.
  • Добавьте google-play-services.jar и Android-support-v4.jar в папку «libs» в примере проекта и добавьте их как «Внешние внешние JAR-файлы» в «Путь сборки -> Настройка пути сборки -> Библиотеки» ,.

Я обнаружил, что этот второй шаг был необходим, поскольку я пытался использовать ту же ошибку, что и вы, когда пытался использовать пример кода. Первый шаг был необходим, чтобы избежать NoClassDefFoundError в com.google.Android.gms.R$styleable в моем реальном проекте. 

Мне также нужно было выполнить чистую сборку и удалить приложение с устройства (с более ранней попытки тестирования), прежде чем сработал пример кода.

78
Dan J

Следуйте следующий пример кода кода от Google.

Пропустите раздел «4» и следуйте приведенным ниже инструкциям:

  • Добавьте новую папку в ваш проект с именем "libs"
  • Скопируйте форму google-play-services.jar:

    "Android-СДК-папка\Extras\Google\google_play_services\libproject\Google-игра-services_lib\ЛИЭС"

    в папку "libs" -> щелкните правой кнопкой мыши на этом фляге в этой папке -> Build path -> Add to build path. 

  • Скопируйте форму Android-support-v4.jar:

    "Android-СДК-папки\Extras\Android\поддержка\v4"

    в папку "libs" -> щелкните правой кнопкой мыши на этом фляге в этой папке -> Build path -> Add to build path.

Где «Android-sdk-folder» обычно выглядит так: «C:\Users\Имя_пользователя\Android-sdks»

26
David

У меня была та же проблема, я сделал следующее, чтобы решить проблему.

  1. Зайдите в «Свойства» проекта. 
  2. Выберите «Путь сборки Java» 
  3. Выберите вкладку «Заказ и экспорт» 
  4. Вы должны увидеть пути и зависимости выбранного проекта "src" и "gen" здесь. 

Порядок, в котором они перечислены, был сначала «src», а затем «gen» путь, который я переключаю, так что папка «gen» собирается перед «src»

ТОГДА "Проверяй" каждый из перечисленных предметов

смотрите: NoClassDefFoundError для кода в библиотеке Java на Android

14
John Oleynik

Это происходит из-за большой путаницы в том, как импортировать проекты. В документах https://developers.google.com/maps/documentation/Android/intro#sample_code Сказано, что вам ни в коем случае не следует выбирать «Копировать проекты в рабочую область» и получать образцы Запуск это то, что вам нужно придерживаться. Не выбирайте эту опцию для сервисов воспроизведения и сэмплов - оставьте их там, где они есть. 

После импорта обоих проверьте следующее:

  1. Щелкните правой кнопкой мыши по проекту MainActivity и выберите свойства
  2. Перейдите на Android и убедитесь, что вы видите зеленую галочку рядом с google-play-services-lib (Библиотека play services никогда не должна добавляться в виде jar - вместо этого она должна добавляться как библиотека Android)
  3. Перейдите в Java Build Path и импортируйте внешний jar (Android-support-v4.jar) в разделе библиотек
  4. [ВАЖНО] Перейдите в «Порядок и экспорт» в «Путь сборки Java» и убедитесь, что рядом с ним установлен флажок «Android-support-v4.jar» (по умолчанию этого не происходит, и именно поэтому вы видите ошибку, о которой упоминаете на вершине)
  5. После внесения изменений убедитесь, что вы очистили и собрали проект, чтобы в конечном итоге вы не попытались исправить то, что работает, а просто не было перенесено.
2
kaskader
  1. Следуйте образец кода инструкции от Google. 
  2. И установите путь сборки Java следующим образом:enter image description here
1
nguyên
  1. Попробуйте тот же пример кода в новой рабочей области.

  2. Даже вы можете скопировать и вставить образец проекта карты и проект google play services-lib (/ extras/google/google_play_services/libproject/google-play-services_lib,) и вставить его в новое свежее рабочее пространство.

  3. После того, как не забыли добавить требуемый файл JAR из SDK. ("Android-support-v4.jar" находится в "/extras/Android/compatibility/v4/Android-support-v4.jar" под вашим каталогом "Android-sdk".)
0
beginner

Я столкнулся с той же проблемой и не мог решить. Наконец, я взял папку с примерами проектов с другой машины, скопировал ее на свою и загрузил новый проект, который взял с другой машины. Тогда все работает нормально. Я попытался отследить проблему, сравнив 2 примера проекта, но не смог. В любом случае, новые образцы проектов, которые я взял с другой машины, работают нормально.

0
Nalaka

У меня была почти такая же проблема . Файл 'import-summary.txt' имел ответ . В моем случае я импортировал проект Eclipse в путь с пробелом в имени пути. Это вызывает проблему с мастером . Создан новый путь. Ре-импортированный проект. Затем Build/Rebuild Project . Никаких проблем.

0
user2380177