AVDまたはSDKを別のディレクトリに移動したり、古いSDKを新しいものに置き換えたり、SDKが破損したりする場合、いくつかの異なる問題が発生する可能性があります。
以下では、私が知っている可能性のあるすべての問題について説明し、それらを解決するいくつかの方法を示します。
もちろん、AVDが作成されていて、C:\Users\<user_name>\.android\avd(Windows)または~/.android/avd(Linux / MacOS)にあると思います。
.android別の場所に移動した場合は、ANDROID_SDK_HOME環境変数をを含む親ディレクトリのパスに設定.androidし、AVD Managerが仮想デバイスを正常に見つけたことを確認します。
パスも確認してください <user_home>/.android/avd/<avd_name>.ini
不完全な/破損したSDK構造
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
これらの2つのエラーは、エミュレータがSDKを見つけられないか、SDKが壊れている場合に発生します。
ですから、まずANDROID_SDK_ROOT変数を削除することをお勧めします。エミュレータがSDKディレクトリの外にある場合にのみ必要です。ただし、一般的に、エミュレータはSDKのディレクトリ内にあります。この場合、SDKの場所を自動的に検出する必要があります。そうでない場合は、SDKのファイルツリーが間違っている可能性があります。以下を行ってください:
ことを確認してくださいSDKディレクトリは、少なくともこれらの4つのディレクトリがありますemulator、platforms、platform-tools、system-images。それは非常に重要です!これらのディレクトリが存在している必要があります。それらのいくつかが存在しない場合は、空のディレクトリを作成します。
に移動し<user_home>/.android/avd/<avd_name>て開きconfig.iniます。image.sysdir.1プロパティを検索します。これは、実際のシステムイメージを含むSDKディレクトリ内のディレクトリを指します。このディレクトリが存在し、のようなファイルが含まれていることを確認しbuild.prop、system.imgそうでない場合は、など、あなたが開く必要がSDKマネージャおよびダウンロードシステムイメージあなたのAVDが必要です(下記参照します)。
すべてが適切に設定されている場合、これらのエラーはANDROID_SDK_ROOT解消されるはずです。そうでない場合は、ANDROID_SDK_ROOT変数を設定してみてください。
必要なパッケージとHAXMがインストールされていません
次に直面する可能性のある問題は、エミュレーターが起動し始めるが、ハングアップするか、すぐに終了することです。これはおそらく、必要なパッケージがすべてインストールされていないことを意味します。
別の考えられるエラーは次のとおりです。
ADBバイナリを自動的に検出できませんでした。一部のエミュレーター機能は、拡張設定ページでADBへのカスタムパスが追加されるまで機能しません。
したがって、AVDを正常に起動するには、少なくとも以下のパッケージがインストールされていることを確認する必要があります。
emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)
また、前述したように、AVDが使用しているシステムイメージをインストールする必要があります。たとえば、 system-images;android-25;google_apis;x86
SDKの最新バージョンにはスタンドアロンがないことに注意してくださいSDK Manager.exe。代わりに、Android Studioを使用するか、tools\bin\sdkmanager.bat(Linux / MacOSにshファイルがある可能性があります)
使用可能なすべてのパッケージを一覧表示するには、sdkmanager --listまたはを使用しますsdkmanager --list --verbose
パッケージをインストールするには sdkmanager <package1> <package2> ...
また、システムにHAXMを手動でインストールすることをお勧めします。
Qcow2ファイルが正しくない/存在しないベースイメージを参照している
最後に言及する問題は、AVDまたはSDKをあるコンピューターまたはディレクトリから別のコンピューターまたはディレクトリに移動しようとしているときに発生します。この場合、次のようなエラーが発生する可能性があります。
qemu-system-i386.exe:-drive if = none、overlap-check = none、cache = unsafe、index = 0、id = system、file = C:\Users\<old_user_name>\.android\avd\<avd_name>。
avd \ system.img.qcow2、読み取り専用:バッキングファイルを開けませんでした<old_sdk_dir>\system-images\android-22\google_apis\x86\system.img:' 'を開けませんでした:無効な引数
修正するには2つの方法があります。
AVDに含まれるデータを気にしない場合qcow2は、AVDディレクトリからすべてのファイルを削除します(例:から<user_home>/.android/avd/<avd_name>)。この場合、ハードリセット後のように、Androidのクリーンバージョンが表示されます。
エミュレータ上のデータが重要な場合は、qcow2任意のHEXエディタ(HxDを使用することをお勧めします)を使用してすべてのファイルを1つずつ開き、ベースimgファイルのパスを見つけて、Overwriteモードで正しいファイルに変更します(ファイルサイズ)。次に、パスを選択し、その長さを16進数で取得します(例:)2F。2FASCIIスラッシュを表し/ます。それを適切な位置に置きます13:

PS:確かではありませんが、qemu-imgのようないくつかのユーティリティがあり、異なるベースイメージを設定できます。まあ、私にとっては、バイナリを手動で編集する方が簡単です。
これで、おそらくAndroid仮想デバイスを正常に起動できるようになります。そうだといい :)