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)

Где я ошибся?

Ответ 1

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

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

Ответ 2

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

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

Создать проект Как показано на изображениях enter image description here

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

enter image description here

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

Теперь перейдите в Api Access и создайте свой OAuth 2.0. Предоставьте имя своего пакета и отпечаток SHA1 в соответствующих полях. enter image description here

Как только вы закончите с OAuth 2.0, мы готовы использовать ваш ключ API enter image description here

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

После установки Google playervice вы найдете библиотеку игр Google в Android YourSdkpath\extras\google\google_play_services. Подключите этот проект к своей рабочей области и передайте его в качестве библиотеки refrence для своего проекта enter image description here

enter image description here

enter image description here

После этого поместите соответствующие 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"/>

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

Ответ 3

Для Android Studio:

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

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

Picture

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

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

5) Завершить

Picture

Ответ 4

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

  • используйте новую версию google-play-services.jar, если у вас есть копия этого файла в проекте eclipse.
  • установить 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>

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

enter image description here

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

enter image description here

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

Ответ 8

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

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

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

Примечание. - Служба Google Messaging требует palyservice. иначе сбросить ошибку SERVICE_NOT_AVAILABLE