При интеграции кнопки входа в 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
Я заметил, что из API 21 есть изображения ARM и x86 с использованием API Google API
возможно, если у вас нет проблем с эмуляцией с помощью android 5, он будет работать без извлечения APK