如何创建Android无线调试器及其原理
在Android调试过程中,无线调试可以很方便的解决有线的问题,而且在和电脑处于同一局域网范围类时,手机可自由移动。另外,无线调试的传输速率并不比有线调试差。接下来讲讲如何操作,并创建一个无线调试的app。
1.基本原理
在Android无线调试的实现,执行了一系列的Androidshell命令,前提是手机需要root,不然su命令识别不了。
a. su ---获取最高权限
b. setprop service.adb.tcp.port 5555 ---设置调试的端口号
c. stop adbd --关闭adb设备
d. start adbd --开启adb设备
可以在手机上下载一个超级终端执行以上命令,也可以在电脑上使用adb shell来执行命令,接下来在手机上查看IP地址,然后在电脑上的命令行中输入adb connect 你的手机ip地址:端口号(如:adb connect 192.168.0.1:5555 当然可以不指定端口号,因为前面已经指定了端口号),然后手机可以连接上电脑进行无线调试了。
2.创建app,将adb命令放在Android应用中执行
创建一个app,用于执行以上adb命令,并在该app页面中显示出该手机的ip地址,方便查看。
a.执行adb命令的方法
传入一个命令(如:"adb service.adb.tcp.port 5555")
public CommandUtils run(String command) { if (TextUtils.isEmpty(command)) return this; try { p = Runtime.getRuntime().exec("su");//获取最高权限 outputStream = p.getOutputStream(); outputStream.write(command.getBytes());//将命令的字节流传过去 outputStream.write('\n'); outputStream.flush(); outputStream.write("exit\n".getBytes()); outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); return this; } return this; }
该方法就可以执行相应的命令。
b.获取手机的IP地址并解析
public String getIPAdress_WIFI() { String ipAdress = ""; NetworkInfo info = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (info != null && info.isConnected()) {//有网络连接的状态下 if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前的网络类型为WiFi WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if (wifiManager != null) { WifiInfo wifiInfo = wifiManager.getConnectionInfo(); ipAdress = IP2String(wifiInfo.getIpAddress());//将int类型的IP地址解析成常见的形式(如:192.168.0.1) return ipAdress; } } else {//网络类型不是wifi,未作处理,因为只有在局域网状况下才能进行无线调试 ipAdress = "0.0.0.0"; } return ipAdress; } return "网络错误"; }
IP2String方法:
private String IP2String(int ipAddress) {
//使用位与运算符
return (ipAddress & 0xFF) + "." + (ipAddress>>8 & 0xFF) + "." + (ipAddress>>16 & 0xFF) + "." + (ipAddress>>24 & 0xFF); }
通过以上连个方法就可以获取到ip地址,将ip地址展示到主页面的TextView即可。
总结:该无线调试主要是为了省去数据线的麻烦,其实还有一种无需root的无线调试方法,
使用数据线将手机和电脑连接,然后在电脑的命令模式下键入adb tcpip +端口号,即可指定为无线调试模式,
然后拔掉数据线,键入adb connect 手机ip地址:端口号即可连接手机。笔者使用root的方法,是因为各种原因
电脑和手机不能通过数据线连接,才有了此想法。孰好孰劣,请读者自行选择,此文仅供参考!
。