私はこのエミュレータを最新バージョンのAndroid Studio AVDから選択しました。
私はAndroid API 23の最新バージョンを選択しました。「with Google API」と言っているので、私はFacebookのようなアプリをインストールできるようにPlayストアを含むすべてのGoogleアプリを実際に含むと思いました。
SOの他のスレッドが古くなっているようです( Android StudioエミュレータにGoogle Playアプリをインストールする方法? )、これに基づいてGoogle Appsをインストールする手順を説明します。ユニバーサルパッケージですが、Android 4.3 API 18までしか使用できません。 http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2
API 23用のものが欲しいのですが、エミュレータにGoogle Appsパッケージをインストールする方法はありますか?
公式のAndroidエミュレータがそもそもすべてのGoogleアプリに標準装備されていないのは不思議に思えます。 ?
私は最近API 23エミュレータでこれをしなければなりませんでした、そして このガイド に従ってください。これはAPI 23エミュレータでも動作するので、問題ないはずです。
注:すべての功績は、リンクされたブログ投稿(pyoor)の著者に行きます。何らかの理由でリンクが切れた場合に備えて、ここに投稿しています。
…….
GAPPSパッケージをダウンロードする
次に、Android AVDのバージョンと一致する適切なGoogle Appsパッケージをプルダウンする必要があります。この場合は、 'gapps-lp-20141109-signed.Zip'パッケージを使用します。そのファイルはBasketBuild here からダウンロードできます。
[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が作成されるとき、これには数分かかることがあります。起動したら、パッケージをデバイスにプッシュできるように、AVDsシステムパーティションを読み書き可能として再マウントする必要があります。
[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パッケージがメニューランチャー内に表示されます。このAVDにGoogleアカウントを関連付けると、エミュレータの下でGoogle Playのフルバージョンが実行されます。
下記は私のためにAPI23-25エミュレータで働いた方法です。説明はAPI 24用に提供されていますが、他のバージョンでもほぼ同じように機能します。
クレジット: Jon Doe 、 - zaidorx 、 pjl =。
読者への暖かいアドバイス:いくつかは提供されたスクリプトによって自動化されているので、それらをたどる前にステップをちょうど通過してください。
AndroidスタジオのAVDマネージャ(v2.2.3でテスト済み)で、 "Android 7.0(Google API)"ターゲットを使用して新しいエミュレータを作成します。
エミュレータのアーキテクチャ(CPU/ABI)用の最新の Open GApps パッケージをダウンロードしてください。私の場合はx86_64
でしたが、デバイス作成ウィザードで選択したイメージによっては、それ以外のものになる可能性があります。興味深いことに、アーキテクチャは正しいAndroidバージョンよりも重要であると考えられます(つまり、6.0用のgappも7.0エミュレータ上で動作します)。
次のパスから.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\
Open GAppではLzip圧縮が使用されていることに注意してください。これは、Lzip Webサイトにあるいずれかのツールを使用して開くことができます。1 、 2またはMacでは、homebrew:brew install lzip
を使用してください。その後lzip -d gmscore-x86_64.tar.lz
。
7z.exe
とlzip.exe
を利用して、必要なすべての.apk
sを自動的に抽出するバッチファイルを提供しています(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つのフォルダに入れます。
後でアップロードするファイルのアクセス権を変更できるように、su
バイナリを更新します。新しいsu
バイナリはChainSireによるSuperSパッケージ "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
すべての.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
システム上のAndroid SDKの場所に応じて、パスE:\...\Android-sdk\tools\emulator.exe
を変更する必要があります。
上記のバッチファイルを実行します(コンソールはその後このようになるはずです)。
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
エミュレータが - をロードしたら、仮想デバイスを削除し、同じシステムイメージを使用して別の仮想デバイスを作成します。これにより、応答しないPlayストアアプリ「Google Play Servicesが停止しました」などの問題が修正されます。これは、以前のステップでシステムイメージ自体を実際に修正していたので(Android-sdk\system-images\Android-24\google_apis\x86_64\system.img
のDate dateを見てください) )これは、システムイメージを使用して今後作成されるすべてのデバイスにgappがインストールされることを意味します。
新しいAVDを起動します。ロードに異常に長い時間がかかる場合は、それを閉じて代わりに次のコマンドを使って起動してください。
START /B E:\...\Android-sdk\tools\emulator.exe @Nexus_6_API_24
adb wait-for-device
adb Shell "su --daemon &"
AVDが起動すると、下の画像が表示されます - 隅にあるPlayストアのアイコンに注目してください。
3 - これらのコマンドすべてが必要であるとは確信できません、そしておそらくそれらのいくつかはやり過ぎです...それはうまくいくようです - それは重要なことです。 :)
これで、Playストアをエミュレータにインストールするためにスクリプトを実行するパッケージをサイドロードする必要がなくなりました。 Android Studio 2.4以降では、Playストアが事前にインストールされたAVDを作成できます。現在のところ、Android 7.0(API 24)システムイメージを実行しているAVDでのみサポートされています。
注:互換性のあるデバイスは新しいPlayストア欄に表示されます。
最後の回答についてコメントしたいのですが、ログインしないと回答することしかできません。
「読み取り専用エラー」を解消するには、準備ができたらすぐにデバイスを停止してください。私のスクリプトは次のようになります。
#!/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
http://opengapps.org/ に行き、picoバージョンのプラットフォームと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
コマンドを実行します。
エミュレータ-avd <ユーザ名> -netdelayなし-netspeedフル-no-boot-anim -writable-system
注:書き込み可能なシステムイメージでエミュレータを起動するには、-writable-systemを使用してください。
その後、
adb root
adbの再マウント
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シェルストップ
adbシェル開始
実行を確認するには
adbシェルpmリストパッケージを見つけるとgoogle用com.google.Android.gmsパッケージ
今のところ、/system
ディレクトリへのapksのインストールはadb Push
コマンドを使って動作しているようです。
いくつかの隠されたサービスは自動的に/system
モードでread-only
ディレクトリを再マウントしていました。
どのような方法でも、私のOSからsystem.img
ファイルをマウントしてファイルをコピーするだけで、Playストアを通常の仮想マシン(つまり、Google-Api以外の仮想マシン)にインストールできました。
# 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
adb pull
コマンドを使用して、Google Appsを実行している実際のAndroidデバイスからAPKファイルを取得できます。
[apksの正確なパスを取得するには、adbシェル内でpm list packages -f
コマンドを使用できます。
これは私がインスタンス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サービスを有効にする
Expoアプリだけが必要なReact Nativeユーザーのための別のソリューションを追加したいだけです。