it-swarm.com.ru

Сервисы Google Play в эмуляторе, кнопка входа в Google Plus и т.д.

При интеграции кнопки входа Google Plus в приложение для Android я наблюдаю некоторые различия в том, как кнопка отображается на реальном устройстве и в эмуляторе. Мне известно о том, что APK-сервисы Google Plus не установлены в эмуляторе, но это можно обойти, вытащив APK-файлы из устройства и установив их в эмулятор с помощью APK.

Моя текущая «реализация» просто включает кнопку входа в макет, ссылаясь на кнопку со следующим XML-кодом:

<com.google.Android.gms.common.SignInButton
    Android:id="@+id/sign_in_button"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

Когда я тестирую свое приложение на устройстве, кнопка становится красной и блестящей в соответствии с указаниями, приведенными здесь https://developers.google.com/+/mobile/Android/sign-in . Но при запуске на эмуляторе это просто обычная кнопка (серый фон с черным текстом) с надписью «Войти в Google».

Есть идеи, почему результаты разные? Я удостоверился, что я использую тот же уровень API, и ресурс, похоже, корректно загружается также в эмуляторе, поскольку он показывает фактическую кнопку входа в систему (но с другим видом).

Обновление: Нашел подсказку в logcat; сообщение «Кнопка входа в систему не найдена, вместо этого используется заполнитель». в значительной степени объясняет, почему я вижу серую тусклую кнопку на эмуляторе. Еще нужно выяснить почему; может быть, хак "скопировать Google Plus APK с устройства" не работает должным образом.

15
Marius Kjeldahl

Службы Google Play работают на версиях эмулятора Android 4.2.2 и официально поддерживаются, как описано в документации Android: Настройка служб Google Play .

Обновление

Теперь вы можете использовать образы Intel/x86 (HAXM-совместимые) для API 19 и новее, а для ARM службы Google Play доступны для большинства изображений.

Настройка изображения

Чтобы получить правильный образ для вашего менеджера виртуальных устройств:

  • Откройте Android SDK Manager
  • Откройте группу Android 4.2.2 (API 17)
  • Проверьте Google API
  • Проверьте ARM образ системы EABI v7a

enter image description here

Чтобы создать виртуальное устройство:

  • Откройте диспетчер виртуальных устройств Android 
  • Создать новое устройство 
  • Введите имя AVD
  • Установите целевое значение Google API (Google Inc.) - API Level 17
  • Сохраните ваше виртуальное устройство и запустите его ...

Примечание _ ​​CPU/ABI будет исправлено как ARM

enter image description here

Теперь вы сможете использовать Сервисы Google Play в эмуляторе. Следует отметить, что для работы Служб Google Play необходимо правильно настроить цель в своем проекте Android на API Google.

53
class

Я пробовал большинство комбинаций запуска эмулятора, но с и без API Google, что означает, что я тестировал как в режиме x86, так и в режиме arm. Я не нашел способа вытащить apk из моего телефона Galaxy Nexus для корректной работы на эмуляторе.

Понимая, что это в некоторой степени связано с запуском Play Store, я решил попробовать это, чтобы узнать, повезет ли мне больше. Я не; не мог заставить это работать также. Значки Play Store появляются и могут быть запущены, но сразу закрываются.

Что работало, однако, было загрузить и установить APK в нижней части страницы здесь:

http://umut.tekguc.info/en/content/google-Android-map-v2-step-step

После установки пакетов vending и gms в эмуляторе появилась полная кнопка входа в систему. Поскольку я еще не реализовал реальную функцию входа в систему, я не могу быть уверен, что она действительно будет работать, но, по крайней мере, кнопка теперь выглядит одинаково в моем приложении на моем устройстве и в эмуляторе.

Вам также необходимо загрузить программное обеспечение Google Play Services (см. «Дополнительно» в диспетчере Android SDK) и установить библиотеку google-play-services_lib в свой проект (File-Import-Android-Existing Android Code Into Workspace, а затем перейдите, например, к/opt/adt-bundle-linux/sdk/extras/google/google_play_services/libproject и выберите google-play-services_lib).

Еще один интересный момент заключается в том, что он будет работать только на «чистых» настройках эмулятора Android, а не на «Google API». Кажется, у последних уже есть некоторые части этих приложений, установленные в эмуляторе (не видимые и не работающие), и мне не удалось удалить существующие версии для установки пользовательских файлов apk, которые работали, как описано выше. Я тестировал удаление adb, установку adb, установку adb -r и даже удаление каталогов из/data, что также не удалось. Похоже, что Google пытается сделать это сложно.

Я разочарован, Google делает это так сложно; У Google могут быть какие-то странные причины лицензирования для того, чтобы не пускать эти вещи в эмулятор, но если они действительно хотят, чтобы люди использовали их сервисы в своих приложениях для Android, они должны сделать эти сервисы доступными в эмуляторе. Заставлять людей всегда разрабатывать на устройстве (с другими отличными доступными эмуляторами) или заставлять людей прыгать через обручи (много гуглить, устанавливать неофициальные/взломанные версии apks и т.д.) - это просто зло.

Окончательное обновление, прежде чем принять мой ответ; хотя в эмуляторе отображается правильная кнопка с правильным стилем, я все еще не могу отобразить диалоговое окно «выбрать учетную запись» в эмуляторе. Когда/если я это сделаю, я поделюсь правильным решением здесь.

4
Marius Kjeldahl

 Android image with google API implemented Я заметил, что из API 21 есть ARM и x86 изображения с реализованными API Google Возможно, если у вас нет проблем с эмуляцией с помощью Android 5, это будет работать без извлечения APK

0
Fuseteam

Проверьте папки ldpi, mdpi, hdpi и т.д. На наличие другой кнопки. Ваш эмулятор почти наверняка отличается от DPI вашего устройства.

0
Bill Mote