こんな問題で困っていませんか?
こんにちは!今日は、Android開発でよく遭遇する厄介な問題について、効果的な解決方法をお伝えします。
Android Studio の AVD (Android Virtual Device) を起動しようとしたとき、こんな症状で困ったことはありませんか?
- エミュレータがクラッシュして起動しない
- "Quick Boot / Snapshots not supported" の警告が出る
- スナップショットの読み込みが永遠に終わらない
- 起動するまでに異常に時間がかかって開発効率が悪い
特に、AMD の統合GPU を搭載したLinux環境で発生しやすい問題です。この問題には効果的な解決方法があるので、詳しくご紹介しますね!
どんな環境で起こるの?
問題が起こりやすい環境
特に以下の組み合わせで頻発します:
- CPU: AMD Ryzen シリーズ(特に APU タイプ)
- GPU: AMD Radeon 統合GPU(680M, 780M, Vega 8 など)
- OS: Linux系(Ubuntu, Pop!_OS, Fedora, Arch Linux など)
- 仮想化: KVM (Kernel-based Virtual Machine)
検証した環境
以下の環境で問題を確認しています:
# システム情報
OS: Pop!_OS 22.04 (Ubuntu ベース)
CPU: AMD Ryzen 9 6900HX
GPU: AMD Radeon 680M (統合GPU)
Intel の統合GPU や NVIDIA の GPU では、この問題はほとんど報告されておらず、AMD統合GPU特有の問題です。
なぜこの問題が起こるの?
この問題には3つの原因が絡み合っています。
原因1: AMD統合GPUとKVM仮想化の相性問題
Linux 環境で Android Emulator は KVM 仮想化を使用しますが、AMD の統合GPU との組み合わせで、スナップショット機能が不安定になります。
この問題は Stack Overflow や Reddit の androiddev コミュニティでも数多く報告されており、AMD + Linux 環境のユーザーから「エミュレータが使えない」という声が続出しています。
原因2: Vulkan グラフィックライブラリの制限
Google の公式ドキュメントにも明記されていますが、Vulkan グラフィックライブラリを含むスナップショットの作成はサポートされていません。
AMD統合GPU では Vulkan が標準で有効になることが多く、この制限に引っかかってしまいます。
原因3: Quick Boot機能の不具合
Android Emulator の Quick Boot(高速起動)機能は、スナップショットを保存・復元することで高速起動を実現しています。
しかし、AMD環境ではこのスナップショットの保存・復元プロセスでエラーが発生し、結果的にエミュレータが起動できなくなります。
解決方法を調べてみました!
ここからが本題!いろいろ調べた結果、この問題を解決する方法が見つかりました。
解決策の核心
調べてみると、スナップショット機能を無効化してコールドブートを強制することで問題を解決できるみたいです。
設定ファイルの fastboot.forceColdBoot=yes に変更するだけで、AMD GPU との相性問題を回避できるそうです!
手順1: AVD設定ファイルを見つけよう
まず、AVD がどこにあるか確認してみましょう:
ls ~/.android/avd/
こんな感じで表示されるはずです:
Pixel_4a.avd/
Pixel_9_Pro_Fold.avd/
Pixel_Tablet.avd/
手順2: 設定ファイルを編集してみよう
例として、Pixel 9 Pro Fold の設定を変更してみます:
# 設定ファイルを開く
nano ~/.android/avd/Pixel_9_Pro_Fold.avd/config.ini
手順3: 重要な設定変更
ファイルの中から以下の行を見つけて:
# 変更前(これが問題の原因らしい)
fastboot.forceColdBoot=no
こう変更するそうです:
# 変更後(これで解決するとのこと!)
fastboot.forceColdBoot=yes
手順4: 設定を確認してみよう
正しく変更できたか確認してみます:
grep "fastboot.forceColdBoot" ~/.android/avd/Pixel_9_Pro_Fold.avd/config.ini
fastboot.forceColdBoot=yes と表示されればOKのようです!
もっと楽な方法も見つけました
方法A: コマンド一発で変更
複数の AVD を一度に設定したい場合は、こんなコマンドが便利みたいです:
# 全ての AVD に対して設定を適用
find ~/.android/avd/ -name "config.ini" -exec sed -i 's/fastboot.forceColdBoot=no/fastboot.forceColdBoot=yes/' {} \;
方法B: 起動時にオプション指定
設定ファイルを変更したくない場合は、起動時にスナップショットを無効化することもできるそうです:
~/Android/Sdk/emulator/emulator -avd Pixel_9_Pro_Fold -no-snapshot
ただし、この方法だと毎回コマンドラインから起動する必要があるので、設定ファイルの変更がおすすめみたいです。
動作確認してみましょう
設定が完了したら、実際に動作するか確認してみましょう!
Android Studio から起動
- Android Studio を起動
- AVD Manager を開く
- 設定を変更した AVD の ▶️ ボタンをクリック
今度はスムーズに起動するはずです!
ADB で接続確認
エミュレータが起動したら、ADB で正常に認識されているか確認してみましょう:
~/Android/Sdk/platform-tools/adb devices
正常な場合の出力:
List of devices attached
emulator-5554 device
device と表示されていれば、うまく動作しているようです!
他の人も同じ問題で困ってるらしい
この問題は、調べてみると多くの AMD ユーザーが遭遇している「あるある」のようです。
コミュニティでの報告
- Stack Overflow: "Quick Boot / Snapshots not supported on this machine" で検索すると、AMD環境での報告が大量にヒットするそうです
- Reddit r/androiddev: "AMD Ryzen環境でエミュレータが動かない" というスレッドが定期的に投稿されているとのこと
- GitHub Issues: Android Emulator の公式リポジトリでも AMD関連の issue が多数報告されているらしいです
発生パターンの傾向
特に以下のような環境で報告が多いとのことです:
- AMD Ryzen 5000/6000/7000 シリーズ + 統合GPU
- Ubuntu 20.04/22.04, Fedora 32以降
- Android Studio Arctic Fox 以降
どうやら、AMD + Linux の組み合わせでは「よくある問題」のようですね。
さらに安定させるコツも調べました
基本的な解決方法に加えて、さらに安定性を向上させるコツも見つけました。
コツ1: ハードウェア GPU を有効にする
AVD の設定で、Graphics を "Hardware" に設定するのが良いみたいです:
- AVD Manager で対象の AVD の ✏️(編集)をクリック
- "Show Advanced Settings" を展開
- "Emulated Performance" セクションの "Graphics" を "Hardware" に設定
Software レンダリングだと、Quick Boot がさらに不安定になる可能性があるそうです。
コツ2: 定期的にスナップショットをクリア
時々、AVD を「Wipe Data」してクリーンな状態に戻してあげると良いみたいです:
- AVD Manager で対象の AVD の ⬇️(その他の操作)をクリック
- "Wipe Data" を選択
これで、蓄積されたデータによる不具合を防げるそうです。
コツ3: システムイメージの選択
Google Play 対応のシステムイメージよりも、AOSP(Android Open Source Project)のイメージの方が安定することがあるそうです。
開発用途であれば、Google APIs イメージでも十分な場合が多いみたいです。
まとめ
いかがでしたか?調べてみたところ、Android Emulator の AMD GPU 問題は、fastboot.forceColdBoot=yes の設定一つで解決できるようです!
この解決方法のメリット
- 確実性: AMD + Linux 環境で実績のある解決方法だそうです
- 簡単さ: 設定ファイル1行の変更だけで済むようです
- 副作用なし: 他の機能に影響を与えないらしいです
- 恒久的: 一度設定すれば、継続的に効果があるようです
なぜこの方法が効果的なのか調べました
スナップショット機能を無効化することで:
- AMD GPU との相性問題を回避: KVM + AMD GPU の組み合わせで発生する不具合を防げるみたいです
- Vulkan の制限を回避: Vulkan を含むスナップショットの制限に引っかからないそうです
- 確実な起動: 毎回クリーンな状態から起動するため、安定性が向上するみたいです
今後の見通し
根本的な解決には、Google による Android Emulator の AMD GPU 対応改善が必要みたいです。しかし、現時点ではこの回避策が最も効果的で確実な方法のようですね。
AMD の新しい GPU や Linux カーネルのアップデートにより、将来的には改善される可能性もあるそうですが、当面はこの設定で安心して開発できそうです!
もし何かご質問や、うまくいかない部分がございましたら、お気軽にコメントでお知らせください。一緒に調べてみましょう!