Сервисы 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 с устройства" не работает должным образом.
4 ответа
Сервисы 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 образ системы
Чтобы создать виртуальное устройство:
- Откройте диспетчер виртуальных устройств Android
- Создать новое устройство
- Введите имя AVD
- Установите цель для API Google (Google Inc.) - Уровень API 17
- Сохраните ваше виртуальное устройство и запустите его...
Примечание CPU/ABI будет зафиксирован как ARM
Теперь вы сможете использовать Сервисы Google Play в эмуляторе. Следует отметить, что для работы Служб Google Play необходимо правильно настроить цель в своем проекте Android на API Google.
Я пробовал большинство комбинаций запуска эмулятора, но с и без 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 и т. Д.) - просто зло.
Окончательное обновление, прежде чем принять мой ответ; хотя в эмуляторе отображается правильная кнопка с правильным стилем, я все еще не могу отобразить диалоговое окно "выбрать учетную запись" в эмуляторе. Когда / если я это сделаю, я поделюсь правильным решением здесь.
Проверьте папки ldpi, mdpi, hdpi и т. Д. На наличие другой кнопки. Ваш эмулятор почти наверняка отличается от DPI вашего устройства.