ADB无线调试的那些事
2023-03-29 本文已影响0人
肥得流油
接触到安卓开发以来,几乎所有的调试场景都需要用到ADB
即 [Android Debug Bridge],直译就是安卓调试桥。它的功能可谓是非常强大,是 Android 开发/测试/设备搞机玩家的骚操作工具
用了这么久的ADB,最舒服的就是它的无线功能。用它可以轻松的实现,文件的上传下载,软件的安卓和下载,模拟触控,以及投屏的实现。可以说只要你想象力足够丰富,能玩出花来。
自从安卓11之后,默认可以系统开启无线功能,在信任的设备上,可以不用有线连接,直接就可以使用无线调试。可以说是非常的方便。
具体方法:
保证设备与电脑连接到同一个局域网,在开发者选项中启用无线调试。
在询问要允许在此网络上进行无线调试吗?的对话框中,点击允许。
选择使用配对码配对设备,使用弹窗中的 IP 地址和端口号:
adb pair ipaddr:port
提示Enter pairing code: 时输入手机弹窗中的配对码
成功后会显示Successfully paired to ...
connect 命令连接 :
adb connect ipaddr:port
确认连接状态:
adb devices
那在安卓11版本之前,有什么办法可以让安卓设备(已经root的)开机就开启无线调试呢?
当然有啦!
正好最近遇到了一个开发板子是5.1老系统,每次调试都需要用到数据线,觉得简直是非常的麻烦。
于是搜集了一些将设备设置为默认开启wifi调试adb的操作。
方法一(适用于安卓7.1/8.1):
使用以下命令获取设备的root权限,这个步骤需要您的设备已经root:
adb root
使用以下命令挂载system分区为可写状态:
adb remount
使用以下命令修改build.prop文件:
adb shell "echo 'service.adb.tcp.port=5555' >> /system/build.prop"
adb shell "echo 'persist.service.adb.enable=1' >> /system/build.prop"
//重启、测试
adb reboot
方法二(与方法一原理一样):
//以此输入:
adb root
adb remount
adb pull /system/build.prop
//在电脑上直接修改文件,再将修改后的文件push回去
adb push build.prop /system/build.prop
//重启、测试
adb reboot
方法三:
如果以上两种方法都不行,但是设备已经获得了root权限,则可以直接通过自己的app代码中直接进行shell命令开启调试端口:
su //获得root权限
setprop service.adb.tcp.port 5555 //开启网络调试端口
stop adbd //关闭adb
start adbd //开启adb (也可以使用restart adbd 如果无效再先关闭后打开)
方法三可以直接应用到 自己写的app中:
/**
* 设置无线adb
* @param state
*/
public void setWifiAdb(boolean state) {
if (state) {
execShell("setprop service.adb.tcp.port 5555");
execShell("stop adbd");
execShell("start adbd");
} else {
execShell("setprop service.adb.tcp.port 5555");
execShell("stop adbd");
execShell("start adbd");
}
}
/**
* 发送shell命令
* @param str
*/
public void execShell(String str) {
try {
// 权限设置
Process p = Runtime.getRuntime().exec("su");
// 获取输出流
OutputStream outputStream = p.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(
outputStream);
// 将命令写入
dataOutputStream.writeBytes(str);
// 提交命令
dataOutputStream.flush();
// 关闭流操作
dataOutputStream.close();
outputStream.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
想起刚刚工作的时候,那时候微信小程序"跳一跳",很流行。
那时候在朋友圈里为了刷排名,就通过adb连接到手机,再用python跑自动跳的脚本。
刷到9999+,荣登排行榜第一,可惜不到两小时便被系统判定为违规。
时光匆匆啊,喜欢出风头的年纪就这么过去了。