如何从命令行启动Android模拟器?


372

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

我的PATH中已经有Android工具和平台工具。

编辑:

如何告诉模拟器从命令行运行我的HelloWorld项目?我已经用ant构建了项目。


相关文档:使用创建avdmanager和启动emulator
jchook

Answers:


380

我假设您已经构建了项目并且只需要启动它,但是您没有创建任何AVD,必须对所有操作使用命令行。您必须执行以下操作。

  1. 为您所需的平台创建一个新的虚拟设备(AVD)。如果必须使用命令行创建AVD,则可以android create avd -n <name> -t <targetID>在targetID是所需的API级别的地方调用。如果可以使用GUI,只需键入,android avd它将启动管理器,您可以在其中执行相同的操作。您可以通过GUI命令行阅读有关AVD管理的更多信息。
  2. 通过使用命令emulator -avd <name>或通过先前启动的GUI 运行AVD 。等待仿真器完全加载,这需要一些时间。您可以在此处阅读有关其他选项的信息
  3. 现在,您必须将应用程序安装到AVD。通常,在开发过程中,您只需要使用与构建项目相同的Ant脚本,只需选择install目标即可。但是,您可以使用command手动安装应用程序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在上面的行中用just 代替.HelloWorld,它也将起作用。

1
您的4分列表是我要寻找的。当我跑步时adb install <path-to-your-APK>,我得到了error: device not found。如果在一个外壳中运行模拟器,而在另一个外壳中运行adb install命令,则会得到error: device offline。如何设置模拟的虚拟设备?
蒂埃里·林

3
好,从先前版本的答案中获取信息。:)如果您收到设备离线的消息,我认为您只是没有让系统加载。当显示Android徽标时尝试向模拟器发送命令是没有用的,您必须等到显示锁屏为止。没错,您必须使用另一个Shell实例将命令发送到设备。顺便说一句,您可以使用adb devices命令检查设备的当前状态。
马尔科姆

1
@ThomasW谢谢,我已将此信息添加到答案中。
马尔科姆(Malcolm)

1
@ L2G如果您将其作为脚本运行,那么可以。当我写下答案时,我假设您是手工完成所有事情,在这种情况下,您当然可以等待自己。
马尔科姆

4
通过以下方式重新启动adb-server:adb kill-server; adb start-server如果什么都没出现adb devices
evandrix

278

列出您所有的模拟器:

emulator -list-avds

运行带有-avd标志的列出的仿真器之一:

emulator -avd @name-of-your-emulator

emulator下面:

${ANDROID_SDK}/tools/emulator

2
如果从Linux终端运行,则必须cd进入$ ANDROID_SDK / tools文件夹,否则它将不起作用。
shimatai

4
谢谢!如果您使用emulator频率更高,为什么不创建别名:nano ~/.bashrc>添加alias emulator='$ANDROID_HOME/tools/emulator',保存,. ~/bashrc就完成了。(替换为ANDROID_HOME使用的正确变量或android文件夹的静态路径)。
塞缪尔·艾尔

3
如果引发以下错误:在../emulator/lib64/qt/lib中找不到ERROR:./ android / qt / qt_setup.cpp:28:Qt库,请从$ ANDROID_HOME / tools启动模拟器。github.com/decosoftware/deco-ide/issues/289
tebanep

如果您确实不导航到该tools文件夹,则它实际上将无法工作。我错了PANIC: Missing emulator engine program for 'x86' CPU.。(我在Linux上,是OpenSUSE。)导航到tools然后运行emulator -avd "{name}"后,它就起作用了。
pesho hristov

100

我认为通过终端到达它的最好方法是:

cd ~/Library/Android/sdk/tools

要直接运行某个AVD:

./emulator -avd {AVD_NAME}

要列出您的AVD,请使用:

./emulator -list-avds

Windows的路径是什么?
qwertzguy

9
啊找到了:C:\ Users \ <用户> \ AppData \ Local \ Android \ sdk \ emulator
qwertzguy

1
只有一个对我有用的东西,thx-但无论如何,每次都将其添加到您的路径或sm BC cd有点麻烦
John D

@JohnD说了什么-我将如何./作为emulator命令的一部分包含在路径/别名中?
DaveNOTDavid19年

在Linux中,对我而言,道路是~/Android/Sdk/emulator
泰勒·科利尔

26

仅在此处添加一下,每当您遇到“错误:设备脱机”时,由于仿真器启动所花费的时间,与仿真器和adb桥的连接已断开。

而不是此时重新启动模拟器,请尝试使用以下两个命令来停止并重新启动adb桥。

亚行杀害服务器

亚行启动服务器


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

25

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

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

例如,我在下面这样使用它:

emulator -avd ICS_ARM -wipe-data -no-boot-anim -cpu-delay 0

嗨,germangti,我有同样的问题。我收到“有效ABI:无ABI。错误:所选目标的--abi x86无效。”。您如何解决此问题?
Muneer Muhammed

15

打开CMD

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

C:\ adt-bundle-windows-x86_64-20140702 \ sdk \ tools 在此处输入图片说明

  1. 在我的情况下写“ emulator -avd emulatorname”

模拟器-avd AdilVD

在此处输入图片说明


13

如果严格尝试从命令行运行仿真器,请在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
Ben Sinclair,

2
@Andy应该替换NAMEOFDEVICE为仿真器的实际名称。进行操作emulator -list-avds以获取系统中拥有的avds的列表。
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模拟器启动!


