web-dev-qa-db-ja.com

エミュレーターでのGoogle Play Services、Google Plusログインボタンなどの実装

Google PlusログインボタンをAndroidアプリに統合するとき、実際のデバイスとエミュレーターでボタンがどのように表示されるかについていくつかの違いを観察しています。 PlusサービスAPKはエミュレータにインストールされませんが、デバイスから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 + apk's from device」ハックが適切に機能しない可能性があります。

15
Marius Kjeldahl

Google Play開発者サービスは4.2.2バージョンのAndroid Emulatorで動作し、 Androidのドキュメント:Google Play開発者サービスのセットアップ で説明されているように公式にサポートされています。

更新

API 19以降のIntel/x86イメージ(HAXM互換)を使用できるようになりました。ARMでは、ほとんどのイメージでGoogle Play Servicesを利用できます。

イメージのセットアップ

仮想デバイスマネージャーに適切なイメージを取得するには:

  • Android SDK Managerを開きます
  • グループを開くAndroid 4.2.2(API 17)
  • Google APIを確認する
  • チェックARM EABI v7aシステムイメージ

enter image description here

仮想デバイスを作成するには:

  • Android Virtual Device Managerを開きます
  • 新しいデバイスを作成する
  • AVD名を入力してください
  • ターゲットをGoogle API(Google Inc.)-APIレベル17に設定します
  • 仮想デバイスを保存して起動します...

CPU/ABIはARMとして修正されます

enter image description here

これで、エミュレーターでGoogle Play開発者サービスを使用できるようになります。 Google Play Servicesが機能するためには、Google APIへのAndroidプロジェクトでターゲットを適切に設定する必要があります。

53
class

エミュレータを実行するほとんどの組み合わせを試しましたが、Google APIを使用して、または使用しなかったため、x86モードとアームモードの両方でテストしました。 Galaxy Nexus携帯電話からapkを引き出して、エミュレーターで正しく動作させる方法はありませんでした。

これは、Playストアを立ち上げて実行することにある程度関係していると思いますので、それを試してみて、さらに幸運があるかどうかを確認しました。私はしませんでした;動作させることもできませんでした。 Playストアのアイコンが表示されて起動できますが、すぐに閉じます。

ただし、動作したのは、ページの下部にあるapkをダウンロードしてインストールすることでした。

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

Vendingパッケージとgmsパッケージをインストールすると、ログインボタンがエミュレーターの下に完全に表示されます。実際に実際のログイン機能をまだ実装していないため、実際に機能するかどうかはわかりませんが、デバイス上のデバイスとエミュレーターでは、少なくともボタンは同じように見えます。

また、Google Play Servicesソフトウェアをダウンロードして(Android SDKマネージャー)の[Extras]の下を見て)、プロジェクトにライブラリgoogle-play-services_libをインストールする必要があります(File-Import-Android -既存Androidワークスペースにコードを入力し、次に/ opt/adt-bundle-linux/sdk/extras/google/google_play_services/libprojectを参照してgoogle-play-services_libを選択します)。

もう1つの興味深いヒントは、これは「純粋な」Androidエミュレーターセットアップでのみ機能し、「Google API」セットアップでは機能しないことです。後者は、エミュレーターにインストールされたこれらのアプリの一部を持っているようです既に(目に見えなく、動作していません)、既存のバージョンを削除して上記のように動作するカスタムapkファイルをインストールすることができませんでした。adbremove、adb install、adb install -r、さらにはディレクトリの削除をテストしました/ dataからも失敗しました。Googleがこれを困難にしようとしているように見えます。

Googleがこれを非常に難しくしていることに失望しています。 Googleには、こうしたものをエミュレーターに入れないようにするための奇妙なライセンス上の理由があるかもしれませんが、人々が本当にAndroidアプリでサービスを使用したい場合は、これらのサービスをエミュレーターで使用可能にする必要があります。常にデバイス上で開発するように強制する(そうでなければ優れたエミュレーターを使用可能にする)か、ユーザーにフープ(多くのグーグル、apkの非公式/ハッキングバージョンのインストールなど)をジャンプさせるのは悪です。

回答を受け入れる前の最終更新。正しいスタイルの正しいボタンがエミュレーターに表示されるようになりましたが、「アカウントを選択」ダイアログをエミュレーターに表示することができません。いつ/するなら、ここで適切な解決策を共有します。

4
Marius Kjeldahl

Android image with google API implemented iは、API 21からARMと、Google APIが実装されたx86イメージがあり、おそらくAndroid 5 APKを抽出せずに動作します

0
Fuseteam

別のボタングラフィックについては、ldpi、mdpi、hdpiなどのフォルダーを確認してください。エミュレータは、ほぼ確実にデバイスとは異なるDPIです。

0
Bill Mote