it-swarm.com.ru

Это приложение не запустится, если вы не обновите сервисы 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>

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

25
Florent Gz

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

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

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

17
BladeCoder

с помощью студии Android единственное, что мне помогло, - это уменьшить версию сервисов google play в файле gradle с последней версии до этой:

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

(конечно, это временный «обход», чтобы вы могли продолжать работать)

15
dvrm

У меня была проблема с получением этой ошибки, и нажатие кнопки «Обновить» ничего не сделало, она застряла в цикле, что работает следующим образом (в 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 на вашем устройстве и протестировать свое приложение в спокойной обстановке.
8
james246

Хотя предоставленные ответы будут работать для эмулятора, это может быть реальной проблемой на реальном устройстве, и эти решения не будут работать на реальном устройстве. Это может произойти на старом устройстве с устаревшей версией Сервисов 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
    }
}

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

2
Leo

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

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

 enter image description here

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

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

Уровень приложения Gradle build.gradle (Модуль: приложение)

dependencies {

}

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

Уровень проекта Gradle "build, gradle (Project: AppName)"

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

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

Я получил эту проблему, только когда я использую эмулятор 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

1
josua josh

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

1
onmyway133

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

1
george mano

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

0
Mr_Dave