如何将一个apk通过adb安装到多个已连接的设备?
问题的原因是使用adb命令将apk安装到多个连接的设备时出现错误。解决方法是使用适当的命令来执行此操作,其中包括使用xargs和adb命令。
以下是解决方法的详细步骤:
1. 使用adb devices命令列出连接的设备。
2. 使用tail -n +2命令从设备列表中移除第一行(标题行)。
3. 使用cut -sf 1命令获取设备列表中的第一列(设备ID)。
4. 使用xargs -iX adb -s X install -r *.apk命令将apk安装到每个设备上。
另外,如果正在使用Maven,则可以更简单地使用mvn android:deploy命令来设置。
然而,某些用户报告了一个错误消息,xargs: adb: terminated by signal 13,这可能是由于设备连接的问题或其他adb命令错误引起的。
总结上述内容,以下是解决问题的步骤:
1. 使用adb devices命令列出连接的设备。
2. 使用tail -n +2命令从设备列表中移除第一行(标题行)。
3. 使用cut -sf 1命令获取设备列表中的第一列(设备ID)。
4. 使用xargs -iX adb -s X install -r *.apk命令将apk安装到每个设备上。
5. 如果使用Maven,可以使用mvn android:deploy命令来设置。
希望以上解决方法对您有所帮助。
问题的原因是需要通过adb将apk文件安装到多个连接的设备上。为了解决这个问题,可以使用一个shell脚本来完成任务。该脚本会安装多个apk文件和任何mp4文件到连接的设备上。
脚本的具体内容如下:
echo "Installatron" for SERIAL in $(adb devices | tail -n +2 | cut -sf 1); do for APKLIST in $(ls *.apk); do echo "Installatroning $APKLIST on $SERIAL" adb -s $SERIAL install $APKLIST done for MP4LIST in $(ls *.mp4); do echo "Installatroning $MP4LIST to $SERIAL" adb -s $SERIAL push $MP4LIST sdcard/ done done echo "Installatron has left the building"
通过运行这个脚本,可以将当前目录下的所有apk文件安装到连接的设备上,并将所有mp4文件推送到设备的sdcard目录下。
感谢其他回答帮助我解决了这个问题。
如何通过ADB将APK安装到多个已连接的设备?
您可以使用adb devices
获取已连接设备的列表,然后对每个设备运行adb -s DEVICE_SERIAL_NUM install...
。
像这样(bash):
adb devices | tail -n +3 | cut -sf 1 -d " " | xargs -iX adb -s X install ...
评论中建议较新版本使用以下代码:
adb devices | tail -n +2 | cut -sf 1 | xargs -iX adb -s X install ...
对于Mac OSX(未在Linux上进行测试):
adb devices | tail -n +2 | cut -sf 1 | xargs -I {} adb -s {} install ...
谢谢!不幸的是,我无法运行脚本。我不是shell脚本的专家。我收到错误:xargs: illegal option -- i usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr] [-L number] [-n number [-x]] [-P maxprocs] [-s size] [utility [argument ...]]
尝试将-iX
替换为-I X
你是否将...
替换为你的APK名称?尝试将最后一个adb
调用全部替换为echo X
,以确保它输出您期望的值。
adb devices | tail -n +3 | cut -sf 1 -d " " | xargs -I X echo X -s X install SONR
没有输出任何内容
那adb devices
呢?adb是否能够看到您的设备?
是否可能在同一个单行命令中在adb install之前回显设备序列号?
cut -sf 1 -d " "
有问题,如果我运行./adb devices | tail -n +2 | cut -sf 1 -d " "
我得不到任何东西。如果我运行./adb devices | tail -n +2
,我得到4个已连接的设备,没有标题。
删除-d " "
,因为(至少在我的adb
输出中)分隔符是制表符,而不是空格。
使用脚本连接到多个设备,侦听TCP / IP端口是否可能?
这个方法可行,但是您必须在发出另一个adb install命令之前等待每个adb install命令完成。请参阅我的答案以获取更好的解决方案,尽管有点冗长。
在Linux上也适用。