NoClassDefFoundError в библиотеке V2 для Google Play Services

Я получаю следующее исключение при попытке использовать библиотеку Google Play Services V2 после официального руководства .

java.lang.NoClassDefFoundError: com.google.android.gms.R$string at com.google.android.gms.common.GooglePlayServicesUtil.b(Unknown Source) at com.google.android.gms.common.GooglePlayServicesUtil.a(Unknown Source) at com.google.android.gms.common.GooglePlayServicesUtil.getErrorDialog(Unknown Source) 

Где я неправ?

Solutions Collecting From Web of "NoClassDefFoundError в библиотеке V2 для Google Play Services"

Версия 2 включает ресурсы и должна быть импортирована как проект библиотеки. См. Инструкции по адресу http://developer.android.com/google/play-services/setup.html, как это сделать в разных IDE.

Ресурсы предназначены для GooglePlayServicesUtil.getErrorDialog (), который направляет пользователя на установку, обновление, включение и т. Д. Службы Google Play, если он недоступен на устройстве.

У меня также одни и те же проблемы, я правильно выполнил этот шаг и смог решить эту проблему

Сначала (настройте свой проект из консоли разработчика Google). Перейдите в консоль API – Google Code.

Создать проект Как показано на изображениях Введите описание изображения здесь

Нажмите «Создать», затем попросите добавить название проекта, как показано

Введите описание изображения здесь

Как только вы создадите свой проект, чтобы выбрать, какой сервис нам нужно использовать. В этом случае нам нужна карта android v2, поэтому выберите Google Maps Android API v2 из сервиса Как показано, Введите описание изображения здесь

Теперь перейдите в Api Access и создайте свой OAuth 2.0. Укажите свое имя пакета и отпечаток SHA1 в соответствующих полях. Введите описание изображения здесь

Как только вы закончите с OAuth 2.0, мы готовы использовать ваш ключ API Введите описание изображения здесь

Теперь создайте проект Android с тем же именем пакета, который используется при создании OAuth 2.0. И проверьте, есть ли у вас сервис Google Play в Android SDK Manager, иначе установите сервис google play. Введите описание изображения здесь

После установки сервисной службы Google вы найдете библиотеку игр Google в Android YourSdkpath \ extras \ google \ google_play_services. Запустите этот проект в свою рабочую область и передайте его в качестве библиотеки refrence для своего проекта. Введите описание изображения здесь

Введите описание изображения здесь

Введите описание изображения здесь

После этого поместите соответствующие файлы java и xml в ваш проект.

MainActivity.java

 package yourpackage;//Package name used while creating the Api key import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; import android.os.Bundle; import android.app.Activity; import android.app.Dialog; import android.support.v4.app.FragmentActivity; import android.view.Menu; public class MainActivity extends FragmentActivity { GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting status int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext()); // Showing status if(status==ConnectionResult.SUCCESS) { SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // Getting a reference to the map googleMap = supportMapFragment.getMap(); } else{ int requestCode = 10; Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode); dialog.show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

activity_main.xml

 <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="wrap_content" android:layout_height="match_parent" /> 

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="yourpackage" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <permission android:name="yourpackage.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="yourpackage.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="yourpackage.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="YourAPIkey"/> 

Надеюсь, это поможет вам

Для Android Studio:

1) Откройте настройки модуля:

2) Добавить (Импортировать) модуль google_play_service_lib из SDK

Картина

3) Модуль google_play_service_lib проверить как библиотеку

4) Добавить библиотеку google_play_service.jar из SDK

5) Готово

Картина

Если вы уже обновили SDK и получили такую ​​ошибку, запомните:

  • Используйте новую версию google-play-services.jar, если у вас есть копия этого файла в проекте eclipse
  • Set target = android-19 в project.properties
  • Для нового API (я использую API 19) вам может потребоваться добавить следующий код

AndroidManifest.xml

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

Я также использую ourSdkpath \ extras \ google \ google_play_services как импортированную библиотеку Eclipse, как описано выше.

Я решил эту ошибку, установив флажок «Копировать проекты в рабочее пространство» при импорте библиотеки игровых сервисов google.
Подробнее здесь: http://developer.android.com/google/play-services/setup.html

Если вы используете

 compile 'com.google.android.gms:play-services:9.0.2' 

Изменить его на отдельные, такие как

 compile 'com.google.android.gms:play-services-location:9.0.2' 

Также добавьте compile 'com.android.support:multidex:1.0.1' если у вас есть multiDexEnabled=true

У меня такая же проблема с Android Studio при создании проекта без Gradle. Это может быть проблема с именем пакета в AndroidManifest.xml в проекте GooglePlayService. Он должен быть package = "com.google.android.gms" .

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

Введите описание изображения здесь

Когда вы выбираете New Module, Android Studio показывает диалог, чтобы указать «Имя модуля» и «Имя пакета», и по умолчанию «Имя пакета» выглядит как «com.example.MODULE_NAME_YOU_SPECIFED», что неверно . Это очень легко упустить, потому что проект строится с успехом.

Введите описание изображения здесь

Когда вы добавляете проект библиотеки «Модуль импорта», все должно быть в порядке, потому что Android Studio просто добавляет проект без каких-либо изменений с исходным кодом Библиотечного проекта.

Я также сталкиваюсь с такой же проблемой. Если вы запускаете свое приложение в эмуляторе, возможно, сталкиваетесь с этой ошибкой, потому что в большинстве эмуляторов отсутствует приложение google playService (Play Store).

Поэтому попробуйте запустить приложение на Android-устройстве, которое установлено в приложении playService.

Решение: – добавьте код ошибки ошибки в try...catch а затем попробуйте, он тоже будет работать в эмуляторе.

Примечание. – Служба Google Messaging требует палиссервиса. Иначе сбросить ошибку SERVICE_NOT_AVAILABLE