【问题标题】:How do I launch the Android emulator from the command line?如何从命令行启动 Android 模拟器?
【发布时间】:2011-06-25 20:45:05
【问题描述】:

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

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

编辑:

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

【问题讨论】:

标签: android command-line android-emulator console console-application


【解决方案1】:

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

  1. 为您需要的平台创建一个新的虚拟设备 (AVD)。如果您必须使用命令行来创建 AVD,您可以调用 android create avd -n <name> -t <targetID> 其中 targetID 是您需要的 API 级别。如果您可以使用 GUI,只需输入android avd,它就会启动管理器,您也可以在其中执行相同操作。您可以阅读有关AVD management through GUIthrough command line 的更多信息。
  2. 使用命令emulator -avd <name> 或通过之前启动的GUI 运行AVD。等到模拟器完全加载,这需要一些时间。你可以阅读additional options here
  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,它也可以。

【讨论】:

  • 您的 4 点列表正是我想要的。当我运行adb install <path-to-your-APK> 时,我得到error: device not found。如果我在一个 shell 中运行模拟器并在另一个 shell 中运行 adb install 命令,我会得到error: device offline。如何设置模拟虚拟设备?
  • 好的,从以前版本的答案中带回信息。 :) 如果您收到设备离线的消息,我认为您只是没有让系统加载。当它显示Android logo时尝试向模拟器发送命令是没有用的,你必须等到它显示锁屏。你是对的,你必须使用另一个 shell 实例来向你的设备发送命令。顺便说一句,您可以使用adb devices 命令查看设备的当前状态。
  • @ThomasW 谢谢,我已将此信息添加到答案中。
  • @L2G 如果您将其作为脚本运行,那么是的,您可以这样做。当我写答案时,我假设您手动完成所有操作,在这种情况下,您当然可以等待自己。
  • 如果 adb devices 上没有显示任何内容,则通过 adb kill-server; adb start-server 重新启动 adb-server
【解决方案2】:

列出你所有的模拟器:

emulator -list-avds

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

emulator -avd @name-of-your-emulator

emulator 在哪里:

${ANDROID_SDK}/tools/emulator

【讨论】:

  • 如果你从 Linux 终端运行,你必须 cd 进入 $ANDROID_SDK/tools 文件夹,否则它将不起作用。
  • 谢谢!如果您经常使用emulator,为什么不创建别名:nano ~/.bashrc > 添加alias emulator='$ANDROID_HOME/tools/emulator',保存,. ~/bashrc,您就完成了。 (将 ANDROID_HOME 替换为使用的正确变量或 android 文件夹的静态路径)。
  • 如果出现以下错误:ERROR:./android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib, 从 $ANDROID_HOME 启动模拟器/tools 是一种解决方法。 github.com/decosoftware/deco-ide/issues/289
  • 如果您真的不导航到tools 文件夹 - 它真的行不通。我收到错误PANIC: Missing emulator engine program for 'x86' CPU.。 (我在 Linux 上,OpenSUSE。)在我导航到 tools 然后运行 ​​emulator -avd "{name}" - 然后它工作了。
  • windows 示例:C:\Users\<YourUserName>\AppData\Local\Android\Sdk\tools> .\emulator.exe -avd Pixel_2_API_21
【解决方案3】:

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

cd ~/Library/Android/sdk/emulator

直接运行某个 AVD:

./emulator -avd {AVD_NAME}

要列出您的 AVD,请使用:

./emulator -list-avds

【讨论】:

  • Windows 的路径是什么?
  • 啊找到了:C:\Users\\AppData\Local\Android\sdk\emulator
  • 只有一个对我有用,谢谢 - 但无论如何要将它添加到你的路径或 smth bc cd'ing 每次都有点麻烦
  • @JohnD 所说的 - 我如何将 ./ 作为 emulator 命令的一部分包含到路径/别名中?
  • 在 Linux 中,我的路径是 ~/Android/Sdk/emulator
【解决方案4】:

在这里补充一下,每当您收到“错误:设备脱机”时,意味着与模拟器和 adb 桥的连接由于模拟器启动时间而中断。

