Библиотека сервисов Google Play NoClassDefFoundError

Я пытался использовать Location API из google-play-services-lib.

Я настроил проект в соответствии со страницей разработчика

http://developer.android.com/google/play-services/setup.html

После запуска приложение вылетает с ошибкой. Логкат:

Не удалось разрешить интерфейс 1013 'Lcom/google/android/gms/location/LocationListener;

java.lang.NoClassDefFoundError: com.example.fragments.MyFragment

MyFragment implements LocationListener and GooglePlayServices интерфейсов.

Я потратил много времени на гугление, но решения не нашел. Кто-нибудь может помочь? Спасибо.

ЛОГКАТ:

07-22 14:08:15.329: E/AndroidRuntime(13259): FATAL EXCEPTION: main
07-22 14:08:15.329: E/AndroidRuntime(13259): java.lang.NoClassDefFoundError:
com.example.fragments.MyFragment
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
com.example.fragments.BaseFragment.getPages(BaseFragment.java:80)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
com.example.fragments.BaseFragment.onCreate(BaseFragment.java:48)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.support.v4.app.Fragment.performCreate(Fragment.java:1477)


 07-22 14:08:15.329: E/AndroidRuntime(13259):   at
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:893)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)

 07-22 14:08:15.329: E/AndroidRuntime(13259):   at
android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.app.Activity.performStart(Activity.java:5114)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.app.ActivityThread.access$600(ActivityThread.java:141)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.os.Handler.dispatchMessage(Handler.java:99)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.os.Looper.loop(Looper.java:137)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
android.app.ActivityThread.main(ActivityThread.java:5039)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
java.lang.reflect.Method.invokeNative(Native Method)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
java.lang.reflect.Method.invoke(Method.java:511)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-22 14:08:15.329: E/AndroidRuntime(13259):    at dalvik.system.NativeStart.main(Native
Method)

person Martin    schedule 22.07.2014    source источник
comment
проверьте, добавили ли вы метаданные в манифест?   -  person Ando Masahashi    schedule 22.07.2014
comment
Я использовал сервисы google-play в своем предыдущем проекте, и все было в порядке. Я пробовал это без какой-либо реализации, просто внедрил интерфейсы, и он вылетает, и я не знаю, почему   -  person Martin    schedule 22.07.2014
comment
тогда, пожалуйста, опубликуйте свой полный logcat?   -  person Maveňツ    schedule 22.07.2014
comment
Я отредактировал сообщение с помощью logcat   -  person Martin    schedule 22.07.2014
comment
попробуйте использовать с Google API(19)   -  person Ando Masahashi    schedule 22.07.2014
comment
Я пробовал это с Google API, но все та же проблема.   -  person Martin    schedule 22.07.2014
comment
Мне очень жаль, но это корпоративный проект, я не могу выложить код в сеть.   -  person Martin    schedule 22.07.2014
comment
ну не весь код, но где вы получаете ошибку в этой части   -  person Ando Masahashi    schedule 22.07.2014
comment
Это происходит, когда создается фрагмент, реализующий интерфейсы из lib. Я попытался прокомментировать все строки, где я работаю с объектами из библиотеки, у меня есть только интерфейсы. открытый класс ForecastFragment расширяет ListFragment, реализует LocationListener, GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener. Когда я удалил интерфейсы, приложение также работает   -  person Martin    schedule 22.07.2014
comment
В файле манифеста я добавил в тег приложения ‹meta-data android:name=com.google.android.gms.version android:value=@integer/google_play_services_version /› Нужны ли сервисам google play дополнительные разрешения?   -  person Martin    schedule 22.07.2014


Ответы (3)


@марлин

1) Перейдите к свойствам проекта по пути сборки java и проверьте все, начиная с порядка и экспорта. 2) http://android-er.blogspot.in/2012/12/add-reference-library-google-play.html

Дайте мне знать, если вы все еще сталкиваетесь с какой-либо проблемой

Спасибо

person User    schedule 22.07.2014
comment
Я импортировал библиотеку и проверил порядок и вкладку экспорта, но у меня всегда есть NoClassDeFoundError. - person Martin; 22.07.2014
comment
иногда вам нужно взять весь внешний проект в качестве библиотеки, а не только jar: моя проблема решена путем добавления всего проекта (в моем случае google-play-services_lib) в качестве библиотеки, а не только jar. шаги к нему (из ответа @style): Файл->Создать->Другое. Выберите проект Android. Выберите «Создать проект» из существующего источника. Нажмите кнопку «Обзор» и перейдите к нужному проекту. «Готово» (теперь проект панели действий находится в вашей рабочей области) Щелкните правой кнопкой мыши свой проект -> Свойства. В разделе Android-> Библиотека нажмите «Добавить», выберите недавно добавленный проект -> «ОК». - person User; 22.07.2014
comment
Я включил весь проект, а не только файл jar. Так что я не понимаю причину ошибки - person Martin; 22.07.2014
comment
затем очистите, переименуйте lib в libs, соберите и поддержите мой ответ. Моя проблема была решена. - person User; 22.07.2014

У меня была такая же ситуация, и в моем случае проблема заключалась в том, что я недавно обновился до новой сборки андроида (вручную, скачав новую связку), но по какой-то причине я сохранил и старую на своем ПК. Итак, у меня на компьютере было два разных каталога «adt-bundle-windows-x86-________». Обычно это не вызывало никаких проблем, но, видимо, Google Utils были обновлены в каталоге older, пока я разрабатывал свое приложение в каталоге newer. Это все испортило.

Мое решение состояло в том, чтобы переместить старый каталог «adt-bundle-windows-x86-________» так, чтобы на ПК присутствовал только один каталог «adt-bundle-windows-x86-________». Затем я обновил все до чистого состояния с помощью SDK Manager. С тех пор все пошло гладко.

person bluelizard    schedule 30.11.2014

Что я сделал, так это обновил все до последних версий и переключился на последнюю версию Android SDK в настройках проекта. Моей отправной точкой было https://github.com/playgameservices/play-games-plugin-for-unity/issues/193

person kellogs    schedule 15.07.2015