如果连接了多个模拟器/设备,是不是可以安装 APK 文件 [重复]
Posted
技术标签:
【中文标题】如果连接了多个模拟器/设备,是不是可以安装 APK 文件 [重复]【英文标题】: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 文件? 如果有任何想法,请帮助我。 . . 谢谢。
【问题讨论】:
【参考方案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 而不是硬编码的路径和活动名称来改进脚本。
这样你:
-
不必在每台设备上手动执行安装
不必等待一次安装完成即可执行另一次安装(并行启动 adb 任务)
【讨论】:
感谢您的回答。但是 hotveryspicy 适合我的要求。我还更新了我的问题,以便其他人对我所问的问题没有错误的线索。真的谢谢你的回答。我为您的回答 +1,因为它也以另一种方式提供帮助。 感谢反馈,我更正了答案 如果有人想一次性安装 apk 文件,您的答案不正确...【参考方案5】:是的,您可以在多个模拟器中安装您的 apk 文件,因为您必须在命令提示符中提供名称,这里是指导链接
http://developer.android.com/guide/developing/tools/emulator.html
【讨论】:
该链接现在无法访问。【参考方案6】:您可以使用 USB 调试一次在多个设备上安装。
在 Eclipse 中 运行--> 运行配置--> 选择您的项目(左侧)--> 目标--> 在所有兼容设备上启动。
所选项目将安装在所有连接的设备上
【讨论】:
以上是关于如果连接了多个模拟器/设备,是不是可以安装 APK 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:在连接的设备上运行或构建到 apk 时未加载 Json 文件