如何给所有连接设备更新apk版本
来源:互联网 发布:js初始化加载 编辑:程序博客网 时间:2024/06/16 13:41
本人在测试Android APP的过程中,遇到一个需求:更新所有连接设备的apk版本。因为之前做的脚本都是针对单个连接设备的,所以adb -s参数一直没用,都是动态获取的,所以这次还特意写了一个新的方法。分享代码供大家参考。这里并没有使用多线程来完成这个事情,有兴趣的朋友可以出自己尝试一下多线程搞定这个问题。
下面是我的测试代码:
package practise;import java.util.List;import source.Common;public class PractiseApp extends Common {public static void main(String[] args) {String versioin = "3.0";List<String> devices = Common.getInstance().getAllDevices();for (int i = 0; i < devices.size(); i++) {Common.getInstance().execCmdAdb("adb -s " + devices.get(i) + " uninstall " + PAGEKAGE);Common.getInstance().execCmdAdb("adb -s " + devices.get(i)+ " install -r /Users/dahaohaozai/Desktop/apk/version/" + versioin + ".apk");}}}
下面是getalldevices()方法:
/** * 获取所有当前设备id */public List<String> getAllDevices() {List<String> devices = new ArrayList<>();String cmd = "adb devices";String OSname = System.getProperty("os.name");try {Process p = null;if (OSname.contains("Mac")) {p = Runtime.getRuntime().exec(Common.ADB_PATH + cmd);} else {p = Runtime.getRuntime().exec("cmd /c " + cmd);}// 正确输出流InputStream input = p.getInputStream();// 创建并实例化输入字节流BufferedReader reader = new BufferedReader(new InputStreamReader(input));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容String line = "";while ((line = reader.readLine()) != null) {// 循环读取if (line.contains("device") && !line.contains("devices")) {devices.add(line.replaceAll("device", "").trim());}}reader.close();// 此处reader依赖于input,应先关闭input.close();} catch (IOException e) {output("执行" + cmd + "失败!", e);}return devices;}下面是execmdadb()的方法:
/** * 执行cmd命令 * * @param cmd * 命令 */public void execCmdAdb(String cmd) {output("正在执行:" + cmd);String OSname = System.getProperty("os.name");try {Process p = null;if (OSname.contains("Mac")) {p = Runtime.getRuntime().exec(ADB_PATH + cmd);} else {p = Runtime.getRuntime().exec("cmd /c " + cmd);}// 正确输出流InputStream input = p.getInputStream();// 创建并实例化输入字节流BufferedReader reader = new BufferedReader(new InputStreamReader(input));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容String line = "";while ((line = reader.readLine()) != null) {// 循环读取System.out.println(line);// 输出saveToFile(line, "runlog.log");// 保存,false表示不覆盖}reader.close();// 此处reader依赖于input,应先关闭input.close();// 错误输出流InputStream errorInput = p.getErrorStream();// 创建并实例化输入字节流BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorInput));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容String eline = "";while ((eline = errorReader.readLine()) != null) {// 循环读取System.out.println(eline);// 输出saveToFile(eline, "runlog.log");// 保存,false表示不覆盖}errorReader.close();// 此处有依赖关系,先关闭errorReadererrorInput.close();} catch (IOException e) {output("执行" + cmd + "失败!");e.printStackTrace();}}
试验了一下,效果不错。希望对你有所帮助。
宣传一下QQ群:群号:340964272
阅读全文
0 0
- 如何给所有连接设备更新apk版本
- android apk版本更新
- android apk版本更新
- apk的版本更新
- apk提示版本更新
- Android apk版本更新
- 模拟APK版本更新
- android apk版本更新
- ios设备版本更新
- 如何给APK签名
- 检查APK版本并更新
- Android 自动检测更新apk版本
- 自动检测更新apk版本问
- 更新APK版本-便捷安装
- Android之Apk版本更新
- Android APK版本更新下载
- apk版本更新下载安装
- MDM 用itms-services给ios设备推送应用 ios8以上版本 更新安装失败
- HDU 2520.我是菜鸟,我怕谁
- 电子时钟中的运算符重载
- 两台Linux 服务器 SSH免密码登录
- picasso教程
- 由于权限不足而无法读取配置文件出现的HTTP 500.19解决办法
- 如何给所有连接设备更新apk版本
- 用户权限管理模块的数据库设计
- 大话设计模式-备忘录模式学习总结
- json数据处理
- 面向对象程序设计上机练习十(运算符重载)
- MS COCO数据集比赛参与(participate)(来自官网)
- 内存之三
- 弟弟的作业
- JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )