背景:在做预置资源(安装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. jstl和EL表达式混合使用

    EL表达式里判断字符串,或者... ${(wrt.acceptName eq '刘立荣') || (wrt.acceptName eq '卢伟冰') } <tr> <td heigh ...

  2. Vue.js 技术揭秘(学习) 深入响应式原理 nextTick外传

    microTask  mutationObserve. promise.then macroTask setImmediate. messageChannnel.setTimeout.postMess ...

  3. 【CentOS】MySQL的安装

    版本信息:CentOS 7.2 64位 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red ...

  4. 在IntelliJ IDEA 中配置Ueditor富文本插件

    这是我自学的配置教程,刚刚学习不太完善请谅解! 我会根据我的学习进程对此进行更贴,欢迎关注哦 ! 第一步:下载插件,地址:http://ueditor.baidu.com/website/downlo ...

  5. java基础梳理--朝花夕拾(三)

    1.了解面向对象的编程思想以及面向对象的特性: 对象: EveryThing is Object: 万物皆是对象,在程序中,我们可以将类.接口.方法.属性等都认为是对象: 面向对象: 是一种程序设计方 ...

  6. 【Math for ML】线性代数之——向量空间

    I. Groups 在介绍向量空间之前有必要介绍一下什么Group,其定义如下: 注意定义中的\(\bigotimes\)不是乘法,而是一种运算符号的统一标识,可以是乘法也可以是加法等. 此外,如果\ ...

  7. Netty实现简单WebSocket服务器

    本文参考<Netty权威指南>├── WebSocketServerHandler.java├── WebSocketServer.java└── wsclient.html packag ...

  8. h5中placeholder样式

    <!DOCTYPE html> <html> <head> <title>placeholder样式demo</title> <sty ...

  9. [Kubernetes]关于K8s,你应该知道的一些东西

    Kubernetes概述 Kubernetes(也常称K8s,用8代替8个字符"ubernete"而成的缩写),是一个开源的,用于管理云平台中多个主机上的容器化应用. 它的一个核心 ...

  10. 【转】fnmatch模块的使用——主要作用是文件名称的匹配,并且匹配的模式使用的unix shell风格

    [转]fnmatch模块的使用 fnmatch模块的使用 此模块的主要作用是文件名称的匹配,并且匹配的模式使用的unix shell风格.fnmatch比较简单就4个方法分别是:fnmatch,fnm ...