Подтвердить что ты не робот

Это приложение не будет работать, если вы не обновите ошибку сервисов Google Play

Я сейчас потеряюсь. Я использую приложение Android с помощью карт Google.

Чтобы сделать это, я следил за некоторыми учебниками, которые были довольно эффективными. Однако я застрял в этом ":

enter image description here

Чтобы исправить эту проблему, я нашел несколько трюков здесь или здесь, которые говорят, что для решения этой проблемы вы должны принять специальную конфигурацию для эмулятора, вот мой:

enter image description here

и установить некоторый .apk на эмулятор.

enter image description here

И волшебство должно быть сделано, и карта должна появиться, что не является моим случаем.

Я проверил, что мои дополнительные функции были хорошо установлены:

enter image description here

Вот мой AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="mypack"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk android:minSdkVersion="16"/>

    <permission android:name="mypack.permission.MAPS_RECEIVE"
                android:protectionLevel="signature"/>
    <uses-permission android:name="mypack.permission.MAPS_receive"/>

    <!-- Permission pour utiliser la connexion internet -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Permission permettant de vérifier l'état de la connexion -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Permission pour stocker des données en cache de la map -->
    <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:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <meta-data
                android:name="com.google.android.maps.v2.API_KEY"
                android:value="MYKEY" />

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

        <activity android:name="Home"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

Вот моя MainActivity

import android.app.Activity;
import android.os.Bundle;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;

public class Home extends Activity {
    /**
     * Called when the activity is first created.
     */
    private GoogleMap map;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    }
}

и соответствующий макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/map"
              android:name="com.google.android.gms.maps.MapFragment"
              android:layout_width="match_parent"
              android:layout_height="match_parent" />
</LinearLayout>

Надеюсь найти какое-то исправление или то, что я пропустил здесь, спасибо заранее.

4b9b3361

Ответ 1

В Android SDK Manager вы должны установить "Google API (системный образ x86)" в разделе "Android 4.4.2 (API 19)". Закройте Eclipse и перезапустите его.

Затем создайте новое виртуальное устройство Android в AVD-менеджере и выберите "Google API x86 (Google Inc.) - API-уровень 19" в качестве цели. Установите флажок "Использовать главный графический процессор", чтобы обеспечить ускорение рисования карты.

В этом новом эмуляторе будут установлены предустановки Play Services, и он будет работать быстрее, потому что это изображение x86.

Ответ 2

используя андроид-студию, единственное, что помогло мне, - уменьшить версию игровых сервисов google в файле gradle от последней версии до этого:

compile 'com.google.android.gms:play-services:4.2.+'

(конечно, это временный "обход", позволяющий продолжить работу)

Ответ 3

У меня была проблема с получением этой ошибки, и нажатие кнопки "Обновить" ничего не сделало, она застряла в цикле, что работает следующим образом (в Android Studio):

  • Перейдите в Инструменты> Android> SDK Manager
  • Установите флажок "Показать подробности пакета"
  • Под нужной версией Android (для меня прямо сейчас 7.1.1) установите флажок Google Play Образ системы Intel x86 Atom google play intel atom system image
  • Нажмите Apply/OK и дайте образу установить
  • Теперь перейдите в Инструменты> Android> AVD Manager
  • Создать виртуальное устройство
  • Выберите одно из устройств с логотипом Google Play: devices with a Google Play logo
  • Запустите ваше приложение в новом эмуляторе. Теперь вы можете нажать "Обновить" при появлении ошибки, обновить Сервисы Google Play через Play Store на вашем устройстве и протестировать свое приложение в спокойной обстановке.

Ответ 4

Чтобы избежать проблем с настройкой эмулятора, не поддерживающего Google Play, всегда используйте эмулятор с playicon enter image description here

как показано на рисунке: значок воспроизведения присутствует в строке Playstore.

enter image description here

После установки совместимого с Google Play Play эмулятора... снова запустите приложение в эмуляторе... и когда вы получите уведомление "Приложение не будет работать, если......", нажмите на уведомление и следуйте подсказкам на экране: "Подписание При использовании учетной записи Gmail... электронной почты, пароля и т.д. ", Как только вы соглашаетесь с лицензией Google, вы получаете экран обновления Google Play: enter image description here

