Сервисы 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 с устройства", взлом не работает должным образом.

Ответ 1

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

Обновление

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

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

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

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

enter image description here

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

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

Примечание CPU/ABI будет фиксироваться как ARM

enter image description here

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

Ответ 2

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

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

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

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

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

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

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

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

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

Ответ 3

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

Ответ 4

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