5

(Linux)在终端中,复制和粘贴并以蓝色更改三个字段

/home/YouUser/Folder/adt-bundle-linux-x86_64-20140702/sdk/tools/emulator64-x86 -avd Android5.1.1

YouUser = user of session in linux
Folder = path of folfer
Android5.1.1 = You version of android in the emulator,for example (Android4.4.2)

您可以在文件夹home cd /home/Youuser/.android/avd/中查看模拟器


5

android create avd命令已弃用。现在建议改为使用avdmanager命令行来启动仿真器。

首先,如果尚不存在,请创建一个新的模拟器:

avdmanager create avd --name "MyEmulator" -k "system-images;android-
26;google_apis;x86"

假设您已经安装了与API 26匹配的X86系统映像,并且已安装Google API。

然后,您可以使用启动模拟器emulator @MyEmulator


4

现在,假设您已经安装了Android Studio(2.2),并且只有1个仿真器,则可以使用这条线

export ANDROID_SDK_ROOT=~/Library/Android/sdk/ && emulator '@'`emulator -list-avds`

如果您经常这样做,请使其更容易:

$ echo 'export ANDROID_SDK_ROOT=~/Library/Android/sdk/' >> ~/.profile

为添加别名 ~.aliases

alias androidup="emulator '@'`emulator -list-avds`" 

回想一下,以source ~/.profile ~/.aliases测试它之前

下次就 $ androidup


3

可用的avd名称列表

.android / avd

/ SDK_PATH / tools / emulator -netdelay none -n​​etspeed full -avd“ AVD_NAME”


3

在Windows中,我使用此PowerShell脚本启动它。

$em = $env:USERPROFILE+"\AppData\Local\Android\sdk\tools\emulator.exe"; 
Start-Process $em " -avd Nexus_5X_API_24" -WindowStyle Hidden;

3
  1. 开放式CMD
  2. 获取所有模拟器列表(C:\ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -list-avds)
  3. 选择任何模拟器(C:\ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -avd Pixel_2_API_28)

1

在Mac(我认为是Linux)上,在创建AVD之后,您可以创建别名: alias run-android='~/Library/Android/sdk/tools/emulator -avd ${YOUR_AVD_NAME} &'

注意:别名的执行不会锁定您的终端,如果您需要的话,只需删除最后一个'&'即可

emulator自行运行它会给您一个错误,因为他希望您在当前位置具有:/emulator/qemu/${YOUR_PATFORM}/qemu-system-x86_64'启动模拟器。


1

我使用Zenity编写了这个简单的Shell脚本,可让您选择要运行的avd。如果没有定义ANDROID_HOME,则可以将其替换为仿真器的完整路径。使用select而不是Zenity也很容易做到,但是我选择了Zenity,因为我是从xfce应用程序菜单(尽管是.desktop文件)运行它的。

#!/bin/sh

opt=$(zenity --title="Choose AVD" --text="Choose which emulator to start" --list \
                   --column="Devices" --separator="\n" `$ANDROID_HOME/emulator/emulator -list-avds`);

$ANDROID_HOME/emulator/emulator -avd $opt

1

运行第一个可用的模拟器:

~/Library/Android/sdk/tools/emulator -avd `~/Library/Android/sdk/tools/emulator -list-avds | awk '{print $1}'`

我做过类似的事情:~/Library/Android/sdk/tools/emulator -avd $(~/Library/Android/sdk/tools/emulator -list-avds | head -1)
Kamen Tsvetkov

0

在DNS帮助下从命令行启动模拟器

模拟器程序位置:/ Users / {{UserName}} / Library / Android / sdk / tools

  1. 检查现有的avd:-模拟器-list-avds

  2. 在DNS设置为/ Users / {{UserName}} / Library / Android / sdk / tools / emulator的情况下启动模拟器-avd Pixel_API_26 -dns-server 8.8.8.8


0

请参阅以下有关使用zsh的Ubuntu Linux的说明:

  1. 打开终端窗口(CTRL+ ALT+ T
  2. 运行命令nano ~/.zshrc以编辑您的个人资料
  3. 在打开的文件中添加以下行:
export ANDROID_SDK_HOME="~/Android/Sdk"
alias emulator="$ANDROID_SDK_HOME/emulator/emulator"
  1. 保存文件(CTRL+ OCTRL+ X
  2. 通过运行命令来获取概要文件,source ~/.zshrc 或者仅注销然后重新登录
  3. 通过emulator -help在终端中运行命令进行测试

注意:应bash替换.zshrc.bashrc


0

我来晚了,但是想分享一下,以便以后以后需要时也可以帮助到我和其他人:),所以下面是使用bash脚本通过一条命令从命令行打开模拟器的方法。我使用的是MX Linux,但是在所有操作系统上的过程都是相同的

1-首先检查已安装的模拟器

emulator -list-avds

结果如下

emulator -list-avds
Nexus_4_API_28
Pixel_2_API_28

2-打开任何纯文本或代码编辑器,然后创建一个新文件并按以下方式编写

#!/bin/sh
emulator -avd Nexus_4_API_28

Nexus_4_API_28是我要打开的仿真器,请写您从第一步获得的仿真器

使用.sh扩展名保存此文件

3-然后,更改文件的权限以使其可执行:

chmod u+x emu.sh

4-现在使用以下命令打开模拟器,仅执行此bash脚本文件

./emu.sh

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.