我该如何通过命令行启动Android模拟器?

477

我使用 Mac,从终端进行 Android 开发。我已经成功创建了HelloWorld项目,现在我正在尝试从命令行在 Android 模拟器中运行它。哪个命令可以为我的 HelloWorld 项目运行模拟器?

我已将 Android 工具和平台工具添加到 PATH 环境变量中。

编辑:

我如何告诉模拟器在命令行下运行我的 HelloWorld 项目?我已经使用 ant 编译了该项目。


相关文档:使用avdmanager创建并使用emulator启动。 - jchook
31个回答

410
我假设您已经构建了项目,只需要启动它,但是您没有创建任何AVD并且必须使用命令行执行所有操作。您需要执行以下步骤:
  1. 为所需的平台创建一个新的虚拟设备(AVD)。如果您必须使用命令行来创建AVD,则可以调用 android create avd -n <name> -t <targetID>,其中targetID是您需要的API级别。如果您可以使用GUI,请键入 android avd,它将启动管理器,在那里您可以执行相同的操作。您可以阅读更多关于通过GUI管理AVD通过命令行管理AVD的信息。
  2. 通过使用命令emulator -avd <name>或之前启动的GUI运行AVD。等待模拟器完全加载,这需要一些时间。您可以在此处阅读有关其他选项的信息
  3. 现在,您需要将应用安装到您的AVD上。通常在开发过程中,您只需使用与构建项目相同的Ant脚本,只需选择install目标即可。但是,您也可以使用命令adb install <path-to-your-APK>手动安装应用。
  4. 现在切换到模拟器并像在任何普通设备上一样启动您的应用程序,通过启动器。或者,作为替代方案,您可以使用以下命令:adb shell am start -a android.intent.action.MAIN -n <package>/<activity class>。例如:adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld/org.sample.helloworld.HelloWorld。正如评论者建议的那样,您还可以将上述行中的org.sample.helloworld.HelloWorld替换为.HelloWorld,它也能正常工作。

3
好的,我从之前的答案版本中带回了信息。 :) 如果你收到设备离线的消息,我认为你只是没有让系统加载。当它显示Android标志时,尝试发送命令到模拟器是无用的,你必须等待直到它显示锁屏界面。你是正确的,你必须使用另一个shell实例来发送命令到你的设备。顺便说一下,你可以使用adb devices命令检查设备的当前状态。 - Malcolm
1
@ThomasW 谢谢,我已将此信息添加到答案中。 - Malcolm
1
如果您将此作为脚本运行,则是的,您可以这样做。当我回答时,我假设您一切手工操作,那么当然可以等待自己完成。 - Malcolm
4
如果在adb devices上没有任何显示,请通过以下方式重启adb-server:adb kill-server; adb start-server - evandrix
1
看起来他们正在废弃android命令的功能,这真是太遗憾了。所有这些GUI Android Studio的东西都让我想起了糟糕的Visual Studio体验,而且相似的名称也没有帮助改善情况。 - trysis
显示剩余14条评论

386

列出所有模拟器:

emulator -list-avds

使用 -avd 标志之一运行列出的模拟器:

emulator -avd name-of-your-emulator

模拟器可执行文件的位置在:

${ANDROID_SDK}/tools/emulator

或者,对于更新的SDK,请尝试:

cd ${ANDROID_HOME}/emulator
emulator -avd name-of-your-emulator

6
如果您在 Linux 终端中运行,请先使用 cd 命令进入 $ANDROID_SDK/tools 文件夹,否则它将无法正常工作。 - shimatai
5
谢谢!如果你经常使用 emulator 命令,为什么不创建一个别名:使用命令 nano ~/.bashrc 打开文件并添加 alias emulator='$ANDROID_HOME/tools/emulator',保存后执行 . ~/bashrc 即可。请将 ANDROID_HOME 替换为正确的变量或 Android 文件夹的静态路径。 - Ismail
3
如果出现以下错误:ERROR:./android/qt/qt_setup.cpp:28:Qt库未在../emulator/lib64/qt/lib中找到,从$ANDROID_HOME/tools启动模拟器是一种解决方法。请参考https://github.com/decosoftware/deco-ide/issues/289。 - tebanep
如果你真的不进入“工具”文件夹,它就真的无法工作。我收到了错误信息“PANIC: Missing emulator engine program for 'x86' CPU.”(我在Linux上,使用OpenSUSE系统)。当我进入“工具”文件夹并运行“emulator -avd "{name}"”时,它就可以正常工作了。 - pesho hristov
例如在Windows系统下:C:\Users\<YourUserName>\AppData\Local\Android\Sdk\tools> .\emulator.exe -avd Pixel_2_API_21 - NM Naufaldo

182

