首页 文章

PANIC:破坏AVD系统路径 . 检查您的ANDROID_SDK_ROOT值

提问于
浏览
68

在终端中输入 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 回答

  • 1

    您应该添加AVD模拟器 . 转到这个位置:

    C:\Users\%username%\AppData\Local\Android\sdk\
    

    启动AVD Manager,然后在第二个选项卡(设备定义)中单击“createAVD”按钮 .

  • 14

    _79970_中缺少

    • Platfoms目录 .

    • 我创建了一个名为平台的空目录来解决问题 .

  • 2

    检查AVD使用的系统映像是否已在 $ANDROID_SDK_ROOT/system-images/ 下载

  • 1

    在我的情况下它被破坏了因为ANDROID_HOME和ANDROID_SDK_ROOT不同,所以一旦我将ANDROID_HOME设置为与ANDROID_SDK_ROOT相同,那么它就开始工作了 .

  • 0

    将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中的路径


    SDK结构不完整/已损坏

    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位置 automatically . 如果没有,那么你的SDK可能有错误的filetree . 请执行以下操作:

    • 检查SDK目录是否至少包含以下4个目录: emulatorplatforms ,_ platform-toolssystem-images . It is very important! 必须存在这些目录 . 如果其中一些不存在,那么只需创建空目录 .

    • 转到 <user_home>/.android/avd/<avd_name> 并打开 config.ini . 找到 image.sysdir.1 属性 . 它指向SDK目录中包含实际系统映像的目录 . 确保此目录存在并包含 build.propsystem.img 等文件 . 如果没有,则必须打开SDK Manager并下载AVD所需的系统映像(参见下文) .

    如果一切设置正确,那么关于 ANDROID_SDK_ROOT 的这些错误必须消失 . 如果它们不是,那么现在您可以尝试设置 ANDROID_SDK_ROOT 变量 .


    未安装必需的软件包和HAXM

    您可能遇到的下一个问题是模拟器开始启动,但是挂起或立即退出 . 这可能意味着您没有安装所有必需的软件包 .

    另一个可能的错误是:

    无法自动检测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 .


    Qcow2文件是指不正确/不存在的基本映像

    当你试图将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 文件,找到基本 img 文件的路径,并在 Overwrite 模式下将其更改为正确的文件(保留文件大小) . 然后选择路径并以十六进制获取其长度(例如 2F ) . 2F 表示ASCII斜杠 / . 把它放到位 13

    Edit Android qcow2 files using HxD HEX editor

    PS:不确定,但可能有一些像qemu-img这样的实用工具允许设置不同的基本图像 . 好吧,对我来说,手动编辑二进制文件更容易 .


    现在,您可能能够成功启动Android虚拟设备 . 希望如此 :)

  • 2

    在Mac上:我使用 brew 以及Android Studio安装了 android-sdk . 不知何故,有2个安装导致了这个问题 . 当我卸载我的brew安装时sdk使用 brew cask uninstall android-sdk 并将以下变量添加到我的环境中 . 有效 .

    export ANDROID_HOME=/Users/<Username>/Library/Android/sdk
    export ANDROID_SDK_ROOT=$ANDROID_HOME
    
  • 1

    这意味着您的工具路径不正确 . 这就是使用brew的Mac上的样子 . 记住版本 .

    export ANDROID_SDK_ROOT='/usr/local/Cellar/android-sdk/24.4.1_1'
    

    在你的情况下,你应该运行这个:

    export ANDROID_SDK_ROOT='/Users/username/Library/Android/sdk'
    
  • 4

    好吧,我可以从cordova运行android,我改变了ANDROID_HOME,

    export ANDROID_HOME=/usr/local/opt/android-sdk
    
  • 2

    这将解决您在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
    
  • 0

    刚刚遇到这个问题并设法解决它 .

    模拟器:[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中定义路径,如下所示:

    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
    
  • 79

    作为@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 manager button location

    接下来当android SDK管理器的默认首选项出现时,您需要单击android SDK位置旁边的编辑 .

    enter image description here

    接下来,您需要实际更新sdk组件设置屏幕上的sdk位置,我的 brew android-sdk位于此处 /usr/local/share/android-sdk .

    enter image description here

    然后通过安装任何软件包完成向导 . 我需要在此步骤中删除并重新创建我的设备模拟器,但之后它似乎工作得很好 .

  • 82

    Oleg Cherrs回答了我的解决方案 . 正如他所说

    转到/.android/avd/并打开config.ini . 找到> image.sysdir.1属性 . 它指向包含system> images的SDK内的目录 . 确保该目录存在并包含build.prop,> system.img等文件 . 如果没有,则必须打开SDK Manager并>下载AVD所需的系统映像(见下文) .

    我在avd目录中找到了相应的模拟器* .ini文件 . 在那里我修改了“image.sysdir.1”条目 . 我用绝对路径替换了亲戚(在前面附加ANDROID_SDK_ROOT) . 之后,仿真器按预期从命令行启动 .

  • 0

    设置后面的路径变量后,我遇到了同样的问题 Note AVD Home path is different from other three.

    enter image description here

  • 1

    要解决此问题,我必须使用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

  • -5

    我在Windows10中遇到同样的问题,
    按照以下步骤解决了我的问题 .
    打开Android Studio

  • 3

    经过一段时间尝试其他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启动虚拟设备 .

  • 4

    我刚才有了在Mac上同样的问题,这就是我做的:

    • 我删除了用brew安装的android-sdk

    • 我将ANDROID_HOME变量设置为与ANDROID_SDK_ROOT = / Users / username / Library / Android / sdk相同

  • 0

    对于Windows机器:尝试了很多设置路径后,删除路径等 . 最终工作的是找到文件夹 C:\Users\johndoe\.android 并删除它 . 之后,您可以在Android Studio中共进午餐,它会要求您下载并安装新的AVD,它将覆盖并创建一个全新的文件夹和文件 . 这解决了这个问题 .

  • 3

    我遇到了这个问题,因为我从早期就开始做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,它会毫无错误地启动

  • 2

    我有同样的问题 . 我删除了.android / avd文件夹中的图像模拟器,并在安装了lib32stdc 6之后:

    sudo apt-get install lib32stdc++6
    

    所以,它的工作原理!魔法?

相关问题