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

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

我已经有Android工具和平台工具在我的路径。

编辑:

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

539773 次浏览

我假设你已经构建了你的项目,只需要启动它,但你没有创建任何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 target。但是,您可以使用命令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。正如一位评论者所建议的,你也可以用.HelloWorld替换上面一行中的org.sample.helloworld.HelloWorld,它也可以工作。

在这里补充一点,每当你得到“error: device offline”;意味着与模拟器的连接&Adb桥因模拟器启动时间而中断。

而不是重新启动模拟器在这一点上,尝试以下两个命令停止&重新启动adb桥接。

亚行kill-server

亚洲开发银行启动服务器

在这里你可以通过命令行检查执行这个命令的选项:

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

例如,我是这样使用它的:

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

打开命令提示符并转到<android-Home>\sdk\tools>emulator -avd <AVD_NAME>

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

如果您严格地试图从命令行运行模拟器,请在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

上可用的avd名称列表

.android / avd

/SDK_PATH/tools/emulator -netdelay none -netspeed full -avd . “AVD_NAME”< / p >

< p > (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/ < /强> < / p >

列出所有模拟器:

emulator -list-avds

运行一个带有-avd标志的列出的模拟器:

emulator -avd name-of-your-emulator

其中emulator可执行文件在下面:

${ANDROID_SDK}/tools/emulator

或者,对于更新的sdk,尝试:

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

打开CMD

  1. 打开命令提示符
  2. 在我的例子中输入模拟器的路径
< p > C: \ adt - bundle - windows - x86_64 - 20140702 \ \ sdk工具 enter image description here < / p >
  1. 在我的例子中写“emulator -avd emulatorname”

模拟器-avd AdilVD

enter image description here

现在假设你已经安装了Android Studio(2.2)在我的情况下,只有一个模拟器,你可能会使用这一行

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

我认为通过终端到达的最佳方式是:

cd ~/Library/Android/sdk/emulator

或者对于Windows:

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

直接运行某个AVD:

./emulator -avd {AVD_NAME}

列出你的avd使用:

./emulator -list-avds

在windows中,我使用这个PowerShell脚本来启动它。

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

android create avd命令已弃用。现在建议使用avdmanager来代替从命令行启动模拟器。

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

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

这里假设您已经安装了一个与API 26匹配的X86系统映像,并安装了谷歌API。

然后你可以用emulator @MyEmulator启动模拟器。

使用dns帮助从命令行启动模拟器

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

  1. 检查现有avd:- 李模拟器-list-avds < / p > < / > 以dns设置启动模拟器 /Users/\{\{UserName}}/Library/Android/sdk/tools/emulator -avd Pixel_API_26 -dns-server 8.8.8.8

  2. .
在Mac(我认为还有Linux)上,在你创建了你的AVD之后,你可以创建一个别名: alias run-android='~/Library/Android/sdk/tools/emulator -avd ${YOUR_AVD_NAME} &' < / p >

请注意:别名的执行不会锁定你的终端,如果你想这样做,只需删除最后一个“,”

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

我用Zenity写了这个简单的shell脚本,让你选择你想要运行的avd。如果你没有定义ANDROID_HOME,你可以用模拟器的完整路径替换它。 使用select而不是Zenity也很容易做到这一点,但我选择了Zenity,因为我是从xfce-application菜单中运行它(虽然是.desktop-file)

#!/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

如果你有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 < / p >

  5. 将文件保存在方便的地方,如myfile.sh. sh。你可以改变“myfile”作为最适合你,但扩展.sh是必要的。

  6. 在你存储myfile.sh的目录下打开Git Bash并运行chmod +x myfile.sh。记住输入你的文件名而不是myfile

就是这样!从现在开始,每次你需要启动模拟器时,只要找到你的myfile.sh并双击它,然后等待你的Android模拟器启动!

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

~/Library/Android/sdk/tools/emulator -avd `~/Library/Android/sdk/tools/emulator -list-avds | awk '{print $1}'`
  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)

我迟到了,在这里,但想要分享,所以它可能会帮助别人和我以后需要的时候:), 下面是使用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

enter image description here

转到模拟器所在的目录

$ {ANDROID_SDK} /工具/模拟器

从CLI检查模拟器列表

模拟器-list-avds

从列表中提取AVD

模拟器-avd {avd_name}

对于一键启动(批处理文件),这是我所做的:

  • 从Android Studio获得了AVD的名字>工具→AVD经理->点击向下箭头并选择查看详细信息(对我来说是Pixel_2_API_28,所以下面相应地更改)
  • 创建一个start.bat文件,并将以下内容放入其中:
 c:
cd C:\Program Files (x86)\Android\android-sdk\emulator\
emulator -avd Pixel_2_API_28

解释:

  • 第一行:对我来说是必要的,因为我从d启动它:
  • 第二行:对我来说,没有使用工具\模拟器
  • <李>第三行: 确保你用你的名字更改了AVD的名字 Pixel_2_API_28 < / >强)