обновите Google Play и снова запустите приложение. Также убедитесь, что у вас есть зависимости Google на уровне приложения:

Gradle уровня приложения    build.gradle(Module: приложение)

dependencies {

}

    apply plugin: 'com.google.gms.google-services'

Уровень проекта Gradle "сборки, Gradle (Проект: AppName)"

Зависимости {

    classpath 'com.google.gms:google-services:3.2.1'
}

Ответ 5

Хотя предоставленные ответы будут работать для эмулятора, это может быть реальной проблемой на реальном устройстве, и эти решения не будут работать на реальном устройстве. это может произойти на старом устройстве с устаревшей версией Сервисов Google Play.

Чтобы решить эту проблему, в библиотеке сервисов Google Play есть набор API-интерфейсов для проверки доступности сервисов Google Play, в основном класс GoogleApiAvailability предоставляет несколько методов для решения проблем доступности, таких как устаревшая версия.

Теперь, чтобы определить, есть ли на устройстве службы Google Play или нет, я обычно создаю вспомогательный метод для запуска проверки

private boolean checkPlayServices(){
    GoogleApiAvailability gaa = GoogleApiAvailability.getInstance();
    int result = gaa.isGooglePlayServicesAvailable(getApplicationContext());

    if(result != ConnectionResult.SUCCESS){
        if(gaa.isUserResolvableError(result)){
            gaa.getErrorDialog(this,result, REQUEST_PLAY_SERVICES_RESOLUTION).show();
        }

        return false;
    }

    return true;
}

Этот вспомогательный метод проверяет, доступны ли службы Google Play, проверяя код ошибки, возвращенный из isGooglePlayServicesAvailable. Затем он вызывает isUserResolvableError, чтобы определить, разрешена ли ошибка пользователем (например, путем обновления Сервисов Google Play). Если это разрешимо, то отображается диалоговое окно для пользователя, чтобы подтвердить, что он хочет, чтобы система исправила ошибку. Затем вызовите его в методе Activity onCreate, я запускаю эту проверку, как показано ниже

//I normally assume Google Play services is available
private boolean playServicesAvailable = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map_selector);

    //check for rare case where Google Play Services is not available
    playServicesAvailable = checkPlayServices();

    if(!playServicesAvailable){
        //hide UI elements and turn off features that rely on Google Play Services
    }
}

Надеюсь, это поможет некоторым

Ответ 6

У меня возникла эта проблема, только когда я использую эмулятор Android от Android Studio. Я решил проблему, добавив плагин google-services к gradle: app

apply plugin: 'com.google.gms.google-services'

то на зависимостях добавить

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

ранее я использовал

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

но он дает ошибку, что существует несоответствие версии, и предлагается использовать com.android.gms версии 9.0.0

Ответ 7

У меня была такая же ошибка. Исправлено его обновление Android Studio вместе со связанными с ним инструментами Android SDK.

Ответ 8

В Android Studio 3 перейдите на Tools -> SDK Manager и установите сервисы Google Play enter image description here

Ответ 9

Я столкнулся с той же ошибкой, которая пыталась построить на Android 7.0. Я восстановил до 6.0 и не имел никаких проблем. Отказ от 1 уровня API также может помочь вам.

Ответ 10

Я решил эту проблему:

1- Убедитесь, что "Сервисы Google Play" установлены в инструментах SDK, например, это изображение:

enter image description here

2- Убедитесь, что файл AndroidManifest.xml содержит следующие строки:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3- В зависимостях из build.gradle добавьте эту строку:

classpath 'com.google.android.gms:play-services-maps:17.0.0'

Примечание. Возможно, вам потребуется изменить версию play-services-maps с 17 на последнюю, но 17 - последняя в августе 2019 года...

Как это изображение:

enter image description here

Не забудьте перестроить проект (если вы используете flutter, выполните эту команду в терминале flutter clean)

Тогда вы увидите, что карта работает на эмуляторе:

enter image description here