在终端中输入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系统路径?
看看我的答案: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);
}
}
}
NativeScript
对于任何通过NativeScript启动android模拟器遇到麻烦的人来说,它可能是env vars ANDROID_HOME和ANDROID_SDK_ROOT已被覆盖。
我是如何给自己制造一个问题的,那就是安装Android Studio来生成一个不同的模拟器。我这样做是在我已经通过home brew安装了android sdk之后。
因此,如果在NativeScript安装期间,您选择通过HomeBrew安装android sdk, NativeScript将设置如下:
ANDROID_HOME=/usr/local/share/android-sdk
ANDROID_SDK_ROOT=/usr/local/share/android-sdk
随后安装Android Studio将覆盖这些值:
ANDROID_HOME=/Users/[User]/Library/Android/sdk
ANDROID_SDK_ROOT=/Users/[User]/Library/Android/sdk
因此,Android studio和Android sdk的NativeScript/Brew安装自然存在冲突。删除其中一个和/或验证env变量包含正确的路径应该会让模拟器启动。