我认为通过终端访问它的最佳方式是:

cd ~/Library/Android/sdk/emulator

或者针对Windows

cd %userProfile%\AppData\Local\Android\sdk\emulator

直接运行特定的AVD:

./emulator -avd {AVD_NAME}

列出你的 AVD,请使用:

./emulator -list-avds

Windows的路径是什么? - qwertzguy
22
我找到了:C:\Users<user>\AppData\Local\Android\sdk\emulator。 - qwertzguy
1
只有这个对我有效,谢谢 - 但是有没有办法将其添加到您的路径或其他地方,因为每次都要转到那里有点麻烦 - Coder
1
在Linux中,我的路径是~/Android/Sdk/emulator - Tyler Collier
完美!在 Mac 上也可以运行! - Mohamad Ghaith Alzin
显示剩余2条评论

30

在这里补充一点,每当你看到“错误:设备离线”的提示时,意味着由于仿真器启动所需的时间过长,与仿真器和adb桥接的连接已经断开。

此时,不要重新启动仿真器,而是尝试以下两个命令,以停止并重新启动adb桥接。

adb kill-server

adb start-server


1
在Windows中,您可能还需要使用任务管理器终止adb.exe任务。 - Carl

29

这里您可以查看通过命令行执行此命令的选项:

emulator -avd avd_name [-option [value]] ... [-qemu args]

例如,我使用它如下所示:
emulator -avd ICS_ARM -wipe-data -no-boot-anim -cpu-delay 0

你好 germangti,我也遇到了同样的问题。我收到了“有效的ABIs:没有ABIs。错误:对于所选目标,--abi x86 无效。”。你是如何解决这个问题的? - Muneer Muhammed
-cpu-delay现已被弃用。 - HoseinGhanbari

20

打开CMD

  1. 打开命令提示符
  2. 在我的情况下,输入模拟器的路径

C:\adt-bundle-windows-x86_64-20140702\sdk\tools 输入图像描述

  1. 在我的情况下,输入“emulator -avd emulatorname”

emulator -avd AdilVD

输入图像描述


15

Mac with zsh 操作指南:

打开终端窗口(CTRL+ALT+T)

运行命令 nano ~/.zshrc 来编辑你的个人资料

在打开的文件中添加以下行:

export ANDROID_SDK_HOME="~/Library/Android/Sdk"

alias emulator="$ANDROID_SDK_HOME/emulator/emulator"

保存文件 (CTRL+O, CTRL+X)

通过运行命令 source ~/.zshrc 或者直接注销并重新登录来启用配置文件。

测试是否成功,可以使用以下命令:

emulator -helpemulator -list-avds 来在终端中显示模拟器,并使用以下命令来运行 Android 模拟器:

emulator -avd <name>

注意:对于 bash,只需将 .zshrc 替换为 .bashrc 即可。


14

如果你严格地想要通过命令行来运行模拟器,在OSX中试试这个。

"/Applications/Android Studio.app/sdk/tools/emulator" -avd <NAMEOFDEVICE> -netspeed full -netdelay none

你可以通过在 .bash_profile 中添加别名,并将其发送到后台作业来使其更简单。

alias android='/Applications/Android\ Studio.app/sdk/tools/emulator <NAMEOFDEVICE> -netspeed full -netdelay none &'

告知Bash这些变化。

source ~/.bash_profile

zsh:没有这样的文件或目录:NAMEOFDEVICE - pronebird
2
@Andy,你需要用实际的模拟器名称替换NAMEOFDEVICE。使用emulator -list-avds命令获取系统中已有的AVD列表。 - nabn

9
如果您拥有Git Bash,您可以通过一些初始设置双击打开模拟器 (仅在Windows 10中测试过)

  1. 打开Git Bash。
  2. 运行cd ~/AppData/Local/Android/sdk/emulator
  3. 运行./emulator -list-avds并记下模拟器的名称。例如MY_EMULATOR
  4. 打开记事本并添加这两行内容(插入您模拟器的名称而不是MY_EMULATOR):

    cd ~/AppData/Local/Android/sdk/emulator; ./emulator -avd MY_EMULATOR

  5. 将文件保存到方便的地方并将其命名为myfile.sh。您可以根据需要更改“myfile”,但需要.sh扩展名。

  6. 在存储myfile.sh的目录中打开Git Bash,并运行chmod +x myfile.sh。请记住将您的文件名替换为myfile

就这些了!从现在开始,每当您需要启动该模拟器时,只需找到您的myfile.sh并双击它,然后等待Android模拟器启动即可!


9

打开命令提示符并进入<android-Home>\sdk\tools>,输入emulator -avd <AVD_NAME>

这里的"emulator"是用于打开Android虚拟设备的命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接