web-dev-qa-db-ja.com

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

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

Google API

私は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アプリに標準装備されていないのは不思議に思えます。 ?

84
Simon

私は最近API 23エミュレータでこれをしなければなりませんでした、そして このガイド に従ってください。これはAPI 23エミュレータでも動作するので、問題ないはずです。

注:すべての功績は、リンクされたブログ投稿(pyoor)の著者に行きます。何らかの理由でリンクが切れた場合に備えて、ここに投稿しています。

…….

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

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

[[email protected]]$ 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

[[email protected]]$ 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を起動しましょう。

[[email protected] tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim

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

[[email protected]]$ cd ~/Android-sdk/platform-tools/
[[email protected] platform-tools]$ ./adb remount

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

[[email protected] platform-tools]$ ./adb Push GmsCore.apk /system/priv-app/
[[email protected] platform-tools]$ ./adb Push GoogleServicesFramework.apk /system/priv-app/
[[email protected] platform-tools]$ ./adb Push GoogleLoginService.apk /system/priv-app/
[[email protected] platform-tools]$ ./adb Push Phonesky.apk /system/priv-app

利益!

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

[[email protected] platform-tools]$ ./adb Shell stop && ./adb Shell start

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

50
Andy Shephard

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

クレジットJon Doe 、 - zaidorxpjl =。

読者への暖かいアドバイス:いくつかは提供されたスクリプトによって自動化されているので、それらをたどる前にステップをちょうど通過してください。


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

  2. エミュレータのアーキテクチャ(CPU/ABI)用の最新の Open GApps パッケージをダウンロードしてください。私の場合はx86_64でしたが、デバイス作成ウィザードで選択したイメージによっては、それ以外のものになる可能性があります。興味深いことに、アーキテクチャは正しいAndroidバージョンよりも重要であると考えられます(つまり、6.0用のgappも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\
    

    Open GAppではLzip圧縮が使用されていることに注意してください。これは、Lzip Webサイトにあるいずれかのツールを使用して開くことができます。12またはMacでは、homebrew:brew install lzipを使用してください。その後lzip -d gmscore-x86_64.tar.lz

    7z.exelzip.exeを利用して、必要なすべての.apksを自動的に抽出するバッチファイルを提供しています(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つのフォルダに入れます。 What it should look like...

  4. 後でアップロードするファイルのアクセス権を変更できるように、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
    
  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
    

    システム上のAndroid SDKの場所に応じて、パスE:\...\Android-sdk\tools\emulator.exeを変更する必要があります

  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 Servicesが停止しました」などの問題が修正されます。これは、以前のステップでシステムイメージ自体を実際に修正していたのでAndroid-sdk\system-images\Android-24\google_apis\x86_64\system.imgDate dateを見てください) )これは、システムイメージを使用して今後作成されるすべてのデバイスにgappがインストールされることを意味します。

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

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

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

First boot with Play Store installed.


3 - これらのコマンドすべてが必要であるとは確信できません、そしておそらくそれらのいくつかはやり過ぎです...それはうまくいくようです - それは重要なことです。 :)

48
Dev-iL

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

公式情報源

AVD with Play Store

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

37
Prerak Sola

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

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

#!/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
23
Jon Doe

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パッケージ

2
Saini Arun

今のところ、/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コマンドを使用できます。

1
harish2704

これは私がインスタンス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サービスを有効にする

1
Richard

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

  1. Expo アプリをインストールする
  2. プロジェクトを開く
  3. [デバイス] - > [Androidで開く]の順にクリックします。この段階では、Expoがexpo Androidアプリをインストールして開くことができます。
0
chenop