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

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

编辑:

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


当前回答

一个启动程序脚本,列出现有的avd,让你选择一个你想要的。需要python3(至少v3.4)和一个有效的环境变量ANDROID_HOME或ANDROID_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 &"
'

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

其他回答

我使用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

在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启动模拟器。

对于一键式(BATCH文件)启动,这是我所做的:

从Android Studio -> Tools -> AVD Manager ->点击箭头向下,选择查看详细信息(对我来说是Pixel_2_API_28,所以下面相应地更改) 创建一个start.bat文件,并将以下内容放入其中:

c: cd C:\Program Files (x86)\Android\ android-sdk\emulator\ 模拟器-avd Pixel_2_API_28

解释:

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

使用:

从命令行启动start.bat

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

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