在终端中输入 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系统路径坏了?
20 回答
您应该添加AVD模拟器 . 转到这个位置:
启动AVD Manager,然后在第二个选项卡(设备定义)中单击“createAVD”按钮 .
_79970_中缺少
Platfoms目录 .
我创建了一个名为平台的空目录来解决问题 .
检查AVD使用的系统映像是否已在
$ANDROID_SDK_ROOT/system-images/
下载在我的情况下它被破坏了因为ANDROID_HOME和ANDROID_SDK_ROOT不同,所以一旦我将ANDROID_HOME设置为与ANDROID_SDK_ROOT相同,那么它就开始工作了 .
将AVD或SDK移动到另一个目录时,可能会出现几个不同的问题,或者用新的SDK替换旧的SDK,或者以某种方式使SDK损坏 .
下面我将描述我所知道的所有可能的问题,并将为您提供几种解决方法 .
SDK结构不完整/已损坏
如果模拟器找不到SDK,或SDK已损坏,则会发生这两个错误 .
所以,首先我建议删除
ANDROID_SDK_ROOT
变量 . 仅当模拟器位于SDK目录之外时才需要它 . 但一般来说,您的模拟器保留在SDK目录中 . 在这种情况下,它必须检测SDK位置 automatically . 如果没有,那么你的SDK可能有错误的filetree . 请执行以下操作:检查SDK目录是否至少包含以下4个目录:
emulator
,platforms
,_platform-tools
,system-images
. It is very important! 必须存在这些目录 . 如果其中一些不存在,那么只需创建空目录 .转到
<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
变量 .未安装必需的软件包和HAXM
您可能遇到的下一个问题是模拟器开始启动,但是挂起或立即退出 . 这可能意味着您没有安装所有必需的软件包 .
另一个可能的错误是:
因此,要成功启动任何AVD,您必须确保至少安装了这些软件包:
正如我之前提到的,您必须安装AVD正在使用的系统映像,例如
system-images;android-25;google_apis;x86
另外,我建议您手动在系统上安装HAXM .
Qcow2文件是指不正确/不存在的基本映像
当你试图将AVD或SDK从一台计算机或目录移动到另一台计算机或目录时,我会提到的最后一个问题 . 在这种情况下,您可能会收到此类错误:
有两种方法可以解决它:
如果您不关心AVD包含的数据,只需从AVD目录中删除所有
qcow2
文件(例如从<user_home>/.android/avd/<avd_name>
删除) . 在这种情况下,您将获得一个干净的Android版本,就像硬重置后一样 .如果模拟器上的数据对您很重要,那么使用任何HEX编辑器(我更喜欢HxD)逐个打开所有
qcow2
文件,找到基本img
文件的路径,并在Overwrite
模式下将其更改为正确的文件(保留文件大小) . 然后选择路径并以十六进制获取其长度(例如2F
) .2F
表示ASCII斜杠/
. 把它放到位13
:PS:不确定,但可能有一些像qemu-img这样的实用工具允许设置不同的基本图像 . 好吧,对我来说,手动编辑二进制文件更容易 .
现在,您可能能够成功启动Android虚拟设备 . 希望如此 :)
在Mac上:我使用
brew
以及Android Studio安装了android-sdk
. 不知何故,有2个安装导致了这个问题 . 当我卸载我的brew安装时sdk使用brew cask uninstall android-sdk
并将以下变量添加到我的环境中 . 有效 .这意味着您的工具路径不正确 . 这就是使用brew的Mac上的样子 . 记住版本 .
在你的情况下,你应该运行这个:
好吧,我可以从cordova运行android,我改变了ANDROID_HOME,
这将解决您在macOS中的问题:
刚刚遇到这个问题并设法解决它 .
模拟器:[140735565005632]:错误:android / android-emu / android / qt / qt_setup.cpp:28:在/ Users / your_user_name / Library / Android / sdk / emulator / lib64 / qt / lib中找不到Qt库
15:08模拟器:无法启动'/ Users / your_user_name / Library / Android / sdk / emulator / qemu / darwin-x86_64 / qemu-system-x86_64':没有这样的文件或目录
解决方案非常简单 . 只需通过Android Studio安装Android模拟器=> tools => Android => SDK manager => SDK tools =>选择Android模拟器=>应用
我在macOS High Sierra上使用MacBook Pro,我相信你的机器与这个问题无关 . 首次运行Android Studio安装管理器时,显然没有安装模拟器,至少对于我来说,使用Android Studio 3.0.1
还要确保在.bashrc或.zshrc中定义路径,如下所示:
作为@EFreak我安装了android-sdk和homebrew(Macs的软件包管理器) . 我需要这样做,因为我正在遵循nativescript教程 . 如果你喜欢我打算使用brew版本而不是android-sdk版本使用这个答案(这将允许你使用nativescripts
tns run android
api),如果你想安卓android默认android-sdk跟随@EFreak的答案 .基本上你只需要在Android工作室中更改Android SDK位置 . 首先在android studio中打开一个项目 . 然后单击此按钮打开SDK Manager .
接下来当android SDK管理器的默认首选项出现时,您需要单击android SDK位置旁边的编辑 .
接下来,您需要实际更新sdk组件设置屏幕上的sdk位置,我的
brew
android-sdk位于此处/usr/local/share/android-sdk
.然后通过安装任何软件包完成向导 . 我需要在此步骤中删除并重新创建我的设备模拟器,但之后它似乎工作得很好 .
Oleg Cherrs回答了我的解决方案 . 正如他所说
我在avd目录中找到了相应的模拟器* .ini文件 . 在那里我修改了“image.sysdir.1”条目 . 我用绝对路径替换了亲戚(在前面附加ANDROID_SDK_ROOT) . 之后,仿真器按预期从命令行启动 .
设置后面的路径变量后,我遇到了同样的问题 Note AVD Home path is different from other three.
要解决此问题,我必须使用SDK Manager.exe安装包含缺少的系统映像的程序包(在“C:\ Program Files(x86)\ Android \ android-sdk”中) . 我注意到我需要的系统映像(“android-23”)在“C:\ Program Files(x86)\ Android \ android-sdk \ system-images”中丢失了 .
运行SDK Manager.exe并安装相应的软件包后,我可以在Android Studio中运行模拟器 .
这是适用于我的解决方案:
https://www.embarcadero.com/starthere/xe5/mobdevsetup/android/en/creating_an_android_emulator.html
我在Windows10中遇到同样的问题,
按照以下步骤解决了我的问题 .
打开Android Studio
Android SDK Location
设置系统环境变量
ANDROID_HOME和ANDROID_SDK_ROOT
system environment variable
经过一段时间尝试其他Googled "solutions"之后,在Windows上设置ANDROID_SDK_ROOT环境变量,以及添加和删除ANDROID_HOME和ANDROID_SDK_HOME变量后,唯一对我有用的是Xerox23 's answer - editing the AVD' s config.ini将ANDROID_SDK_ROOT的值硬编码为image.sysdir.1属性 .
这是使用Android Studio 3.0.1和模拟器26.1.4,从Android Studio中的AVD Manager启动虚拟设备 .
我刚才有了在Mac上同样的问题,这就是我做的:
我删除了用brew安装的android-sdk
我将ANDROID_HOME变量设置为与ANDROID_SDK_ROOT = / Users / username / Library / Android / sdk相同
对于Windows机器:尝试了很多设置路径后,删除路径等 . 最终工作的是找到文件夹
C:\Users\johndoe\.android
并删除它 . 之后,您可以在Android Studio中共进午餐,它会要求您下载并安装新的AVD,它将覆盖并创建一个全新的文件夹和文件 . 这解决了这个问题 .我遇到了这个问题,因为我从早期就开始做React Native . 谷歌已弃用命令行工具并坚持使用Android工作室 . 我的解决方案是删除命令行工具
rm -rf /usr/local/Cellar/android-sdk
rm /usr/local/bin/android
按照说明打开AS install sdk v6 https://facebook.github.io/react-native/docs/getting-started.html#1-install-android-studio
制作一个新的AVD,它会毫无错误地启动
我有同样的问题 . 我删除了.android / avd文件夹中的图像模拟器,并在安装了lib32stdc 6之后:
所以,它的工作原理!魔法?