【问题标题】:Is it possible to install APK file if more than one emulators/devices are connected [duplicate]如果连接了多个模拟器/设备,是否可以安装 APK 文件 [重复]
【发布时间】:2011-11-03 09:55:04
【问题描述】:

我知道如何通过命令提示符将 apk 文件安装到模拟器中。 但我想知道是否可以通过提供任何特定名称将相同的 apk 文件安装到多个模拟器中? 实际上我必须在许多设备中测试一个 apk 文件。为此,我已经启动了许多设备。我知道如何安装它。如果所有设备都打开,那么它将无法安装。那么是否有任何替代方法可以通过提供任何特定的设备模拟器 ID 或任何名称来安装该 apk 文件? 如果有任何想法,请帮助我。 . . 谢谢。

【问题讨论】:

    标签: android android-emulator emulation adb


    【解决方案1】:

    是的,您可以在特定设备上安装 apk。

    在命令中输入:

    adb devices
    // list of devices and its unique ID...
    

    然后输入:

    adb -s "<deviceIDfromlist>" install "<path-to-apk>"
    

    【讨论】:

    • 设备ID是指那个数字??在设备上显示为 5554 或 5556... 就像???
    • 是的,执行 adb devices 后得到的数字
    • 谢谢。我得到了它。但是,“deviceIDfromlist”是列为 5554 或 5556 或类似的设备号吗?或任何不同的数字??
    • @djaqeel:那时我是安卓新手。现在我对这一切都了如指掌。
    • 如果您需要知道哪个设备可以使用adb devices -l,它将为您提供有关每个设备的更多信息,如下所示:c1cd3890098c08f0 device usb:337641472X product:rubenswifixx model:SM_T360 device:rubenswifi transport_id:5 0123456789ABCDEF device usb:336592896X product:HR935 model:HR935 device:HR935 transport_id:3
    【解决方案2】:

    第一步:获取所有连接设备的设备ID

    adb devices
    

    第 2 步:安装到您要安装的特定设备

    adb -s deviceId install path+apk
    

    例子:

    第 1 步:

    C:\Android\android-sdks\platform-tools>adb devices
    

    附加设备列表 emulator-5554 设备 014FD87107021017
    设备

    第 2 步:

    C:\Android\android-sdks\platform-tools>adb -s 014FD87107021017 install C:\Users\
    user\Documents\appname.apk
    

    【讨论】:

    • 我们应该使用一些流水线或脚本来顺序执行所有命令
    • 对于 Windows,这是一个快速的 1 行:FOR /F "skip=1" %x IN ('adb devices') DO start adb -s %x install -r myandroidapp.apk。如果您打算将其包含在批处理文件中,请将 %x 替换为 %%x,如:FOR /F "skip=1" %%x IN ('adb devices') DO start adb -s %%x install -r myandroidapp.apk
    【解决方案3】:

    使用以下脚本在多个设备/模拟器上安装 apk。

        for SERIAL in $(adb devices | grep -v List | cut -f 1);
        do adb -s $SERIAL install -r /path/to/product.apk;
        done
    

    如果您不重新安装 apk,请删除 -r。您还可以将“install -r /path/to/product.apk”替换为其他 adb 命令,例如在一台设备上工作。

    它适用于我的真实设备,但我相信它也适用于模拟器。

    【讨论】:

      【解决方案4】:

      可以在所有连接的设备上同时发出安装命令。

      关键是在单独的进程 (&) 中启动 adb

      我想出了以下脚本来同时在我所有连接的设备上启动安装,最后在每个设备上启动已安装的应用程序:

      #!/bin/sh
      
      function install_job { 
      
          adb -s ${x[0]} install -r PATH_TO_YOUR_APK
          adb -s ${x[0]} shell am start -n "com.example.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
      
      }
      
      
      #iterate over devices IP-addresses or serial numbers and start a job 
      
      while read LINE
      do
          eval x=($LINE)
          install_job ${x[0]} > /dev/null 2>&1 &
      done <<< "`adb devices |  cut -sf 1`"
      
      echo "WATING FOR INSTALLATION PROCESSES TO COMPLETE"
      wait
      
      echo "DONE INSTALLING"
      

      注意 1: STDOUT 和 STDERR 被抑制。您不会看到任何“adb install”操作结果。如果你真的需要的话,我想这可能会得到改善

      注意 2:您还可以通过提供 args 而不是硬编码的路径和活动名称来改进脚本。

      这样你:

      1. 不必在每台设备上手动执行安装
      2. 不必等待一次安装完成即可执行另一次安装(并行启动 adb 任务)

      【讨论】:

      • 感谢您的回答。但是 hotveryspicy 适合我的要求。我还更新了我的问题,以便其他人对我所问的问题没有错误的线索。真的谢谢你的回答。我为您的回答 +1,因为它也以另一种方式提供帮助。
      • 感谢反馈,我更正了答案
      • 如果有人想一次性安装 apk 文件,您的答案不正确...
      【解决方案5】:

      是的,您可以在多个模拟器中安装您的 apk 文件,因为您必须在命令提示符中提供名称,这里是指导链接

      http://developer.android.com/guide/developing/tools/emulator.html

      【讨论】:

      • 该链接现在无法访问。
      【解决方案6】:

      您可以使用 USB 调试一次在多个设备上安装。

      在 Eclipse 中 运行--> 运行配置--> 选择您的项目(左侧)--> 目标--> 在所有兼容设备上启动。

      所选项目将安装在所有连接的设备上

      【讨论】:

        猜你喜欢
        • 2018-01-06
        • 2011-06-25
        • 2012-01-26
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 2023-03-03
        相关资源
        最近更新 更多