adb 自动检测无线安装apk
来源:互联网 发布:excel数据有效性条件 编辑:程序博客网 时间:2024/05/01 14:45
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.InetAddress;import java.net.InetSocketAddress;import java.net.Socket;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadPoolExecutor;import javax.swing.plaf.TextUI;public class InstallApk { static String fileName; static String mainIntent; static List<String>ips; static List<String>macs; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub// if (args == null || args.length < 1) {// System.out.println("please input file name");// return;// }// fileName = args[0]; if (args.length == 2) { mainIntent = args[1]; } fileName="xxxxxxx.apk"; mainIntent="xxx/.xxx.MainActivity"; System.out.println("file dir"+System.getProperty("user.dir")); try { //-----no need----// InetAddress addr = InetAddress.getLocalHost();// String ip = addr.getHostAddress();// ip = ip.substring(0, ip.lastIndexOf(".")); //------ getIpsAndMacs(); ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(5); if(ips!=null&&ips.size()>0){ for(int i=0;i<ips.size();i++){ final String ip=ips.get(i); final String mac=macs.get(i); newFixedThreadPool.execute(new Runnable() { @Override public void run() { connect(ip,mac); } });// new ScanThread(i).start(); } }else{ System.out.println("get ip fail,please retry"); } } catch (Exception e) { e.printStackTrace(); } }// static class ScanThread extends Thread {// int i;// public ScanThread(int index) {// i=index;// }//// @Override// public void run() {// System.out.println("start install, wait a moment");// try {// System.out.println("scan ip: " + ips.get(i));// String ip=ips.get(i);// Socket ss = new Socket();// ss.connect(new InetSocketAddress(ip, 5555), 1000);// System.out.println("find ip success: " + ip);// ss.close();//// String ret = runCmd("adb connect " + ip);// System.out.println(ret);// install(i, System.getProperty("user.dir") + "\\"+ fileName);//// new InstallThread(i, System.getProperty("user.dir") + "\\"//// + fileName).start();// } catch (IOException e) {// }// System.out.println("over");//// }// } private static String runCmd(String cmd) { try { System.out.println(cmd); Process pro = Runtime.getRuntime().exec("cmd /c " + cmd); InputStreamReader isr = new InputStreamReader(pro.getInputStream()); BufferedReader br = new BufferedReader(isr); StringBuilder builder = new StringBuilder(); String str; while ((str = br.readLine()) != null) { builder.append(str + "\n"); } br.close(); isr.close(); System.out.println("runcmd"+builder.toString()); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return "not good"; }//private static void install(int index,String mApkPath){// String mIp=ips.get(index);// System.out.println("uninstall on ip:"+ mIp+" waiting...");// try{// String ret1 = runCmd("adb -s " + mIp + ":5555 uninstall "// + mainIntent.subSequence(0, mainIntent.indexOf("/")));// System.out.println("uninstall "+ret1);// }catch(Exception e){// System.out.println("mainIntent null--");// }// System.out.println("install on ip: " + mIp+" waiting...");// String ret = runCmd("adb -s " + mIp + ":5555 install -r "// + mApkPath);//// if (ret != null && ret.indexOf("Success") != -1) {// System.err.println("install success: " + mIp + " mac: "// + macs.get(index));//// try {// Thread.sleep(1000);// } catch (InterruptedException e) {// e.printStackTrace();// }//// if (mainIntent != null) {// runCmd("adb -s " + mIp + ":5555 shell am start "// + mainIntent);// System.out.println("open app success---------"+mIp+" mac "+macs.get(index));// }//// } else {// System.out.println(ret);//// }//// runCmd("adb disconnect " + mIp);//} private static void uninstall(String ip,String mac){ System.out.println("uninstall on ip:"+ ip+" waiting..."); try{ String ret1 = runCmd("adb -s " + ip + ":5555 uninstall " + mainIntent.subSequence(0, mainIntent.indexOf("/"))); System.out.println("uninstall "+ip+ret1); install(ip,mac); }catch(Exception e){ System.out.println("uninstall "+ip+"fail"); } } private static void connect(String ip,String mac){ System.out.println("scan ip: " + ip); Socket ss = new Socket(); try { ss.connect(new InetSocketAddress(ip, 5555), 1000); System.out.println("find ip success: " + ip); ss.close(); String ret = runCmd("adb connect " + ip); System.out.println(ret); uninstall(ip,mac); } catch (IOException e) { } System.out.println("over"); } private static void install(String ip,String mac){ System.out.println("install on ip: " + ip+" waiting..."); String cmd = runCmd("adb -s " + ip + ":5555 install -r " + System.getProperty("user.dir") + "\\"+ fileName); if (cmd != null && cmd.indexOf("Success") != -1) { System.err.println("install success: " + ip + " mac: " + mac);//// try {// Thread.sleep(1000);// } catch (InterruptedException e) {// e.printStackTrace();// } if (mainIntent != null) { runCmd("adb -s " + ip + ":5555 shell am start " + mainIntent); System.out.println("open app success---------"+ip+" mac "+mac); } } else { System.out.println(cmd); } runCmd("adb disconnect " + ip); // new InstallThread(i, System.getProperty("user.dir") + "\\" // + fileName).start(); } // static class InstallThread extends Thread {// private String mIp;// private String mApkPath;// private int mIndex;//// public InstallThread(int i, String apkPath) {// this.mIp = ips.get(i);// this.mApkPath = apkPath;// this.mIndex=i;// }//// @Override// public void run() {// // String ret = runCmd("adb -s " + mIp + ":5555 install -r "// + mApkPath);//// if (ret != null && ret.indexOf("Success") != -1) {// System.err.println("install success: " + mIp + " mac: "// + macs.get(mIndex));////// try {//// Thread.sleep(1000);//// } catch (InterruptedException e) {//// e.printStackTrace();//// }//// if (mainIntent != null) {// runCmd("adb -s " + mIp + ":5555 shell am start "// + mainIntent);// System.out.println("open app success---------"+mIp+" mac "+macs.get(mIndex));// }//// } else {// System.out.println(ret);//// }//// runCmd("adb disconnect " + mIp);//// }// }// public static String getMac(String ip) {// try {// String str = runCmd("arp -a");// if (str != null) {// if (str.indexOf(ip) > 1) {// return str.substring(str.indexOf(ip) + 20,// str.indexOf(ip) + 40).trim();// }//// }// } catch (Exception e) {// }// return null;// } public static void getIpsAndMacs() { try { Process pro = Runtime.getRuntime().exec("cmd /c "+"arp -a|findstr 动态"); InputStreamReader is=new InputStreamReader(pro.getInputStream()); BufferedReader reader=new BufferedReader(new InputStreamReader(pro.getInputStream())); String str; ips=new ArrayList<String>(); macs=new ArrayList<String>(); while ((str = reader.readLine()) != null) { ips.add(str.subSequence(0, 20).toString().trim()); macs.add(str.subSequence(20, 45).toString().trim()); } reader.close(); is.close(); System.out.println("ips"+ips.toString()); System.out.println("macs"+macs.toString()); } catch (Exception e) { } }}
install.bat
@echo offcolor 2java -jar installApk.jar "xxxxxxxxxx.apk" "xxxx/.xxxxxx.MainActivity"pause
还存在的问题是:检测IP有的检测不到,估计有缓存;
有的时候执行命令后会卡住,没找到原因。
先记录下,以后解决吧。
0 0
- adb 自动检测无线安装apk
- 使用adb命令进行无线安装调试apk
- android apk版本自动检测升级,安装
- android apk版本自动检测升级,安装
- android 无线安装apk
- adb安装/卸载apk
- adb 远程安装apk
- adb常用命令--安装apk
- adb安装apk
- adb 安装apk
- 使用adb安装apk
- adb下安装apk
- adb 安装&卸载apk
- adb命令安装apk
- adb 安装APK
- 使用ADB安装APK
- adb 安装apk
- adb命令安装apk
- STM32滴答定时器(Systick)详细详细解析
- redis配置文件redis-common.conf
- android横竖屏切换时Activity的生命周期
- 自己写一个java.lang.reflect.Proxy代理的实现
- redis常用内存优化手段与参数
- adb 自动检测无线安装apk
- 关于Bootstrap日期控件datetimepicker被模态框等遮罩在底部的问题及解决办法。
- android studio debug签名设置
- Java 集合系列01之 总体框架
- iOS巅峰之iPhone适配的相关内容以及机型适配时的注意事项
- 344-e-Reverse String
- UI设计中px、pt、ppi、dpi、dp、sp之间的关系
- 你可能漏掉的知识点: onResumeFragments
- 设计模式之六大原则——单一职责原则(SRP)