Android13 wifi adb比之前的版本都麻烦,主要是端口号每次会变化,之前版本端口号是固定的5555
Android 12或者更新的系统版本,adb 连接要加端口号,adb connext X.X.X.X:端口号
以前的版本是不用加端口号的,因为是默认的5555,系统会自动添加.
如果需要手动开启,需要进入开发者选择中,开启wifi adb。并且开启的前提是wifi 开启的情况。
如果连接的是有线网络,wifi adb 就无法开启了。
之前也有写过很多文章对wifi adb 开启的代码分析,在最好总结的地方有介绍。
但是如果不修改系统代码,如果要开启wifi adb怎么搞呢?本文介绍一下。
先揭晓一下答案
setprop persist.adb.tls_server.enable 1
这个 persist.adb.tls_server.enable 系统是没有设置默认值的,设置为 1,就会触发开启adb。
这个属性是Android12 开始有的。
串口可以查看adb相关属性
rk3588_t:/ # getprop | grep adb
[init.svc.adbd]: [running]
[init.svc_debug_pid.adbd]: [475]
[persist.adb.tls_server.enable]: [1] //adb 开启属性
[persist.adb.wifi.guid]: [adb-aab63f95218427db-X0DNlk]
[persist.sys.usb.config]: [adb]
[ro.boottime.adbd]: [4627688654]
[service.adb.tls.port]: [5555] //adb端口号属性,默认是随机的,这里的系统已经适配过固定端口号了
[sys.usb.config]: [adb]
[sys.usb.state]: [adb]
rk3588_t:/ #
知道端口号,再用ifconfig 查看网络ip,就可以adb connect连接了。
getprop persist.adb.tls_server.enable //查看prop属性
settings get global adb_wifi_enabled //查看Settings 属性
setprop persist.adb.tls_server.enable 1 //设置prop属性
settings put global adb_wifi_enabled 1 //设置Settings 属性
adb 的开启是从上往下开启的。
原生设置里面开启wifi adb 是设置 settings.global.adb_wifi_enabled 属性,
系统代码中监听到settings 属性变化,调用接口设置 prop属性。
但是实际开启生效的是prop属性,所以直接设置prop属性是可以的,底层是有在一直监听prop变化的。
正常流程开启wifi adb 后,settings和prop adb 开关属性都是置为 1
但是如果wifi 未开启,settings 的adb 属性是无法设置为1的,因为系统代码中有判断wifi是否打开和连接的逻辑。
系统设置应用中wifi adb 开关的状态是读取的 settings adb 属性,
所以如果手动设置adb prop 属性进行adb 开关,设置应用显示的adb状态是不准确的。
其实这里还有很多其他逻辑,比如wifi adb 开启后,切换wifi 后,wifi adb 会关闭!
具体的可以看看系统代码。
setprop persist.adb.tls_server.enable 1
https://blog.csdn.net/wenzhi20102321/article/details/131056174
https://blog.csdn.net/wenzhi20102321/article/details/132382549
https://blog.csdn.net/wenzhi20102321/article/details/13273532