在终端中输入cordova run 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 root,为什么我的avd系统路径坏了?
答案 0 :(得分:103)
将AVD或SDK移动到另一个目录时,可能会出现几个不同的问题,或者用新的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
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
如果模拟器找不到SDK,或SDK已损坏,则会发生这两个错误。
所以,首先我建议删除ANDROID_SDK_ROOT
变量。仅当模拟器位于SDK目录之外时才需要它。但一般来说,您的模拟器保留在SDK目录中。在这种情况下,它必须自动检测SDK位置 。如果没有,那么你的SDK可能有错误的filetree。请执行以下操作:
检查 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 Manager 并下载系统映像AVD要求(见下文)。
如果一切设置正确,那么必须消除ANDROID_SDK_ROOT
这些错误。如果他们不是,那么现在您可以尝试设置ANDROID_SDK_ROOT
变量。
您可能遇到的下一个问题是模拟器开始启动,但是挂起或立即退出。这可能意味着您没有安装所有必需的软件包。
另一个可能的错误是:
无法自动检测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。
当您尝试将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
”:参数无效
有两种方法可以解决它:
如果您不关心AVD包含的数据,只需删除AVD目录中的所有qcow2
文件(例如从<user_home>/.android/avd/<avd_name>
)。在这种情况下,您将获得一个干净的Android版本,就像硬重置后一样。
如果模拟器上的数据对您很重要,请使用任何HEX编辑器(我更喜欢HxD)逐个打开所有qcow2
个文件,找到基础的路径{ {1}}文件,并在img
模式下将其更改为正确的文件(以保留文件大小)。然后选择路径并以十六进制获取其长度(例如Overwrite
)。 2F
表示ASCII斜杠2F
。将其置于/
:
PS:不确定,但可能有一些像qemu-img这样的实用工具允许设置不同的基本图像。好吧,对我来说,手动编辑二进制文件更容易。
现在您可能能够成功启动Android虚拟设备。我希望如此:)
答案 1 :(得分:96)
在Mac上:
我使用android-sdk
以及Android Studio安装了brew
。不知何故,有2个安装导致了这个问题。当我使用brew cask uninstall android-sdk
卸载sdk的brew安装并将以下变量添加到我的环境中时。它奏效了。
export ANDROID_HOME=/Users/<Username>/Library/Android/sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
答案 2 :(得分:14)
这意味着您的工具路径不正确。这就是使用brew在mac上看起来的样子。记住版本。
export ANDROID_SDK_ROOT='/usr/local/Cellar/android-sdk/24.4.1_1'
在您的情况下,您应该运行此命令:
export ANDROID_SDK_ROOT='/Users/username/Library/Android/sdk'
答案 3 :(得分:13)
这将解决macOS中的问题:
pico ~/.bash_profile
export ANDROID_HOME=/Users/$USER/Library/Android/sdk
export ANDROID_SDK_HOME=/Users/$USER/Library/Android/sdk
export ANDROID_AVD_HOME=/Users/$USER/.android/avd
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME
source ~/.bash_profile
答案 4 :(得分:5)
我在Windows 10中,问题是我计算机中的avd目录中包含非ASCII字符。
这是做什么:
以管理员身份运行cmd
运行以下命令:
mklink /D C:\\.android C:\\Users\\-yourUsername-\\.android
(这将在具有非ASCII字符的路径和新字符之间创建符号链接)
在环境变量中,将ANDROID_AVD_HOME
变量添加为值C:\\.android\avd
。
答案 5 :(得分:4)
好吧我可以从cordova运行android,我将ANDROID_HOME更改为,
export ANDROID_HOME=/usr/local/opt/android-sdk
答案 6 :(得分:4)
我在Windows10中遇到了同样的问题,
请按照以下步骤解决我的问题。
打开Android Studio
-工具
-SDK Manager
-复制Android SDK位置
Android SDK Location
设置系统环境变量
ANDROID_HOME和ANDROID_SDK_ROOT
system environment variable
答案 7 :(得分:4)
Platfoms 目录。
我创建了一个名为平台的空目录来解决问题。
答案 8 :(得分:3)
转到/.android/avd/并打开config.ini。找到&gt; image.sysdir.1属性。它指向包含系统&gt; images的SDK内的目录。确保此目录存在并包含build.prop,&gt; system.img等文件。如果没有,则必须打开SDK Manager并按&gt;下载AVD所需的系统映像(参见下文)。
我在avd目录中找到了相应的模拟器* .ini文件。 在那里我修改了“image.sysdir.1”条目。我用绝对路径替换了亲戚(在前面附加ANDROID_SDK_ROOT)。之后,仿真器按预期从命令行启动。
答案 9 :(得分:3)
修复,如果您的用户包含非ASCII字符
对于获得“ PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT
”的用户,其原因可能是您用户中的用户包含非ASCII 个字符。
因此,带有 AVD 文件夹的 SDK 和.android文件夹都需要移动到另一个文件夹。
更改SDK路径:
打开 Android Studio ,进行配置,然后选择SDK Manager。将当前的Android SDK位置更改为例如“ C:\ Android \ Sdk”(或者其他位置,只是不在包含非ASCII字符的用户文件夹中)。
此后,添加以下系统变量:
ANDROID_SDK_ROOT C:\Android\Sdk
ANDROID_HOME C:\Android\Sdk
更改AVD路径:
要更改AVD文件夹的放置位置(通常放置在“ C:\Users\<user name>\.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
我希望这可以解决一些问题。 :)
答案 10 :(得分:3)
作为@EFreak,我安装了自制软件的android-sdk(Macs的软件包管理器)。我需要这样做,因为我正在遵循nativescript教程。如果你喜欢我打算在android-sdk版本上使用brew版本,请使用这个答案(这将允许你使用nativescripts tns run android
api),如果你想安卓android默认android-sdk跟随@EFreak的答案
基本上您只需在Android工作室中更改Android SDK位置即可。首先在android studio中打开一个项目。然后单击此按钮打开SDK Manager。
接下来,当Android SDK管理器的默认首选项出现时,您需要单击android SDK位置旁边的编辑。
接下来,您需要在我的brew
android-sdk位于此处/usr/local/share/android-sdk
的sdk组件设置屏幕上实际更新sdk位置。
然后通过安装任何软件包完成向导。我需要在此步骤中删除并重新创建我的设备模拟器,但在此之后它似乎很有效。
答案 11 :(得分:3)
模拟器更新后,我遇到了同样的问题。添加变量 ANDROID_AVD_HOME
后,问题已解决重要:该路径中不能使用非ASCII字符。 最后,重新安装虚拟设备或在Configuration settings.ini文件中手动覆盖设备路径,该文件包含带有非ASCII字符的旧路径。
C:\Users\<user_name>\.android\avd\<avd_name>
答案 12 :(得分:3)
您应该添加AVD模拟器。 转到这个位置:
C:\Users\%username%\AppData\Local\Android\sdk\
启动AVD Manager,然后在第二个选项卡(设备定义)中单击“createAVD”按钮。
答案 13 :(得分:2)
在我的情况下它被破坏了,因为ANDROID_HOME和ANDROID_SDK_ROOT不同,所以一旦我将ANDROID_HOME设置为与ANDROID_SDK_ROOT相同,那么它就开始工作了。
答案 14 :(得分:2)
检查AVD使用的系统映像是否已在$ANDROID_SDK_ROOT/system-images/
答案 15 :(得分:2)
今天刚遇到这个问题并设法解决它。
模拟器:[140735565005632]:错误:android / android-emu / android / qt / qt_setup.cpp:28:在/ Users / your_user_name / Library / Android / sdk / emulator / lib64 / qt / lib中找不到Qt库
15:08模拟器:无法启动&#39; / Users / your_user_name / Library / Android / sdk / emulator / qemu / darwin-x86_64 / qemu-system-x86_64&#39;:没有这样的文件或目录
解决方案非常简单。只需通过Android Studio安装Android模拟器=&gt; tools =&gt; Android =&gt; SDK manager =&gt; SDK工具=&gt;选择Android Emulator =&gt;应用
我在macOS High Sierra上使用MacBook Pro,我相信你的机器与此问题无关。首次运行Android Studio安装管理器时,显然没有安装模拟器,至少对于我来说,使用Android Studio 3.0.1
还要确保在.bashrc或.zshrc中定义路径,如下所示:
export ANDROID_HOME=/Users/your_user_name/Library/Android/sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
答案 16 :(得分:2)
您需要做的就是为 android 11 所需的模拟器示例安装平台
sdkmanager --install "platforms;android30"
执行此操作后,您的模拟器将开始正常工作。
答案 17 :(得分:2)
我在Windows 10上运行了Android Studio,在环境变量上设置了ANDROID_HOME和ANDROID_SDK_ROOT,仍然出现错误。
结果是,我忘了下载设备。
下载“缺少系统映像”后,一切正常。
答案 18 :(得分:1)
中国的小伙伴注意!原因是avd目录不能包含中文
我在上面尝试了所有这些方法,但仍然出现错误,我想知道是否是因为我的avd目录包含中文字符。因此,我通过以下步骤更改了默认的avd目录,它可以正常工作。
1.创建一个文件夹,该文件夹的路径不包含非ASCII字符
2.复制或剪切您刚创建的文件夹下的默认avd文件夹$HOME/.android
3.添加PATH ADNDROID_SDK_HOME
,Android Studio将在$ ADNDROID_SDK_HOME / .android / avd
终于解决了! :>
答案 19 :(得分:1)
ANDROID_SDK_HOME是指向“ .android”文件根的指针,该文件默认情况下是在“ C:\ Users \ name \ .android”处创建的,而不是SDK文件夹的根目录。然后: -将ANDROID_SDK_HOME分配给SDK根文件夹将不起作用。 -如果“ .android”文件的路径包含非ASCII字符,则该路径将无效。 -AVD文件夹必须位于您当前的“ .android”文件中。
所以答案是这样的:
干杯。
答案 20 :(得分:1)
我通过删除文件/usr/local/share/android-sdk
解决了这个问题,
因为此文件是在尝试使用homebrew时创建的。
export ANDROID_HOME=/Users/<username>/Library/Android/sdk
export ANDROID_SDK_ROOT=/Users/<username>/Library/Android/sdk
export ANDROID_AVD_HOME=/Users/<username>/.android/avd
足够了....
答案 21 :(得分:1)
NativeScript
对于任何无法通过NativeScript启动android仿真器的人,很可能环境变量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变量包含正确的路径应该可以使模拟器启动。
答案 22 :(得分:1)
按照以下步骤可以解决您的问题
1。
export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/bin
2。
Go to android studio preferences => Build, Execution, Deployment => Build Tools => Gradle => Android studio => Enable embedded Maven Repository should be selected.
3。
Go to android studio preferences => Appearance & Behavior => System Settings => Android SDK => Go to SDK Tools and select Android Emulator
答案 23 :(得分:1)
要解决此问题,我必须使用SDK Manager.exe(在“ C:\ Program Files(x86)\ Android \ android-sdk”中)安装缺少系统映像的软件包。我注意到,“ C:\ Program Files(x86)\ Android \ android-sdk \ system-images”中缺少我需要的系统映像(“ android-23”)。
运行SDK Manager.exe并安装适当的软件包后,我可以在Android Studio中运行模拟器。
以下是对我有用的解决方案:
https://www.embarcadero.com/starthere/xe5/mobdevsetup/android/en/creating_an_android_emulator.html
答案 24 :(得分:1)
答案 25 :(得分:0)
这更像是一个问题而不是答案,但我发现参与此主题的人更有可能帮助我。
基本上,我试图将我创建的 avd 以及用户数据移动到新环境中(因为我重新安装了 PC 的操作系统,我已经备份了 avd 并希望能够恢复它进入新系统)。但是,在所有尝试之后,sdcard 的用户数据将始终被重置。
这是我尝试过的:
重新安装 android studio 后,我创建并启动了一个新的虚拟设备,其 API 和设置与“Pixel 2 API 30”相同。因此,将下载基础映像和内核。
我已将我的 avd 放入新创建的 avd 的同一个父文件夹中,并且已被识别。但是启动avd后,皮肤和设置不匹配,用户数据被重置。
在那之后,我注意到我需要修复 config.ini 中的路径;硬件qemu.ini,以及emu-launch-params。修正这些路径后,avd 现在以正确的皮肤启动,现在我看起来很熟悉。但是,encryptionkey.img.qcow2; sdcard.img.qcow2 和 userdata-qemu.img.qcow2 会自动重新创建,用户数据仍然被重置。
我已经用 winhex 检查了 .qcow2 的基本 img 路径,对我来说似乎没有问题。
所以,需要 android avd 专家的帮助。
答案 26 :(得分:0)
错误实际上有所不同。使用-verbose选项运行./emulator很有帮助,它将显示实际错误。
答案 27 :(得分:0)
在 Windows 10(不带 Android Studio)中,我通过将“.android”文件夹从“C:\Users\Леон”中的默认位置转移到 SDK 文件夹中,解决了“PANIC:Broken AVD system path”问题。并将环境更改为
ANDROID_SDK_ROOT=D:\Android\SDK
ANDROID_AVD_HOME=%ANDROID_SDK_ROOT%\.android\avd
ANDROID_EMULATOR_HOME=%ANDROID_SDK_ROOT%\.android
我想问题可能出在我用户路径中的非 ASCII 符号中,或者它们需要“全部放在一起”
答案 28 :(得分:0)
在Mac OS上运行模拟器时,我遇到了类似的问题。经过大量的努力,我发现我在.bash_profile中设置了错误的sdk路径。我安装了两个android系统,这是导致该问题的原因。我通过将.bash_profile中的ANDROID_SDK_ROOT路径与我在android studio中使用的sdk匹配来进行修复。
答案 29 :(得分:0)
macOS Catalina上存在类似的问题,而该问题原来是我正在运行的Java版本。默认情况下,现在安装Java时,其版本为13,不适用于当前的avd版本。
此外,我在安装Java 8时遇到了麻烦,所以我使用了Homebrew中提供的Java:
brew cask install homebrew/cask-versions/adoptopenjdk8
然后,在我的~/.profile
我set the Java version to 1.8中:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
现在可以测试avdmanager是否可以运行并检测虚拟设备(以前,这导致了一个错误,表明无法解析XML):
avdmanager list avds
答案 30 :(得分:0)
经过一段时间尝试其他Google搜索“解决方案”之后,在Windows上设置ANDROID_SDK_ROOT环境变量后,仅对我有用的东西,以及添加和删除ANDROID_HOME和ANDROID_SDK_HOME变量,是Xerox23的回答 - 编辑AVD的config.ini,将ANDROID_SDK_ROOT的值硬编码到image.sysdir.1属性中。
这是使用Android Studio 3.0.1和模拟器26.1.4,从Android Studio中的AVD Manager启动虚拟设备。
答案 31 :(得分:0)
我在Mac上遇到了同样的问题,这就是我所做的:
答案 32 :(得分:0)
查看我的答案: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);
}
}
}
答案 33 :(得分:0)
如果您仍然需要答案,那么就我而言,它是在(重新)下载Android图像后工作的,但是可以直接从Android Studio下载而不是通过Visual Studio按钮。
答案 34 :(得分:0)
在Mac OS X上,我遇到了同样的问题。我无法从Visual Studio启动Xamarin应用程序,但是Android Studio中的本机Java Android项目确实可以在虚拟设备中运行。
我所做的是:
_
和.replace(" ", "_")
环境变量。ANDROID_HOME
答案 35 :(得分:0)
我遇到了这个问题,因为我从早期就开始做React Native。谷歌已弃用命令行工具并坚持使用Android工作室。我的解决方案是删除命令行工具
rm -rf /usr/local/Cellar/android-sdk
rm /usr/local/bin/android
按照指示https://facebook.github.io/react-native/docs/getting-started.html#1-install-android-studio
打开AS install sdk v6制作一个新的AVD,它会毫无错误地启动
答案 36 :(得分:0)
我在Windows 10上遇到了这个问题。
我尝试了几种解决方案,但没有一个起作用。
解决问题的方法如下:
现在,在我的新用户帐户上一切正常。
答案 37 :(得分:0)
答案 38 :(得分:0)
我通过下载新的模拟器解决了Mac机器上的问题。
答案 39 :(得分:0)
我知道它不是特定于Flutter的,也不是特定于Windows OS的,但是此线程是google中的第一个结果,也是此问题的主要结果,因此:
使用Windows 10并在使用Flutter时收到此错误消息,此命令可以解决问题:
echo $ANDROID_HOME && flutter doctor -v
答案 40 :(得分:0)
打开您的android studio,然后将焦点放在工具栏上。
转到工具> SDK管理器,然后
外观和行为>系统设置> Android SDK
现在在标签中,从此处复制Android SDK位置 Android SDK Location
然后转到您的环境变量,然后设置路径以及这些变量
答案 41 :(得分:-5)
我遇到了同样的问题。我删除了.android / avd文件夹中的图像模拟器,并在安装了lib32stdc ++ 6之后:
sudo apt-get install lib32stdc++6
所以,它有效!魔法?