Android StudioエミュレーターにはAPI 23のPlayストアが付属していません


92

Android Studio AVDの最新バージョンからこのエミュレータを選択しました。

Google API

Android API 23の最新バージョンを選択しました。「with Google APIs」と表示されているため、実際にはPlayストアを含むすべてのGoogleアプリが含まれているため、Facebookなどのアプリをインストールできると思いました。

私はSOで他のスレッドを見てきましたが、これは古くなっているようです(Android StudioエミュレータにGoogle Playアプリをインストールする方法は?)。これは、ユニバーサルパッケージに基づいてGoogleアプリをインストールする手順を示していますが、Android 4.3 API 18までしかありません。http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2

API 23用のものを希望します。エミュレータにGoogle Appsパッケージをインストールする方法はありますか?

公式のAndroidエミュレータが最初からすべてのGoogleアプリに標準で付属していないのは奇妙に思われます...これはGoogleをあまりサポートしていないようであり、開発者がAPI 23のために開発するために実際のデバイスを購入する必要があることを意味する可能性があります?


イヴェットさん、ありがとう。私は、Androidコミュニティのためにこの質問への回答を得ることが重要だと思います。実際のAndroidデバイスにアクセスできない多くのAndroid開発者がいますが、すべてのツールへのアクセス権が与えられていない場合、Android向けに開発するのではないでしょうか。
Simon、

1
上記のコメントをする十分な信用がありません。Re:読み取り専用の/ systemパーティション。emulator.exeを呼び出すときに、必ず「-writable-system」引数を渡してください。例:START / B emulator.exe @ Nexus_7-2012_API_22 -no-boot-anim -writable-system
pjl

@pjl-このコメントをありがとう!回答に追加しました。
Dev-iL 2016

Googleは、Playストアのサポートをエミュレータに追加する作業をしていると述べています。その間、あなたが選択できるいくつかの回避策があります。Amazon Appstoreの使用は1つのオプションですが、それが唯一のオプションではありません。こちらをご覧ください
unforgettableidSupportsMonica

回答:


56

私は最近、API 23エミュレータでこれを行う必要があり、このガイドに従いました。API 23エミュレーターで動作するため、問題はありません。

注:すべてのクレジットは、リンクされたブログ投稿の作成者(投稿者)に提供されます。リンクが何らかの理由で壊れた場合に備えて、ここに投稿しています。

....

GAPPSパッケージをダウンロード

次に、Android AVDバージョンと一致する適切なGoogle Appsパッケージをプルダウンする必要があります。この場合、「gapps-lp-20141109-signed.zip」パッケージを使用します。このファイルは、バスケットビルドからこちらからダウンロードできます。

[pyoor@localhost]$ md5sum gapps-lp-20141109-signed.zip
367ce76d6b7772c92810720b8b0c931e gapps-lp-20141109-signed.zip

Google Playをインストールするには、次の4つのAPKをAVD(./system/priv-app/にあります)にプッシュする必要があります。

GmsCore.apk、GoogleServicesFramework.apk、GoogleLoginService.apk、Phonesky.apk

[pyoor@localhost]$ unzip -j gapps-lp-20141109-signed.zip \
system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk \
system/priv-app/GoogleLoginService/GoogleLoginService.apk \
system/priv-app/Phonesky/Phonesky.apk \
system/priv-app/GmsCore/GmsCore.apk -d ./

APKをエミュレータにプッシュする

APKを抽出したら、次のコマンドを使用してAVDを起動します。

