1.基本インストール(初回)
(1)ダウンロード
ダウンロード元:https://developer.android.com/studio/preview?hl=ja
※android-studio-2023.3.1.6-windows.exe を起動します。
(2)インストール
①インストーラ起動後、「Next」をクリックします。
②「Next」をクリックします。
③「Next」をクリックします。
④「Install」をクリックします。
(するとインストールが開始されます・・・)
⑤「Next」をクリックします。
⑥『start Android Studio』のチェックを外して「Finish」をクリックします。
上記で基本インストールは完了です。続けて以降環境設定になります。
2.環境設定(初回)
(1)コンポーネント指定・インストール
①Android Studioを起動します。
②「OK」をクリックします。※セッティングファイルを用意してある場合は指定する。
③どちらでもいいです。
④「Next」をクリックします。
⑤通常『Standart』で構わない(前回はそうしていた)が、今回は『Custom』を選択し、「Next」をクリックしました。
⑥全て選択後に、「Next」をクリックしました。
⑦「Next」をクリックします。
⑧「Next」をクリックします。
⑨全てのライセンスについて『Accept』を選択後、
(コンポーネントのインストールが開始されます・・・)
(2)ログの確認
①メッセージの内容:
Preparing “Install Android Emulator v.35.1.1”.
Downloading https://dl.google.com/android/repository/emulator-windows_x64-11577608.zip
“Install Android Emulator v.35.1.1” ready.
Installing Android Emulator in C:\Users\ysyam\AppData\Local\Android\Sdk\emulator
“Install Android Emulator v.35.1.1” complete.
“Install Android Emulator v.35.1.1” finished.
Preparing “Install Google APIs Intel x86_64 Atom System Image API 34 (revision 12)”.
Downloading https://dl.google.com/android/repository/sys-img/google_apis/x86_64-34_r12.zip
“Install Google APIs Intel x86_64 Atom System Image API 34 (revision 12)” ready.
Installing Google APIs Intel x86_64 Atom System Image in C:\Users\ysyam\AppData\Local\Android\Sdk\system-images\android-34\google_apis\x86_64
“Install Google APIs Intel x86_64 Atom System Image API 34 (revision 12)” complete.
“Install Google APIs Intel x86_64 Atom System Image API 34 (revision 12)” finished.
Preparing “Install Android Emulator hypervisor driver (installer) v.2.0.0”.
Downloading https://dl.google.com/android/repository/gvm-windows_v2_0_0.zip
“Install Android Emulator hypervisor driver (installer) v.2.0.0” ready.
Installing Android Emulator hypervisor driver (installer) in C:\Users\ysyam\AppData\Local\Android\Sdk\extras\google\Android_Emulator_Hypervisor_Driver
“Install Android Emulator hypervisor driver (installer) v.2.0.0” complete.
“Install Android Emulator hypervisor driver (installer) v.2.0.0” finished.
Preparing “Install Sources for Android 34 (revision 2)”.
Downloading https://dl.google.com/android/repository/sources-34_r01.zip
“Install Sources for Android 34 (revision 2)” ready.
Installing Sources for Android 34 in C:\Users\ysyam\AppData\Local\Android\Sdk\sources\android-34
“Install Sources for Android 34 (revision 2)” complete.
“Install Sources for Android 34 (revision 2)” finished.
Preparing “Install Android SDK Platform 34 (revision 3)”.
Downloading https://dl.google.com/android/repository/platform-34-ext7_r03.zip
“Install Android SDK Platform 34 (revision 3)” ready.
Installing Android SDK Platform 34 in C:\Users\ysyam\AppData\Local\Android\Sdk\platforms\android-34
“Install Android SDK Platform 34 (revision 3)” complete.
“Install Android SDK Platform 34 (revision 3)” finished.
Preparing “Install Android SDK Build-Tools 34 v.34.0.0”.
Downloading https://dl.google.com/android/repository/build-tools_r34-windows.zip
“Install Android SDK Build-Tools 34 v.34.0.0” ready.
Installing Android SDK Build-Tools 34 in C:\Users\ysyam\AppData\Local\Android\Sdk\build-tools\34.0.0
“Install Android SDK Build-Tools 34 v.34.0.0” complete.
“Install Android SDK Build-Tools 34 v.34.0.0” finished.
Preparing “Install Android SDK Platform-Tools v.35.0.1”.
Downloading https://dl.google.com/android/repository/platform-tools_r35.0.1-win.zip
“Install Android SDK Platform-Tools v.35.0.1” ready.
Installing Android SDK Platform-Tools in C:\Users\ysyam\AppData\Local\Android\Sdk\platform-tools
“Install Android SDK Platform-Tools v.35.0.1” complete.
“Install Android SDK Platform-Tools v.35.0.1” finished.
Parsing C:\Users\ysyam\AppData\Local\Android\Sdk\build-tools\34.0.0\package.xml
Parsing C:\Users\ysyam\AppData\Local\Android\Sdk\emulator\package.xml
Parsing C:\Users\ysyam\AppData\Local\Android\Sdk\extras\google\Android_Emulator_Hypervisor_Driver\package.xml
Parsing C:\Users\ysyam\AppData\Local\Android\Sdk\platform-tools\package.xml
Parsing C:\Users\ysyam\AppData\Local\Android\Sdk\platforms\android-34\package.xml
Parsing C:\Users\ysyam\AppData\Local\Android\Sdk\sources\android-34\package.xml
Parsing C:\Users\ysyam\AppData\Local\Android\Sdk\system-images\android-34\google_apis\x86_64\package.xml
Android SDK is up to date.
Unable to install Android Emulator hypervisor driver
Your CPU does not support required features (VT-x or SVM).
Unfortunately, your computer does not support hardware accelerated virtualization.
Here are some of your options:
1) Use a physical device for testing
2) Develop on a Windows/OSX computer with an Intel processor that supports VT-x and NX
3) Develop on a Linux computer that supports VT-x or SVM
4) Use an Android Virtual Device based on an ARM system image
(This is 10x slower than hardware accelerated virtualization)
Creating Android virtual device
Android virtual device Pixel_3a_API_34 was successfully created
②エラーと原因
これは、仮想マシン(Hyper-Vを使用しているWindows 11の仮想マシン)なので、やむを得ないことでもあるのですが…ハードウェアアクセラレーションを利用した仮想化がサポートされていないことを示しています。これは、Androidエミュレータが高速に実行されるために必要なVT-x(Intelの仮想化技術)やAMDのSVM(Secure Virtual Machine)が、現在のシステム設定では使用できないことを意味しています。そのため、エミュレータの高速化機能は、うまく動作しません(確認済み)
3.環境設定(追加)
上記手順時の問題について対応しました。
参考URL:(前回記事「[基礎知識]Android Studioインストール記録」)
(1)Android Emulator 環境確認
基本設定はこちら「Android エミュレーター – AMD プロセッサと Hyper-V のサポート」を参照しました。
また具体的な過去の対応記録は別記事「[基礎知識]Flutter開発環境準備/6.ターゲットAndroidデバイス構成」を参照願います。
以下今回対応記録です。
設定要件
(AMDプロセッサの場合)以降の要件が必要になります。
⓵AMD Ryzen プロセッサ
⓶Android Studio 3.2 ベータ版以降
⓷Android Emulator v27.3.8以降
⓸Windows機能の「Windowsハイパーバイザープラットフォーム」ON
⑤仮想化拡張機能(AMD-V)ON
⑥x86 Android 仮想デバイス (AVD) 設定
①は問題なし、②は今回のJellyfishインストールで完了、③も(上記ログでPreparing “Install Android Emulator v.35.1.1”.との記載があり)問題なし、④も対応完了。
あとは⑤、⑥についての対応となりました。
(2)仮想化拡張機能(AMD-V)有効化
次は上記⑤の対応(ホストマシン側での設定)になります。
> Set-VMProcessor -VMName <仮想マシン名> -ExposeVirtualizationExtensions $true
※参考URL:「入れ子になった仮想化の構成」
(3)Android SDK コマンドライン ツール
以降はゲストOS側での設定になります。
①Android Studio 起動 → 「SDK Manager」 起動します。
②SDK Manager → 「SDK Tools」 選択後、以下にチェックを入れて、「OK」します。
□ Android SDK Command-line Tools (latest)
※今回は、Google USB Driver にもチェックを入れました。
③「OK」します。
(インストールが開始されます・・・)
④「Finish」をクリックします。
(4)SDK Platform
上記(3)の②で、もし最新版にチェックが入っていない場合は、要インストールです。
※現最新版:Android 14.0 / API Level 34 (Rev.3)
(5)ANDROID_HOME環境変数設定
①Android Studio 起動 → 「Android SDK」 で、Android SDK のパスを確認します。
②以下の環境変数設定、パス設定をします。
環境変数設定) ANDROID_HOME : C:\Users\ysyam\AppData\Local\Android\Sdk
パス設定) %ANDROID_HOME%、%ANDROID_HOME%\platform-tools、
%ANDROID_HOME%\cmdline-tools、%ANDROID_HOME%\emulator
(6)AVD(Android仮想デバイス)
新規作成・変更・参照は以下の手順で行えますが、次のコマンドも利用できます。
(a) emulator -list-avds : 使用可能なAVD一覧表示
※emulatorコマンドは、C:\Users\<ユーザー名>\AppData\Local\Android\Sdk\emulator にあります。
(b) emulator -avd <使用可能なAVD一覧にあるAVD名> : AVDの起動
※参考URL:「Androidエミュレータ設定」
※URL: (AVD追加手順)https://developer.android.com/studio/run/managing-avds?hl=ja#about
上記は、すでに作成済みのAVD操作についてですが、以下は、新規で作成する場合の手順です。
①Android Studio 起動 → 「Virtual Device Manager (VDM)」 選択
②デバイス起動します。
起動の様子は上記(既存AVD起動)の時と同様です。
(7)Android Emulator hypervisor driver
要確認!AVD設定画面で、Recommendation欄に、
『Android Emulator hypervisor driver is not installed.』
と表示されていた場合は、要インストールです。
①(上図右下の、青色の)『Install Android Emulator hypervisor driver』をクリックします。
②「Next」をクリックします。
③「Finish」をクリックします。
④「Finish」をクリックします。
4.動作確認(エミュレータ)
上記作業完了後(Android Studioを起動せずに)コマンドによるエミュレータの動作確認を行いました。
※試行錯誤を含みます。
(1)仮想デバイス(AVD)一覧表示
次のコマンドで(エミュレート可能な)仮想デバイス(AVD)の一覧を表示しました。
> emulator -list-avds
結果:
INFO | Storing crashdata in: C:\Users\ysyam\AppData\Local\Temp\AndroidEmulator\emu-crash-35.1.1.db, detection is enabled for process: 8608
Pixel_3a_API_34
testphone01_API_34
※作成済みの仮想デバイス表示は成功です。
(2)仮想デバイス(AVD)のエミュレータ起動
(上記までに作成・確認済みの)仮想デバイスをエミュレートします。
> emulator -avd testphone01_API_34
結果:
以下の様にエミュレータが起動しました。
※起動時間は1秒程度と(前回Windows10仮想マシンの約5分と比較すると)格段の速さになっていました。(びっくり!なんかAVDの設定違うのかな…)
…もう開発はWindows10は止めて、Window11に全部移行するべきなんですね。
結果ログ:
INFO | Storing crashdata in: C:\Users\ysyam\AppData\Local\Temp\AndroidEmulator\emu-crash-35.1.1.db, detection is enabled for process: 3156
INFO | Android emulator version 35.1.1.0 (build_id 11577608) (CL:N/A)
INFO | Found systemPath C:\Users\ysyam\AppData\Local\Android\Sdk\system-images\android-34\google_apis\x86_64\
INFO | Storing crashdata in: C:\Users\ysyam\AppData\Local\Temp\AndroidEmulator\emu-crash-35.1.1.db, detection is enabled for process: 8740
INFO | Duplicate loglines will be removed, if you wish to see each individual line launch with the -log-nofilter flag.
INFO | IPv4 server found: 192.168.0.1
INFO | Ignore IPv6 address: 182a:45d3:7f01:0:2016:45d3:7f01:0
INFO | Ignore IPv6 address: 182a:45d3:7f01:0:2016:45d3:7f01:0 (2x)
INFO | Ignore IPv6 address: 30:45d3:7f01:0:2016:45d3:7f01:0
INFO | Ignore IPv6 address: 30:45d3:7f01:0:2016:45d3:7f01:0 (2x)
INFO | Critical:
INFO | Warning:
INFO | Warning: (6x)
INFO | Crash reports will be automatically uploaded to: https://clients2.google.com/cr/report
library_mode swiftshader_indirect gpu mode swiftshader_indirect
INFO | Initializing hardware OpenGLES emulation support
android_startOpenglesRenderer: gpu infoGPU #1
Make: 1414
Model: Microsoft Basic Render Driver
Device ID: 008c
I0323 10:43:18.179481 8936 HealthMonitor.cpp:279] HealthMonitor disabled.
cannot add library vulkan-1.dll: failed (※1)
E0323 10:43:18.184309 8936 VkCommonOperations.cpp:535] Dispatch is invalid.
E0323 10:43:18.184816 8936 FrameBuffer.cpp:318] Failed to initialize global Vulkan emulation. Disable the Vulkan support.
E0323 10:43:18.289378 8936 VkCommonOperations.cpp:1271] VkEmulation is either not initialized or destroyed.
I0323 10:43:18.289603 8936 FrameBuffer.cpp:506] Graphics Adapter Vendor Google (Google Inc.)
(※4)
I0323 10:43:18.290233 8936 FrameBuffer.cpp:507] Graphics Adapter Android Emulator OpenGL ES Translator (Google SwiftShader)
I0323 10:43:18.290729 8936 FrameBuffer.cpp:508] Graphics API Version OpenGL ES 3.0 (OpenGL ES 3.0 SwiftShader 4.0.0.1)
I0323 10:43:18.291199 8936 FrameBuffer.cpp:509] Graphics API Extensions GL_OES_EGL_sync GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_depth24 GL_OES_depth32 GL_OES_element_index_uint GL_OES_texture_float GL_OES_texture_float_linear GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_packed_depth_stencil GL_OES_vertex_half_float GL_OES_standard_derivatives GL_OES_texture_npot GL_OES_rgb8_rgba8 GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_texture_format_BGRA8888 GL_APPLE_texture_format_BGRA8888
I0323 10:43:18.291704 8936 FrameBuffer.cpp:510] Graphics Device Extensions N/A
INFO | Sending adb public key [QAAAACVe6g1TcoutqCqbaSEB7uj9IRROtaEWmaMWY6XhCGH67gIySntY8JiGIxC7raCNRr1husGGLCYXQF6g1ruTSzwnIu1yNx2ZkRn0bqWyrC7NiUwVLuqQW27+0ZxOGoM5SJLeeKhmYq0I4c0xOZN0VmxcDn1LulSsX5T2/pQGDmJ6BsWaLB0/CllhxaLDYPOemUZrlymDCma+ab5RJsPop0QI2r88Nyzn/BQ+5HduapG0UFc0nU7IlfhvuJDTgpcquaHjHWchp8NAKDp63KUS8vH1RXFsvghCaXR3Cf/NLS6LKIKYQZ6YrNU1//wFi4lzADpPZKytaNd+T2qw6loIgHJ5WnPNivK+NTmXG2V9wUmLlJ9NeOZaFYR9miYIE0m0qxjP3XW3gwwhxoNgzcvFHvtnapKxA7hALr5ddRpO2pCay5zcpDyZMHLL3dVFJPIi9o23gc1RVuO98jwsPxgVnvJFezhu+dln4z3hDaCEAe0UMTbyLgMtjFm7f/m2dgh9PnpWLhVAK13eEwG20U+aN5JDTn2+butJC8kkw5OxM8M/VJpdQTIzV7wm4gySs66KjP54bzcBebzo730nrUmVRmN3gmVBPTqz1xbyJDdjKzLARi/mcYEOhv+icmJxTLqQ5l72rYf3gTh1j/6D5V7WV084GMmgYJKs8SQcoG5LPGj0BTm0VwEAAQA= @unknown]
AEHD is operational
host doesn’t support requested feature: CPUID.01H:ECX.xsave [bit 26]
host doesn’t support requested feature: CPUID.01H:ECX.avx [bit 28]
host doesn’t support requested feature: CPUID.01H:ECX.xsave [bit 26]
host doesn’t support requested feature: CPUID.01H:ECX.avx [bit 28]
host doesn’t support requested feature: CPUID.01H:ECX.xsave [bit 26]
host doesn’t support requested feature: CPUID.01H:ECX.avx [bit 28]
host doesn’t support requested feature: CPUID.01H:ECX.xsave [bit 26]
host doesn’t support requested feature: CPUID.01H:ECX.avx [bit 28]
netsimd I 03-23 01:43:18.486 rust_main.rs:96 – netsim artifacts path: “C:\Users\ysyam\AppData\Local\Temp\netsimd”
netsimd I 03-23 01:43:18.497 rust_main.rs:99 – NetsimdArgs {
fd_startup_str: None,
no_cli_ui: false,
no_web_ui: false,
pcap: false,
disable_address_reuse: false,
hci_port: None,
connector_instance: None,
instance: None,
logtostderr: false,
dev: false,
vsock: None,
config: None,
test_beacons: false,
no_test_beacons: false,
no_shutdown: false,
version: false,
}
pc_memory_init: above 4g size: 140000000
dsound: Could not initialize DirectSoundCapture (※2)
dsound: Reason: No sound driver is available for use, or the given GUID is not a valid DirectSound device ID
INFO | Monitoring duration of emulator setup.
WARNING | The emulator now requires a signed jwt token for gRPC access! Use the -grpc flag if you really want an open unprotected grpc port
INFO | Using security allow list from: C:\Users\ysyam\AppData\Local\Android\Sdk\emulator\lib\emulator_access.json
WARNING | *** Basic token auth should only be used by android-studio ***
INFO | The active JSON Web Key Sets can be found here: C:\Users\ysyam\AppData\Local\Temp\avd\running\8740\jwks\7541de28-ad80-4bcb-b23c-34a16fba394a\active.jwk
INFO | Scanning C:\Users\ysyam\AppData\Local\Temp\avd\running\8740\jwks\7541de28-ad80-4bcb-b23c-34a16fba394a for jwk keys.
INFO | Started GRPC server at 127.0.0.1:8554, security: Local, auth: +token
INFO | Advertising in: C:\Users\ysyam\AppData\Local\Temp\avd\running\pid_8740.ini
I0323 10:43:18.800235 1800 FrameBuffer.cpp:2856] setDisplayConfigs w 1080 h 2400 dpiX 420 dpiY 420
I0323 10:43:18.804412 1800 FrameBuffer.cpp:2869] setDisplayActiveConfig 0
INFO | Activated packet streamer for bluetooth emulation
ERROR | Unable to connect to adb daemon on port: 5037 (※3)
ERROR | Unable to connect to adb daemon on port: 5037
INFO | Loading snapshot ‘default_boot’…
INFO | OpenGL Vendor=[Google (Google Inc.)]
INFO | OpenGL Renderer=[Android Emulator OpenGL ES Translator (Google SwiftShader)]
INFO | OpenGL Version=[OpenGL ES 3.0 (OpenGL ES 3.0 SwiftShader 4.0.0.1)]
WARNING | Device ‘sdcard’ does not have the requested snapshot ‘default_boot’
WARNING | Failed to load snapshot ‘default_boot’
INFO | Warning:
C:/buildbot/src/android/emu-35-1-release/hardware/google/gfxstream/host/gl/glestranslator/GLES_V2/GLESv2Imp.cpp:glCreateShader:1153 error null ctx
C:/buildbot/src/android/emu-35-1-release/hardware/google/gfxstream/host/gl/glestranslator/GLES_V2/GLESv2Imp.cpp:glCreateShader:1153 error null ctx
INFO | Warning:
ERROR | Error reading vhal json
INFO | Wait for emulator (pid 8740) 20 seconds to shutdown gracefully before kill;you can set environment variable ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL(in seconds) to change the default value (20 seconds)
INFO | Saving with gfxstream=1
INFO | OpenGL Vendor=[Google (Google Inc.)]
INFO | OpenGL Renderer=[Android Emulator OpenGL ES Translator (Google SwiftShader)]
INFO | OpenGL Version=[OpenGL ES 3.0 (OpenGL ES 3.0 SwiftShader 4.0.0.1)]
検討と対応:
上記ログにいくつか問題が見られたので(一応)以下の通り確認しました。
※1)Vulkanのエミュレーションの初期化失敗: 「Failed to initialize global Vulkan emulation」のメッセージは、エミュレータがVulkan APIをエミュレートすることに失敗したことを意味しています。
Vulkanエミュレーションについて:
Vulkanエミュレーションは、Vulkan APIの呼び出しをエミュレートするプロセスです。Vulkan APIは、高効率のクロスプラットフォームのグラフィックスとコンピュートAPIで、特にゲームやリアルタイムの3Dアプリケーションで利用されています。このAPIは、GPUのリソースをより直接的に制御し、レンダリング性能を最大化することを目的としています。
AndroidエミュレータにおけるVulkanエミュレーションは、ハードウェアが直接Vulkanをサポートしていない場合に、その機能をソフトウェアレベルで模倣することで、開発者がVulkanベースのアプリケーションをテストできるようにするための機能です。
Vulkanエミュレーションが「特に問題ではない場合が多い」というのは、多くのAndroidアプリケーション、特にエンタープライズアプリケーションや一般的なユーザー向けアプリでは、Vulkanの高度なグラフィックス機能を必要としないためです。そのため、Vulkanエミュレーションがうまく動作しないという問題は、これらのアプリの開発やテストには影響が少ないと言えます。
ただし、Vulkanを積極的に活用しているアプリケーションを開発している場合や、グラフィックス性能に敏感なアプリケーションをテストする際には、Vulkanエミュレーションの問題は重要になる可能性があります。そのような状況では、Vulkanエミュレーションを無効にするか、Vulkanをサポートする実デバイスでテストを行う必要があります。
具体的なコマンドは、
emulator -avd YOUR_AVD_NAME -gpu swiftshader_indirect
となります。
要点としては、このVulkanは、高度なグラフィック機能を使用しない場合は、なくても実質問題なく、サポートを無効にしてもよい、ということになります。エミュレータの起動オプションに -no-accel
を追加してVulkanエミュレーションを無効にすることで、エラー表示はなくなります。
※2)DirectSoundCaptureの初期化失敗: 「Could not initialize DirectSoundCapture」のメッセージは、DirectSoundを使用したオーディオキャプチャを初期化するのに失敗したことを示しています。通常、これはエミュレータが正常に動作するためには重要ではありません。オーディオ機能が不要であれば、無視してもかまいません。起動オプションに -no-audio
を追加してオーディオを無効にすることもできます。
※3)adb daemonへの接続不可: 「Unable to connect to adb daemon on port: 5037」のメッセージは、エミュレータがADB(Android Debug Bridge)デーモンに接続できないことを意味しています。これは、ADBデーモンが既に実行中でないか、ポートが別のプロセスによって使用されている可能性があります。adbを再起動することで解決できる場合があります。コマンドラインで以下のコマンドを実行してみてください:
結論:
今回表示されたエラーやワーニングは、この作業環境がゲストOSであることに起因しているもので、もし実際の開発で、試験を繰り返す場合は、ホストOSで実施する、ということで問題なさそうです。
Android Studio のインストール・設定・動作確認は以上です。