此时不要重新启动模拟器,而是尝试以下两个命令再次停止和启动 adb bridge。

adb kill-server

adb 启动服务器

【讨论】:

  • 在 Windows 中,您可能还需要使用任务管理器终止 adb.exe 任务。
【解决方案5】:

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

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 无效。”。你是如何解决这个问题的?
  • developer.android.com/studio/run/… -cpu-delay 现已弃用
【解决方案6】:

打开CMD

  1. 打开命令提示符
  2. 在我的例子中输入模拟器的路径

C:\adt-bundle-windows-x86_64-20140702\sdk\tools

  1. 在我的例子中写“emulator -avd emulatorname”

模拟器 -avd AdilVD

【讨论】:

    【解决方案7】:

    如果您严格尝试从命令行运行模拟器,请在 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
    • @Andy 你应该用模拟器的实际名称替换NAMEOFDEVICE。执行emulator -list-avds 以获取系统中的 avd 列表。
    【解决方案8】:

    打开命令提示符并转到&lt;android-Home&gt;\sdk\tools&gt;emulator -avd &lt;AVD_NAME&gt;

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

    【讨论】:

      【解决方案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 模拟器启动!

      【讨论】:

        【解决方案10】:

        带有 zsh 的 Mac 的说明

        打开终端窗口 (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 &lt;name&gt;

        注意:通过将 .zshrc 替换为 .bashrc 应该与 bash 相同

        【讨论】:

        • 谢谢,这对我在 linux 中也有帮助
        【解决方案11】:

        (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)
        

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

        【讨论】:

          【解决方案12】:

          现在假设您在我的情况下安装了 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

          【讨论】:

            【解决方案13】:

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

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

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

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

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

            【讨论】:

              【解决方案14】:
              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)

              【讨论】:

                【解决方案15】:

                可用的avd名称列表

                .android/avd

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

                【讨论】:

                  【解决方案16】:

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

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

                  【讨论】:

                    【解决方案17】:

                    进入模拟器所在目录

                    ${ANDROID_SDK}/tools/emulator

                    从 CLI 检查模拟器列表

                    模拟器-list-avds

                    从列表中运行 AVD

                    模拟器 -avd {avd_name}

                    【讨论】:

                      【解决方案18】:
                      1. 列出所有安装的设备:emulator -list-avds

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

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

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

                      【讨论】:

                        【解决方案19】:

                        我来晚了,但想分享一下,所以以后需要时可能对某人和我也有帮助:), 因此,以下是使用 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
                        

                        【讨论】:

                        • 这个答案为我和我的团队节省了大量时间。谢谢
                        【解决方案20】:

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

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

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

                        【讨论】:

                          【解决方案21】:

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

                          【讨论】:

                            【解决方案22】:

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

                            ~/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)
                            【解决方案23】:

                            请参阅下面的 Ubuntu Linux 说明与 zsh

                            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 相同,将 .zshrc 替换为 .bashrc

                            【讨论】:

                              【解决方案24】:

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

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

                              【讨论】:

                                【解决方案25】:

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

                                【讨论】:

                                  【解决方案26】:
                                  • 在 cmd 中轻松输入此命令。
                                  • Users\ your user name \之后替换
                                  • 如果您没有此文件,请重新安装 android studio。

                                  【讨论】:

                                    【解决方案27】:

                                    列出现有 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(单引号之间的位)运行。您也可以使用 Script Editor 将其保存为原生 macos 应用程序:选择菜单上的 File,按住 (选项)键,选择另存为,然后选择文件格式应用程序

                                    【讨论】:

                                      【解决方案28】:

                                      Windows 10 对我有什么帮助:

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

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

                                      3 以非 GUI 模式启动:emulator -avd Pixel_3a_API_30_x86 -no-window

                                      【讨论】:

                                        猜你喜欢
                                        • 2017-09-23
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2014-11-19
                                        • 1970-01-01
                                        • 2011-12-16
                                        • 1970-01-01
                                        • 2012-01-10
                                        • 2021-05-27
                                        相关资源
                                        最近更新 更多