使用:

  • 从命令行启动start.bat
  • 在cmd中轻松地键入此命令。
  • 替换Users\ your user name \之后
  • 如果你没有这个文件重新安装android studio。

type this command in cmd

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 ~/命令获取概要文件的来源。或者注销再重新登录

测试

emulator -helpemulator -list-avds 在终端中显示模拟器 运行Android模拟器:

emulator -avd <name>

注意:将.zshrc替换为.bashrc对于bash也应该是一样的

一个启动程序脚本,列出现有的avd,让你选择一个你想要的。需要python3 (至少v3.4)和一个有效的环境变量ANDROID_HOMEANDROID_SDK指向Android SDK目录。

#!/usr/bin/env python3


import os
import subprocess
from pathlib import Path


android_emulator_dir: Path = Path(os.environ['ANDROID_HOME'] or os.environ['ANDROID_SDK']) / 'emulator'


if android_emulator_dir.exists():
emulator_dir = android_emulator_dir.absolute()
print(f'SDK emulator dir: {emulator_dir}', end='\n\n')


proc = subprocess.Popen(['./emulator', '-list-avds'], stdout=subprocess.PIPE, cwd=emulator_dir, text=True)
avds = {idx: avd_name.strip() for idx, avd_name in enumerate(proc.stdout, start=1)}


print('\n'.join([f'{idx}: {avd_name}' for idx, avd_name in avds.items()]))


avd_idx = input("\nType AVD index and press Enter... ")
avd_name = avds.get(int(avd_idx))


if avd_name:
subprocess.Popen(['./emulator', '-avd', avd_name, '-no-boot-anim'], cwd=emulator_dir)
else:
print('Invalid AVD index')
else:
print(f'Either $ANDROID_HOME or $ANDROID_SDK must be defined!')


AppleScript版本(仅限MacOS)

osascript -e '
set avds to paragraphs of (do shell script "~/Library/Android/sdk/emulator/emulator -list-avds")
set avd to (choose from list avds with prompt "Please select an AVD to start" default items "None" OK button name {"Start"} cancel button name {"Cancel"})
do shell script "~/Library/Android/sdk/emulator/emulator -avd " & avd & " -no-boot-anim > /dev/null 2>&1 &"
'

上面的脚本也可以从Script Editor.appAutomator.app(单引号之间的位)运行。您也可以使用脚本编辑器将其保存为原生macos应用程序:在菜单中选择文件,按住 (选项)键,选择另存为然后选择文件格式: 应用程序

  1. 列出所有已安装的设备:emulator -list-avds

这将列出安装在Android Studio中的所有设备。

  1. 运行模拟器:emulator -avd device_name

例如,如果你在运行选项1中的命令后得到Pixel_3a_API_30_x86,那么你运行模拟器的命令将是:emulator -avd Pixel_3a_API_30_x86

Windows 10对我的帮助:

1 cd C:\Users\xxx\AppData\Local\Android\Sdk\emulator

列出所有可用的:emulator -list-avds

3启动NON-GUI模式:模拟器-avd Pixel_3a_API_30_x86 -no-window

对于自动化(CI),我们采取了如下步骤:

  1. 首先,找到SDK的工具位置,并存储在变量中供以后使用。

    tools=$ANDROID_HOME/cmdline-tools/latest/bin
    arch="x86_64"
    package="system-images;android-23;google_apis;$arch"
    
  2. 确保Android-image下载成功。

    $tools/sdkmanager "$package"
    
  3. 接受许可。

    echo yes | $tools/sdkmanager --licenses
    
  4. < p >建立AVD。

    echo no | $tools/avdmanager create avd --force --name MyAVD --abi google_apis/$arch --package "$package"
    

    说“no"是否要创建自定义硬件配置文件?…“

  5. 并行启动模拟器。

    $ANDROID_HOME/emulator/emulator -netdelay none -netspeed full -no-snapshot-load -no-snapshot -avd MyAVD > /dev/null &
    
  6. < p >构建APK。

    ./gradlew assembleDebug
    
  7. 最后,Android-tests (Instrumented tests)自动检测并在模拟器上运行。

    ./gradlew connectedAndroidTest
    

    请注意,因为我们并行启动模拟器,你需要等待,直到模拟器准备好,在步骤#7之前。

    可以用脚本计算构建时间,如果构建所需的时间少于模拟器启动所需的时间,则调用sleep

Windows:

在Windows搜索栏中搜索环境,选择"编辑系统环境变量"
在“系统属性”窗口中,单击环境变量并指定PATH环境变量的值:

C:\Users\ {用户} \ AppData \本地Android \ Sdk \ \模拟器。

现在打开CMD或Powershell并键入: emulator -list-avds 这将显示所有avd的列表。 要运行特定的AVD,在CMD/Powershell中输入:emulator -avd {EmulatorName}

如果您添加了正确的android模拟器路径,AVD将打开。