输入cordova run android
终端后,我收到此错误:
Waiting for emulator to start...
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [/Users/username/Library/Android/sdk]!
Run Code Online (Sandbox Code Playgroud)
这在导出后发生:
export ANDROID_SDK_ROOT='/Users/username/Library/Android/sdk'
Run Code Online (Sandbox Code Playgroud)
在出口之前我得到了:
Waiting for emulator to start...
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
Run Code Online (Sandbox Code Playgroud)
我出错的任何想法?我确定这是sdk root,为什么我的avd系统路径坏了?
Ole*_*err 135
将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
Run Code Online (Sandbox Code Playgroud)
如果模拟器找不到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管理器的AVD需要和下载系统映像(见下文).
如果一切都正确设置,那么这些错误ANDROID_SDK_ROOT
必须消失.如果他们不是,那么现在你可以尝试设置ANDROID_SDK_ROOT
变量.
您可能遇到的下一个问题是模拟器开始启动,但是挂起或立即退出.这可能意味着您没有安装所有必需的软件包.
另一个可能的错误是:
无法自动检测ADB二进制文件.在扩展设置页面中添加ADB的自定义路径之前,某些模拟器功能将无法运行.
因此,要成功启动任何AVD,您必须确保至少安装了这些软件包:
emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)
Run Code Online (Sandbox Code Playgroud)
正如我之前提到的,您必须安装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包含的数据,只需删除qcow2
AVD目录中的所有文件(例如,从中删除<user_home>/.android/avd/<avd_name>
).在这种情况下,您将获得一个干净的Android版本,就像硬重置后一样.
如果模拟器上的数据对您很重要,那么qcow2
使用任何HEX编辑器(我更喜欢HxD)逐个打开所有文件,找到基本img
文件的路径,并在Overwrite
模式中将其更改为正确的文件(以保留文件大小).然后选择路径并以十六进制(例如2F
)获取其长度.2F
表示ASCII斜杠/
.把它放到位13
:
PS:不确定,但可能有一些像qemu-img这样的实用工具允许设置不同的基本图像.好吧,对我来说,手动编辑二进制文件更容易.
现在,您可能能够成功启动Android虚拟设备.希望如此 :)
EFr*_*eak 113
在Mac:我已经安装android-sdk
使用brew
以及Android的工作室.不知何故,有2个安装导致了这个问题.当我卸载使用sdk的brew安装brew cask uninstall android-sdk
并将以下vars添加到我的环境中时.有效.
export ANDROID_HOME=/Users/<Username>/Library/Android/sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
Run Code Online (Sandbox Code Playgroud)
cua*_*joe 20
这将解决您在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
Run Code Online (Sandbox Code Playgroud)
Tec*_*Tim 14
这意味着您的工具路径不正确.这就是使用brew在mac上看起来的样子.记住版本.
export ANDROID_SDK_ROOT='/usr/local/Cellar/android-sdk/24.4.1_1'
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你应该运行这个:
export ANDROID_SDK_ROOT='/Users/username/Library/Android/sdk'
Run Code Online (Sandbox Code Playgroud)
小智 11
模拟器更新后我遇到了同样的问题。添加变量ANDROID_AVD_HOME后问题已解决
重要提示:路径中不能使用非 ASCII 字符。最后重新安装虚拟设备或手动覆盖 Configuration settings.ini 文件中的设备路径,该文件包含带有非 ascii 字符的旧路径。
C:\Users\<user_name>\.android\avd\<avd_name>
Run Code Online (Sandbox Code Playgroud)
jc1*_*c12 10
在我的情况下,它被破坏了,因为 ANDROID_HOME 和 ANDROID_SDK_ROOT 不同,所以一旦我将 ANDROID_HOME 设置为与 ANDROID_SDK_ROOT 相同,它就会开始工作。
psa*_*ren 10
我在Windows10中遇到相同的问题,请
按照以下步骤解决问题。
打开Android Studio-
工具
-SDK管理器
-复制Android SDK位置
Android SDK位置
设置系统环境变量
ANDROID_HOME和ANDROID_SDK_ROOT
系统环境变量
我在 Windows 10 上运行 Android Studio,在环境变量上设置 ANDROID_HOME 和 ANDROID_SDK_ROOT,但仍然出现错误。
原来,我忘记下载设备了。
下载“缺少系统映像”后,一切正常。
就像@EFreak一样,我用homebrew(Mac的软件包管理器)安装了android-sdk。我需要执行以下操作来修复该错误,因为我在遵循nativescript教程并遇到了错误。如果您喜欢我打算使用brew版本而不是android-sdk版本,请使用此答案(这将允许您使用nativescripts tns run android
api),如果您希望android studio默认的android-sdk,请遵循@EFreak的答案。
基本上,您只需要在Android Studio中更改Android SDK的位置即可。首先在android studio中打开一个项目。然后通过单击此按钮打开SDK Manager。
接下来,当出现android SDK Manager的默认首选项时,您需要单击android SDK位置旁边的编辑。
接下来,您需要在sdk组件设置屏幕上实际更新sdk位置,我的brew
android-sdk位于此处/usr/local/share/android-sdk
。您可以通过运行找到安装位置,brew cask info android-sdk
然后在输出的底部附近显示:
You can control android sdk packages via the sdkmanager command.
You may want to add to your profile:
'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"'
Run Code Online (Sandbox Code Playgroud)
export
ed ANDROID_SDK_ROOT
变量的值(此处为/usr/local/share/android-sdk
)是android sdk的本地酿造位置。
然后,您需要单击Android SDK位置按钮(在图片中标记为1),然后粘贴到Homebrew的Android SDK位置。
然后只需安装任何软件包来完成向导。在这一步中,我需要删除并重新创建设备仿真器,但此后它似乎运行良好。
另外,您可能想确保是否要执行Homebrew路由,以使配置文件设置脚本将ANDROID_HOME
和ANDROID_SDK_ROOT
环境变量设置为android sdk的Homebrew位置,否则上述操作将无效。这可以从家酿的位置,如果你安装的Android工作室担任指出之前安装自制得到改变这个答案由@Jamie护甲。您可以检查Android SDK的环境变量是通过运行正确设置echo $ANDROID_HOME
和echo $ANDROID_SDK_ROOT
和核实,他们都表现出了Android SDK的家酿位置。
如果您需要更改ANDROID_HOME和ANDROID_SDK_ROOT值,则可以在Mac的配置文件设置中执行此操作,该设置可能类似于~/.bash_profile
,“〜/ .bashrc”或“〜/ .profile”并定义如下:
You can control android sdk packages via the sdkmanager command.
You may want to add to your profile:
'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"'
Run Code Online (Sandbox Code Playgroud)
您需要将两个导出的值都更改为Homebrew的android SDK位置的正确值,然后保存文件。要验证是否已写入正确的值,您应该首先关闭并打开终端,然后重新运行文件并重置环境变量,或者可以通过运行source <profile file name>
在何处编辑和保存的概要文件来获取文件源。然后,您可以重新运行echo $ANDROID_HOME
并echo $ANDROID_SDK_ROOT
验证它们是否具有Homebrew android sdk位置。
Oleg Cherrs的回答使我找到了解决方案。正如他提到的
转到/.android/avd/并打开config.ini。找到> image.sysdir.1属性。它指向SDK内包含系统> images的目录。确保该目录存在并且包含诸如build.prop,> system.img等文件。如果不存在,则必须打开SDK Manager并下载AVD所需的系统映像(请参见下文)。
我在avd目录中找到了相应的模拟器* .ini文件。在那里,我修改了“ image.sysdir.1”条目。我用绝对路径替换了相对对象(在前面添加了ANDROID_SDK_ROOT)。之后,仿真器按预期从命令行启动。
如果您的用户包含非 ASCII 字符,则进行修复
对于获得“ PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT
”的人,其原因可能是用户中的用户包含非 ASCII字符。
因此,SDK和 .android 文件夹以及AVD文件夹都需要移动到另一个文件夹。
更改SDK路径:
打开Android Studio,进入配置,然后选择 SDK Manager。将当前 Android SDK 位置更改为“C:\Android\Sdk” (或其他位置,只是不在包含非 ASCII 字符的用户文件夹中)。
之后,添加以下系统变量:
ANDROID_SDK_ROOT C:\Android\Sdk
ANDROID_HOME C:\Android\Sdk
Run Code Online (Sandbox Code Playgroud)
更改AVD路径:
要更改 AVD 文件夹的放置位置(通常放置在“ C:\Users\<user name>\.android\avd
”中),您需要更改 AVD 文件夹的.android
放置位置。首先关闭Android Studio,然后添加系统变量ANDROID_SDK_HOME
以及您想要的新位置的路径.android
,例如C:\Android_SDK_HOME
另一个示例中使用的:
ANDROID_SDK_HOME C:\Android_SDK_HOME
Run Code Online (Sandbox Code Playgroud)
添加后,运行Android Studio。然后再次关闭它。现在.android
应该出现一个名为的文件夹。
您需要做的下一步也是最后一件事是设置ANDROID_AVD_HOME
系统变量。在这种情况下,将在C:\Android_SDK_HOME\.android\avd
ANDROID_AVD_HOME C:\Android_SDK_HOME\.android\avd
Run Code Online (Sandbox Code Playgroud)
我希望这可以解决一些人的问题。:)
您所需要做的就是安装所需的 Android 11 模拟器示例平台
sdkmanager --install "platforms;android-30"
Run Code Online (Sandbox Code Playgroud)
执行此操作后,您的模拟器将开始正常工作。
好的,我可以从cordova运行android,我将ANDROID_HOME更改为,
export ANDROID_HOME=/usr/local/opt/android-sdk
Run Code Online (Sandbox Code Playgroud)
小智 5
您应该添加 AVD 模拟器。去这个位置:
C:\Users\%username%\AppData\Local\Android\sdk\
Run Code Online (Sandbox Code Playgroud)
启动 AVD 管理器,然后在第二个选项卡(设备定义)中单击“createAVD”按钮。
小智 5
我在 Windows 10 中,问题是我计算机中的 avd 目录中包含非 ASCII 字符。
以下是该怎么做:
以管理员身份运行cmd
运行以下命令:
mklink /D C:\\.android C:\\Users\\-yourUsername-\\.android
Run Code Online (Sandbox Code Playgroud)
(这将在具有非 ASCII 字符的路径和新路径之间创建一个符号链接)
在环境变量中添加ANDROID_AVD_HOME
value 变量C:\\.android\avd
。
归档时间: |
|
查看次数: |
126126 次 |
最近记录: |