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
。2F
ASCIIスラッシュを表し/
ます。それを適切な位置に置きます13
:
PS:確かではありませんが、qemu-imgのようないくつかのユーティリティがあり、異なるベースイメージを設定できます。まあ、私にとっては、バイナリを手動で編集する方が簡単です。
これで、おそらくAndroid仮想デバイスを正常に起動できるようになります。そうだといい :)