背景:在做预置资源(安装apk)时,有多台android设备需要做相同的资源(如:10台,安装10个apk)。一台一台去预置的话(当然也可以每人一台去预置),耗时较长有重复性。

问题:如何去实现多台同时操作呢?(这个问题让我想到了多进程和多线程)

思路:(前提:环境为window系统)。可以使用批处理来实现,假设有10台设备,分别开启10个cmd窗口进行安装。

解决:初始方案-->最终方案

No1  :将安装命令写到bat文件中,复制为10个bat文件。显然这是最原始的方法,也不方便。因为每次执行一个bat文件时,都要修改文件中的deviceId,多一个apk还得加一行代码,而且每个bat文件都要点击一遍(假设有20个,30个呢?想想这得修改点击多少次啊)

@echo off
adb -s deviceId install -r xxx1.apk
adb -s deviceId install -r xxx2.apk
adb -s deviceId install -r xxx3.apk
adb -s deviceId install -r xxx4.apk
pause

No2 :对以上的方法进行修改,可以使用start cmd 去执行。这样一来,只需要点击一次就可以了。但是还得修改deviceId,多一台设备还要加一行start cmd。

@echo off
start cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)"
start cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)"
start cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)"
start cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)"
pause

 No3 :No1和No2都不能满足需求。最终版本(还有其他异常情况,暂未处理)

@echo off&setlocal enabledelayedexpansion
title Install-MultipleDevices
color 0a
rem +++++++++++++++++++++++++++++++++++++++++++
rem Install-MultipleDevices.bat
rem By zhzw @2017/7/7
rem
rem Version: 1.2
rem +++++++++++++++++++++++++++++++++++++++++++ rem 两个adb devices 为了减少deamon start successfully语句写入deviceId.txt中
adb devices
adb devices >deviceId.txt
rem 处理0台设备的情况
set count=0
type nul>temp.txt
rem tonkes与delims的位置不能改变,否则会出现显示混乱
for /f "skip=1 tokens=1 delims= " %%i in (deviceId.txt) do (
echo %%i >>temp.txt
set /a count+=1
)
echo 总共!count!台设备
for /f %%i in (temp.txt) do (
start "Device:%%i" cmd /k "@echo off& for /r "%cd%\apkPackage\" %%a in (*.apk) do ( echo APK=%%~nxa &adb -s %%i install -r %%a)"
)
del temp.txt
pause

Update

这是多台设备文件push的脚本,暂且贴在这吧

@echo off
setlocal enabledelayedexpansion rem .........................
rem MutilPushFile.bat
rem by zzw
rem .......................... @rem 判断设备数量
for /f %%i in ('adb devices ^| find /c "device"') do (
set a=%%i
if !a! LEQ 1 ( echo "NO DEVICE CONNECTED" & echo,& goto end ) else ( set /a b=!a!-1 & echo Total !b! devices )
) echo,
echo start push file to devices ...
echo, @rem push 文件到设备
for /f %%i in ('adb devices ^|findstr device$') do (
adb -s %%i push getspec.sh /data/local/tmp 1>nul 2>nul && echo push %%i success || echo push %%i ***fail***
)
:end
echo,
pause

bat如何实现多台android设备同时安装多个apk的更多相关文章

  1. 关于如何惟一地标识一台Android设备的综合性讨论

    想必大家在开发Android项目的时候,多多少少会遇到“如何惟一地标识一台Android设备”等类似的问题.不只是以前,即使是现在乃至可以预见的将来,这个问题都将一直存在. 如果大家使用搜索工具搜索的 ...

  2. 【阿里聚安全·安全周刊】500万台Android设备受感染|YouTube封杀枪支组装视频

    本周的七个关键词:  500万Android 设备受感染丨 黑客将矛头指向无线传输协议 丨  YouTube封杀枪支视频 丨 AMD将发布补丁 丨 Gooligan Android 僵尸网络 丨  N ...

  3. 查看当前android设备已安装的第三方包

    查看当前android设备已安装的第三方包 adb shell pm list package -3 2        adb shell "getprop ro.build.version ...

  4. 制作bat脚本,抓取Android设备logcat

    ::bat制作抓取Android设备的logcat,并保存以时间命名的txt文件至设备目录 1 @ECHO off adb wait-for-device ECHO 正在连接设备 adb logcat ...

  5. 如何唯一的标识一台Android设备?

    UUID : (Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.由以下几部分的组合:当前日期和时间(U ...

  6. 同时连接多台Android设备进行Monkey Test

    事情多了就会乱,时间久了就会忘. adb -s remount id(devices ID) adb -s shell id monkey -p package name -v count

  7. Android设备网络压力测试

    网络测试的几个维度: 网络的性能 带宽:通过TCP测试来量度 时延:用ping命令量度 数据报丢失:用Iperf UDP测试来量度 Jitter(延时变化):用Iperf UDP测试来量度 信号强度( ...

  8. Android设备上i-jetty环境的搭建-手机上的web服务器

    本文主要跟大家分享如何将一台Android设备打造成一个web服务器使用. 编译i-jetty 1.将源码download下来,http://code.google.com/p/i-jetty/dow ...

  9. 获取Android设备的唯一识别码|设备号|序号|UUID

    如何获取一个能唯一标识每台Android设备的序号? 这个问题有很多答案,但是他们中的大部分只在某些情况下有效. 根据测试: 所有的设备都可以返回一个 TelephonyManager.getDevi ...

随机推荐

  1. oracle.sql.Clob类型转换成String类型

    方法一: public String ClobToString(Clob clob) throws SQLException, IOException { String reString = &quo ...

  2. 事件代理on

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. SFTP免密码登录原理

    概述 Public Key认证的主要魅力在于认证时承诺不必提供密码就能够同远程系统建立连接. Public Key认证的基础在于一对密钥,public key和private key,public k ...

  4. MyBatis中---数据库配置的属性名冲突问题

    一.db.properties 属性文件中 最好加特殊的标志前缀  jdbc.username ,如果单纯的username有可能影响到 mapper.xml中的 ${username}; 举例   ...

  5. redis-LinkedList

    1.redis-LinkedList[重点] Java List :  数组ArrayList 链表LinkedList 为什么redis选取了链表? Redis操作中,最多的操作是进行元素的增删 使 ...

  6. elasticsearch入门笔记

    安装 注意:elasticsearch需要非ROOT用户启动 https://es.xiaoleilu.com/010_Intro/10_Installing_ES.html 下载elasticsea ...

  7. Learning Discriminative Features with Class Encoder

    近来论文看了许多,但没多少时间总结下来.今天暂时记录一篇比较旧的论文,选择理由是 Discriminative features. 做图像说白了就是希望有足够有判别性的特征,这样在分类或者匹配.检索的 ...

  8. linux配置supervisor

    linux配置supervisor 安装 pip install supervisor 生成配置文件 使用 echo_supervisord_conf > /etc/supervisord.co ...

  9. oracle 会话 解锁

    背景 这是当年第一次记录博客,当初记录的原因是感觉有些问题很少碰到,碰到有网上寻找一遍,文章很少是正好对症的,折腾半天终于解决了,但是没有记录过程,结果下次碰到又要从来一次.有的问题还极其不好找,or ...

  10. queue之#单向消息队列

    import queue q = queue.Queue() #创建一个单项队列qsize 查看这个单项队列元素的个数empty 与 clear功能是一样的full 是用来查看这个队列是否填满了,队列 ...