在终端中输入cordova运行android后,我得到了这个错误:
Waiting for emulator to start...
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [/Users/username/Library/Android/sdk]!
这发生在导出之后:
export ANDROID_SDK_ROOT='/Users/username/Library/Android/sdk'
在导出之前,我得到:
Waiting for emulator to start...
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
你知道我哪里错了吗?我确定这是sdk根,所以为什么我得到破碎的avd系统路径?
我在Windows 10上就遇到过这个问题。
我尝试了几种解决办法,但没有一个奏效。
以下是我解决问题的方法:
Uninstalled Android Studio, SDK, .android and .AndroidStudio folders in %USERPROFILE%, Android folder in %LOCALAPPDATA%.
Uninstalled Java.
Downloaded latest Java JDK:https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html
and set PATH Environment Variable:
https://docs.oracle.com/en/java/javase/11/install/installation-jdk-microsoft-windows-platforms.html#GUID-96EB3876-8C7A-4A25-9F3A-A2983FEC016A
I created new Windows 10 local user using LATIN CHARACTERS with admin priviledges.
Switched to the new user and installed Android Studio.
When the setup wizard was shown, I selected Custom option and checked Android emulator to be installed. I left all location folders as DEFAULT.
现在我的新用户帐户一切正常。
修复用户包含非ascii字符的问题
对于“PANIC: AVD系统路径损坏”的人。检查你的ANDROID_SDK_ROOT",原因可能是你的用户在users中包含非ascii字符。
因此,SDK和。android文件夹和AVD文件夹都需要移动到另一个文件夹。
修改SDK路径:
打开Android Studio,进入配置,选择SDK管理器。将当前Android SDK位置更改为例如“C:\Android\ SDK”(或其他地方,只是不在包含非ascii字符的用户文件夹中)。
添加如下系统变量:
ANDROID_SDK_ROOT C:\Android\Sdk
ANDROID_HOME C:\Android\Sdk
更改AVD路径:
要更改AVD文件夹的位置(通常放置在“C:\Users\<用户名>\.android\ AVD”中),您需要更改.android的位置。首先关闭Android Studio,然后添加系统变量ANDROID_SDK_HOME和你想要的。Android的新位置的路径,例如在另一个例子中使用的C:\ ANDROID_SDK_HOME:
ANDROID_SDK_HOME C:\Android_SDK_HOME
添加后,运行Android Studio。然后再关上。现在应该出现了一个名为.android的文件夹。
你需要做的下一件也是最后一件事是设置ANDROID_AVD_HOME系统变量。在本例中,它将在C:\Android_SDK_HOME\.android\avd中
ANDROID_AVD_HOME C:\Android_SDK_HOME\.android\avd
我希望这能解决一些问题。:)
看看我的答案:https://stackoverflow.com/a/60201016/12529885
尝试手动指定参数-sysdir,并检查错误消息是否改变。
他们可能打不清楚,参见源代码https://android.googlesource.com/platform/external/qemu/+/1a15692cded92d66dea1a51389a3c4b9e3b3631a/android/emulator/main-emulator.cpp
而且你可以比在网上搜索更容易解决。
if (!strcmp(opt, "-sysdir") && nn+1 < argc) {
sysDir = argv[nn+1];
continue;
}
// some other codes.....
if (avdName) {
if (!isCpuArchSupportedByRanchu(avdArch)) {
APANIC("CPU Architecture '%s' is not supported by the QEMU2 emulator, (the classic engine is deprecated!)",
avdArch);
}
std::string systemPath = getAvdSystemPath(avdName, sysDir);
if (systemPath.empty()) {
const char* env = getenv("ANDROID_SDK_ROOT");
if (!env || !env[0]) {
APANIC("Cannot find AVD system path. Please define "
"ANDROID_SDK_ROOT\n");
} else {
APANIC("Broken AVD system path. Check your ANDROID_SDK_ROOT "
"value [%s]!\n",
env);
}
}
}