[pyoor@localhost tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim

AVDが作成されると、最初に数分かかることがあります。開始したら、AVDシステムパーティションを読み取り/書き込みとして再マウントして、パッケージをデバイスにプッシュできるようにする必要があります。

[pyoor@localhost]$ cd ~/android-sdk/platform-tools/
[pyoor@localhost platform-tools]$ ./adb remount

次に、APKをAVDにプッシュします。

[pyoor@localhost platform-tools]$ ./adb push GmsCore.apk /system/priv-app/
[pyoor@localhost platform-tools]$ ./adb push GoogleServicesFramework.apk /system/priv-app/
[pyoor@localhost platform-tools]$ ./adb push GoogleLoginService.apk /system/priv-app/
[pyoor@localhost platform-tools]$ ./adb push Phonesky.apk /system/priv-app

利益!

最後に、次のコマンドを使用してエミュレータを再起動します。

[pyoor@localhost platform-tools]$ ./adb shell stop && ./adb shell start

エミュレータが再起動すると、メニューランチャー内にGoogle Playパッケージが表示されます。GoogleアカウントをこのAVDに関連付けると、エミュレーターの下で完全に機能するバージョンのGoogle Playが実行されます。


29
「読み取り専用ファイルシステム」エラーが表示され、それらのAPKファイルがインストールされていません。
wmac

6
残念ながら、BasketBuildはご利用いただけないようです。s.basketbuild.comは、少なくとも9/3以降ダウンしていて、ETAがアップしていないことを示しています。Googleアプリに推奨する別のソースはありますか?
Chad Schultz

1
「読み取り専用ファイルシステム」エラーが発生した場合は、コマンド「adb remount」を実行します。次に、「adb push ...」コマンドを再試行します。
Shangwu 2016

4
すべてのリンクは
機能していません

1
ギャップを取得できない人:f.lomakuit.com/download/gapps-lp-20141109-signed.zip
Manny265

51

以下は、API 23-25エミュレータで私のために働いた方法です。説明はAPI 24について提供されていますが、他のバージョンでもほぼ同じように機能します。

クレジットJon Doezaidorxpjl

読者への暖かいアドバイス:提供されたスクリプトによって自動化されるものもあるので、手順を実行する前に手順を実行してください。


  1. AndroidスタジオのAVDマネージャー(v2.2.3でテスト済み)で、「Android 7.0(Google API)」ターゲットを使用して新しいエミュレーターを作成します。 エミュレータ作成後のAVD画面。

  2. エミュレーターのアーキテクチャー(CPU / ABI)用の最新のOpen GAppsパッケージをダウンロードします。私の場合はでしたがx86_64、デバイス作成ウィザードでのイメージの選択によっては、別の場合もあります。興味深いことに、アーキテクチャは正しいAndroidバージョンよりも重要なようです(つまり、6.0のギャップは7.0エミュレータでも動作します)。

  3. .apk次のパス(からの相対パス)からファイルを抽出しますopen_gapps-x86_64-7.0-pico-201#####.zip

    .zip\Core\gmscore-x86_64.tar.lz\gmscore-x86_64\nodpi\priv-app\PrebuiltGmsCore\
    .zip\Core\gsfcore-all.tar.lz\gsfcore-all\nodpi\priv-app\GoogleServicesFramework\
    .zip\Core\gsflogin-all.tar.lz\gsflogin-all\nodpi\priv-app\GoogleLoginService\
    .zip\Core\vending-all.tar.lz\vending-all\nodpi\priv-app\Phonesky\

    オープンGAppsはどちらのツール使用して開くことができLzip圧縮を使用することを注意Lzipのウェブサイト上で見つかった12自作を使用して、またはMac上:brew install lzip。次に、例えばlzip -d gmscore-x86_64.tar.lz

    を使用7z.exelzip.exeて、必要なすべてを.apk自動的に抽出するバッチファイルを提供しています(Windowsの場合)。

    @echo off
    echo.
    echo #################################
    echo Extracting Gapps...
    echo #################################
    7z x -y open_gapps-*.zip -oGAPPS
    
    echo Extracting Lzips...
    lzip -d GAPPS\Core\gmscore-x86_64.tar.lz
    lzip -d GAPPS\Core\gsfcore-all.tar.lz
    lzip -d GAPPS\Core\gsflogin-all.tar.lz
    lzip -d GAPPS\Core\vending-all.tar.lz
    
    move GAPPS\Core\*.tar
    
    echo. 
    echo #################################
    echo Extracting tars...
    echo #################################
    
    7z e -y -r *.tar *.apk
    
    echo.
    echo #################################
    echo Cleaning up...
    echo #################################
    rmdir /S /Q GAPPS
    del *.tar
    
    echo.
    echo #################################
    echo All done! Press any key to close.
    echo #################################
    pause>nul

    これを使用するには、unzip_gapps.bat以下に示すように、スクリプトをファイル(例:)に保存し、関連するすべてのものを1つのフォルダーに配置します。 それがどのように見えるべきか...

  4. su後でアップロードするファイルの権限を変更できるようにバイナリを更新します。新しいsuバイナリは、SuperSU by Chainfireのパッケージ「Recovery flashable」にありzipます。zipを取得してどこかに展開し、次の内容のバッチファイルを同じフォルダーに作成して、最後に実行します。

    adb root
    adb remount
    
    adb push eu.chainfire.supersu_2.78.apk /system/app/
    adb push x64/su /system/xbin/su
    adb shell chmod 755 /system/xbin/su
    
    adb shell ln -s /system/xbin/su /system/bin/su
    adb shell "su --daemon &"
    adb shell rm /system/app/SdkSetup.apk
  5. すべての.apkファイルを1つのフォルダーに入れ、次の内容のバッチファイルを作成します3

    START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24 -no-boot-anim -writable-system
    adb wait-for-device
    adb root
    adb shell stop
    adb remount
    adb push PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore
    adb push GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework
    adb push GoogleLoginService.apk /system/priv-app/GoogleLoginService
    adb push Phonesky.apk /system/priv-app/Phonesky/Phonesky.apk
    adb shell su root "chmod 777 /system/priv-app/**"
    adb shell su root "chmod 777 /system/priv-app/PrebuiltGmsCore/*"
    adb shell su root "chmod 777 /system/priv-app/GoogleServicesFramework/*"
    adb shell su root "chmod 777 /system/priv-app/GoogleLoginService/*"
    adb shell su root "chmod 777 /system/priv-app/Phonesky/*"
    adb shell start

    E:\...\android-sdk\tools\emulator.exeシステム上のAndroid SDKの場所に応じてパスを変更する必要があることに注意してください。

  6. 上記のバッチファイルを実行します(コンソールは次のようになります)。

    O:\123>START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24 -no-boot-anim -writable-system
    
    O:\123>adb wait-for-device
    Hax is enabled
    Hax ram_size 0x60000000
    HAX is working and emulator runs in fast virt mode.
    emulator: Listening for console connections on port: 5554
    emulator: Serial number of this emulator (for ADB): emulator-5554
    
    O:\123>adb root
    
    O:\123>adb shell stop
    
    O:\123>adb remount
    remount succeeded
    
    O:\123>adb push PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore/
    [100%] /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
    
    O:\123>adb push GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework/
    [100%] /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
    
    O:\123>adb push GoogleLoginService.apk /system/priv-app/GoogleLoginService/
    [100%] /system/priv-app/GoogleLoginService/GoogleLoginService.apk
    
    O:\123>adb push Phonesky.apk /system/priv-app/Phonesky/Phonesky.apk
    [100%] /system/priv-app/Phonesky/Phonesky.apk
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/**"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/PrebuiltGmsCore/*"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/GoogleServicesFramework/*"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/GoogleLoginService/*"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/Phonesky/*"
    
    O:\123>adb shell start
  7. エミュレータが読み込まれたら、仮想デバイスを削除してから、同じシステムイメージを使用して別の仮想デバイスを作成します。これにより、応答しないPlayストアアプリ「Google Play開発者サービスが停止しました」などの問題が修正されます。これは、前のステップで実際にシステムイメージ自体を変更したために機能します(で変更された日付を見てくださいandroid-sdk\system-images\android-24\google_apis\x86_64\system.img)。これは、システムイメージを使用して今後作成されるすべてのデバイスにギャップがインストールされることを意味します!

  8. 新しいAVDを起動します。ロードに異常に長い時間がかかる場合は、閉じて、代わりに次のコマンドを使用して開始します。

    START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24
    adb wait-for-device
    adb shell "su --daemon &"

    AVDが起動すると、下の画像が表示されます-隅にあるPlayストアアイコンに注意してください!

Playストアがインストールされた状態で最初に起動します。


3-これらのすべてのコマンドが必要かどうかはわかりませんが、おそらく一部のコマンドはやりすぎです...動作しているようです-これは重要です。:)


2
.xzファイルの代わりに、Open Gappsには.lzファイル(gsfcore-all.tar.lzなど)が含まれているようです。私は複数のツールを試しましたが、どれも.lzファイルを解凍できないため、APKにアクセスできます。助言がありますか?
Chad Schultz

2
@Chad Schultzは、ここでツールdownload.savannah.gnu.org/releases/lzipのリンクです。Windowsで「lzip-1.11-w32.zip」をダウンロードし、次のコマンドを使用して.tarファイルに変換し、別のツールを使用してください。最終的にそれを抽出するツール。
f4b 2016

1
@ Dev-iL PlayStoreがエミュレータにインストールされますが、開きません。Nexus 5のx86_64 API 23システムイメージを使用しています。
ARK

3
これは、最新の25 / 7.1エミュレーターで動作しました。奇妙なのは/system/app/SdkSetup.apk、私のイメージには存在しなかったことだけです。どうもありがとう、これを解決しようとしてクレイジーになりました!
wilsonpage

1
どのようにして「同じシステムイメージを使用して別のイメージを作成する」のでしょうか。
gavsiu 2017

42

これで、エミュレータでPlayストアを取得するために、スクリプトを実行するパッケージをサイドロードする必要がなくなりました。Android Studio 2.4から、PlayストアがプリインストールされたAVDを作成できるようになりました。現在、Android 7.0(API 24)システムイメージを実行しているAVDでのみサポートされています。

公式ソース

PlayストアでのAVD

注:互換性のあるデバイスは、新しいPlayストアの列で示されます。


6
注:Android 7.0 (Google Play)Google APIだけでなく、Target:というシステムイメージをインストールする必要があります。現在、API 25では使用できません。API25では使用できません。システムイメージをインストールすると、[x86イメージ]タブではなく、[推奨]タブに表示されます。
アントワーヌ

2
Linux上のAndroid Studio 2.3.3がPlayストアAVDをサポートするようになりましたが、Playストアは現在x86ターゲットでのみ利用できるように見えるため、Playを取得する場合は別の方法を使用する必要があることにも注意してください。 ARM AVDに保存します。
NullColaShip 2017

APIの25、26および24に加えて、27のための画像も存在することになります
arekolek

25

最後の回答についてコメントしたかったのですが、ログインしないと回答しかできません:

「読み取り専用エラー」を解消するには、準備ができたらすぐにデバイスを停止します。私のスクリプトは次のようになります。

#!/bin/bash 
~/bin/AndroidSdk/tools/emulator @Nexus_6P_API_23 -no-boot-anim &
adb wait-for-device
adb shell stop
adb remount
adb push GmsCore.apk /system/priv-app
adb push GoogleServicesFramework.apk /system/priv-app
adb push GoogleLoginService.apk /system/priv-app
adb push Phonesky.apk /system/priv-app
adb shell start

1
これは、読み取り専用のファイルシステムエラーの解決に役立ちます。私はWindowsで作業しているので、スクリプトの最初の行を無視し、2行目をこの「START / B / tools / emulator @ Nexus_6P_API_23 -no-boot-anim」で置き換え、.bat拡張子で保存して実行しましたコマンドラインから。
zaidorx 2016

1
これは素晴らしいです。最初の2行を削除し、自分でエミュレータを起動してから、BATファイルを実行しました...チャームのように動作しました
Im Rick James

adb shell stop stopがある場合は、最初にadb rootを置きます。rootエラーである必要があります。
nutella_eater

adb rootエラーadb wait-for-deviceを防ぐため、行の直後に行を追加する必要がありRead-only file systemます。
efkan

1
これは、次のようにエミュレータコマンドに-writable-systemを追加すると機能します。〜/ android-sdk / tools / emulator @ Nexus_5X_API_23 -no-boot-anim -writable-system
reassembler

2

ここで私は、インスタンスNexus 5のAPI 24 x86用Linux上で使用するスクリプトですWITHOUT GoogleApisが。

#!/bin/sh

~/Android/Sdk/tools/emulator @A24x86 -no-boot-anim -writable-system & #where A24x86 is the name i gave to my instance
~/Android/Sdk/platform-tools/adb wait-for-device
~/Android/Sdk/platform-tools/adb root
~/Android/Sdk/platform-tools/adb shell stop
~/Android/Sdk/platform-tools/adb remount
~/Android/Sdk/platform-tools/adb push ~/gapps/PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
~/Android/Sdk/platform-tools/adb push ~/gapps/GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
~/Android/Sdk/platform-tools/adb push ~/gapps/GoogleLoginService.apk /system/priv-app/GoogleLoginService/GoogleLoginService.apk
~/Android/Sdk/platform-tools/adb push ~/gapps/Phonesky.apk /system/priv-app/Phonesky/Phonesky.apk
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/PrebuiltGmsCore /system/priv-app/GoogleServicesFramework"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/GoogleLoginService /system/priv-app/Phonesky"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/GoogleLoginService/GoogleLoginService.apk"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/Phonesky/Phonesky.apk"
~/Android/Sdk/platform-tools/adb shell start

これは私のためにそれをやった。

重要:アプリがクラッシュしないようにするには、Google Play開発者サービスに位置情報へのアクセス許可を付与することを忘れないでください。

設定->アプリ->設定(歯車のアイコン)->アプリの権限->場所->(右上メニュー)->システムを表示-> Google Playサービスを有効にする


2

行きhttp://opengapps.org/し、ご使用のプラットフォームとAndroid版のピコバージョンをダウンロードしてください。ダウンロードしたフォルダーを解凍して、
1。GmsCore.apk
2. GoogleServicesFramework.apk
3. GoogleLoginService.apk 4. Phonesky.apkを取得します。

次に、emulator.exeを見つけます。おそらく
C:\ Users \ <YOUR_USER_NAME> \ AppData \ Local \ Android \ sdk \ toolsにあります

次のコマンドを実行します:
emulator -avd <YOUR_EMULATOR'S_NAME> -netdelay none -n​​etspeed full -no-boot-anim -writable-system

注: -writable-systemを使用して、書き込み可能なシステムイメージでエミュレータを起動します。

次に、
adb root
adb
remount adb push <PATH_TO GmsCore.apk> / system / priv-app
adb push <PATH_TO GoogleServicesFramework.apk> / system / priv-app
adb push <PATH_TO GoogleLoginService.apk> / system / priv-app
adb push <PATH_TO Phonesky.apk> / system / priv-app

次に、エミュレータを再起動します
。adb shell stop
adb shell start

実行を確認するには、
adbシェルのpmリストパッケージと、googleのcom.google.android.gmsパッケージが見つかります


2

config.iniデバイスのファイルを更新し、システムイメージを再ダウンロードする必要があります。

C:\Users\USER\.android\avd\DEVICE_ID\config.ini(Windows)または~/.android/avd/DEVICE_ID/config.ini(Linux)で次の値を更新します。

PlayStore.enabled = true
image.sysdir.1=system-images\android-27\google_apis_playstore\x86\
tag.display=Google Play
tag.id=google_apis_playstore

次に、Android Studio> Tools> AVD Managerからデバイスのシステムイメージを再ダウンロードします。

以上です。デバイスを再起動すると、Playストアがインストールされます。

これはここでも回答されています:Android StudioエミュレーターにGoogle Playアプリをインストールする方法?


2

簡単な方法で解決: 初めて開く前に、次の3つの簡単な手順に従って、新しいエミュレータを作成する必要があります。

1- 「C:\ Users [user] .android \ avd [your virtual device folder]」に移動し、メモ帳などのテキストエディターで「config.ini」を開きます

2-変更

「PlayStore.enabled = false」 から 「PlayStore.enabled = true」

3-変更

「mage.sysdir.1 = system-images \ android-30 \ google_apis \ x86」

「image.sysdir.1 = system-images \ android-30 \ google_apis_playstore \ x86」


1

現在のところ、apksの/systemディレクトリへのインストールはadb pushコマンドを使用して機能しているようです。

一部の隠しサービスは/systemread-onlyモードでディレクトリを自動的に再マウントしていました。

system.imgOSからファイルをマウントし、ファイルをコピーするだけで、通常の仮想マシン(つまり、Google-Api以外の仮想マシン)にPlayストアをインストールすることができました。

# To be executed as root user in your Unix based OS
mkdir sys_temp
mount $SDK_HOME/system-images/android-23/default/x86/system.img sys_temp -o loop
cp Phonesky.apk GmsCore.apk GoogleLoginService.apk GoogleServicesFramework.apk ./sys_temp/priv-app/
umount sys_temp
rmdir sys_temp

APKファイルは、adb pullコマンドを使用して、Google Appsを実行している実際のAndroidデバイスからプルできます。

[apksの正確なパスを取得するpm list packages -fには、adbシェル内でコマンドを使用できます ]


「神秘的な」サービスが実行されているとは思いません。むしろ、修正されたように見えるエミュレータ(またはシステムイメージ)にバグがありapk/systemディレクトリにのいくつかのコピーが存在できるようになりました。それぞれapkのを正しいフォルダにプッシュしても、書き込みエラーにはなりません。私は私の答えを更新しました-それがあなたのために今うまくいくかどうかあなたは試すことができますか?
Dev-iL 2016

私は同じ問題に直面していて、apksをプッシュするときに読み取り専用ファイルシステムを渡すことができませんでした。唯一の方法は、エミュレーターandroidシステムイメージを編集し、次にWindows 8からandroidイメージを編集する方法だと思います。ありがとうございます。Android 6.0エミュレータに最新のGoogle PlayサービスとGoogle Playゲームをインストールする必要があります。
noname.cs

2
Linuxをインストールし、APKをGoogle APIを使用して6.0のsystem.imgにコピーしましたが、新しいエミュレータを作成したとき、Google PlayサービスまたはGoogle Playストアがありませんでした。Google以外のAPI ROMで再試行します。
noname.cs 16

0

Expoアプリだけが必要なReact Nativeユーザー向けに別のソリューションを追加したいだけです。

  1. Expoアプリをインストールする
  2. プロジェクトを開く
  3. [デバイス]-> [Androidで開く]をクリックします。この段階でExpoはAndroid Expoアプリをインストールし、それを開くことができます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.