android创建无线调试app(手机需要root权限)

                                    如何创建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的方法,是因为各种原因

电脑和手机不能通过数据线连接,才有了此想法。孰好孰劣,请读者自行选择,此文仅供参考!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值