【Android开发者】WIFI ADB调试工具


最近有人发了一个WiFi调试的软件,实在话,这也不是个新鲜事了,电脑上也有插件支持,但是我总觉得不方便,感谢那位大兄弟加固了app,让我得以自己实现。

原理:root执行shell命令来控制adbd

开启:

setprop service.adb.tcp.port 你的端口 //例如setprop service.adb.tcp.port 5555
stop adbd
start adbd

关闭:

stop adbd

主要代码(shell执行,直接上别人的util):

/**
 * CMD 命令行执行工具
 */public class CmdUtils {
 public static final String COMMAND_SU = "su"; // 表示获取root权限(APP必须已root)
 public static final String COMMAND_LINE_END = "\n"; 
 public static final String COMMAND_EXIT = "exit\n";
 
 /**
 * Android手机用Wifi连上电脑ADB调试
 * 须在手机终端输入如下命令
 * 此终端必须已经Root
 */ 
 public static Result execute(String[] commands) {
 //----------------- 待写:检查此手机是否已经Root-------------
 
 Runtime runtime = Runtime.getRuntime();
 
 Process process = null;
 DataOutputStream output = null; // 用于向终端进程输入命令
 BufferedReader successResult = null;
 BufferedReader errorResult = null;
 StringBuilder successMsg = null;
 StringBuilder errorMsg = null;
 
 try {
 process = runtime.exec(COMMAND_SU);
 output = new DataOutputStream(process.getOutputStream());
 for (String command : commands) {
 if (command == null) {
 continue;
 }
 
 output.write(command.getBytes());
 output.writeBytes(COMMAND_LINE_END); // 输完一行命令要按回车
 output.flush();
 }
 
 output.writeBytes(COMMAND_EXIT);
 output.flush();
 process.waitFor(); // 当前线程等待,直到process线程执行结束
 
 successMsg = new StringBuilder();
 errorMsg = new StringBuilder();
 successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
 errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
 
 String s;
 while ( (s = successResult.readLine()) != null) {
 successMsg.append(s).append("\n");
 }
 while ( (s = errorResult.readLine()) != null) {
 errorMsg.append(s).append("\n");
 }
 
 
 
 } catch (Exception e) {
 e.printStackTrace();
 } finally { // 回收资源
 try {
 if (output != null) {
 output.close();
 }
 if (successResult != null) {
 successResult.close();
 }
 if (errorResult != null) {
 errorResult.close();
 }
 } catch (IOException e) {
 e.printStackTrace();
 }
 
 if (process != null) {
 process.destroy();
 }
 }
 return new Result(successMsg == null ? null : successMsg.toString()
 , errorMsg == null ? null : errorMsg.toString());
 }
 
 public static class Result {
 public String successMsg; 
 public String errorMsg; 
 
 public Result(String successMsg, String errorMsg) {
 super();
 this.successMsg = successMsg;
 this.errorMsg = errorMsg;
 }
 
 }
}

小工具一枚:download

上图:

1508981775726153.png

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - 【Android开发者】WIFI ADB调试工具


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.