Android13 串口控制是能wifi adb实现

Android13 串口控制是能wifi adb实现

文章目录

    • 一、前言
    • [二、Android 串口控制是能wifi adb实现](#二、Android 串口控制是能wifi adb实现)
    • 三、其他
      • [1、wifi adb 使能小结](#1、wifi adb 使能小结)
      • [2、设置usb debug模式开启](#2、设置usb debug模式开启)
      • [3、wifi adb 的Settings和prop属性使用技巧](#3、wifi adb 的Settings和prop属性使用技巧)
        • [(1)通过prop属性关键字adb查看和设置 wifi adb 使能](#(1)通过prop属性关键字adb查看和设置 wifi adb 使能)
        • [(2)通过Settings属性关键字adb查看和设置 wifi adb 使能](#(2)通过Settings属性关键字adb查看和设置 wifi adb 使能)
      • [4、Android 13 wifi adb设置固定端口解决](#4、Android 13 wifi adb设置固定端口解决)
      • [5、Android13 网络 Adb 默认开启](#5、Android13 网络 Adb 默认开启)

一、前言

Android 系统开发初期调试,一般有串口功能调试,但是可能没有adb功能。

adb功能比串口调试方便一些,比如可以直接传输文件,定向打印日志到电脑,投屏,安装电脑中的apk等功能。

分析还是比较详细的,有需要的可以收藏看看。目前网上是没有详细分析的文章的。

二、Android 串口控制是能wifi adb实现

adb 功能,必须要开启usb 模式,我这里开发的项目都是默认开启usb模式的。

1、通过Settings属性控制

settings put global adb_wifi_enabled 1

//获取adb属性,1 表示开启,0表示关闭
settings get global adb_wifi_enabled 

这个方式有一定的限制,wifi未连接的情况,设置这个属性会失败;

其实是代码中检测到属性变化后,还好判断wifi是否在连接状态,

如果没有连接wifi,就会设置属性为0,并且关闭adb。

2、通过prop属性控制

控制wifi adb 的端口属性:

setprop persist.adb.tls_server.enable 1
//查询当前adb prop属性,1表示开启,0 表示关闭
getprop persist.adb.tls_server.enable

通过这个方法不仅可以是能wifi adb,并且还可以是能 有线网adb,

设置这个属性后,即使是能了adb,但是wifi adb settings属性还是 0,Settings设置界面显示wifi adb 还是关闭的

Android 13 以后,wifi adb的端口后默认是随机生成的,可以使用命令查询端口号:

//查询wifi adb 端口号
getprop service.adb.tls.port

//查询示例,获取到5位随机数:
130|console:/dev # getprop service.adb.tls.port
42963
console:/dev # 

连接wifi adb 命令: adb connect 192.168.XXX.XXX:12345

3、wifi adb 对应的Settings属性和prop属性关系

(1)属性监听

不管是Settings属性还是prop属性,系统代码中都有进行监听。

adb_wifi Settings 属性是在 AdbService.java里面有监听

adb_wifi prop属性是在adb_wifi.cpp代码里面监听。

(2)相关代码位置
//AdbService.java 代码位置
framework\base\services\core\java\com\android\server\adb\AdbService.java
//adb_wifi.cpp 代码位置
packages\modules\adb\daemon\adb_wifi.cpp
(3)wif_adb Settings属性到prop属性变化

过程:

AdbService --> IAdbManager--> adb_wifi.cpp

上层AdbService 中wifi_adb情况改变,是会调用到底层adb_wifi.cpp;

但是如果底层adb_wifi.cpp中 wifi_adb情况改变,是不会通知到AdbService;

所以具体是能wifi adb的其实是在 adb_wifi.cpp 代码或者再往下的逻辑。

这个也是为啥直接设置prop属性就能wifi adb生效的原因。

三、其他

1、wifi adb 使能小结

相关属性和命令:

//Settings 设置wifi adb 使能
settings put global adb_wifi_enabled 1

//获取adb属性,1 表示开启,0表示关闭
settings get global adb_wifi_enabled 

//prop 设置wifi adb 使能
setprop persist.adb.tls_server.enable 1
//查询当前adb prop属性,1表示开启,0 表示关闭
getprop persist.adb.tls_server.enable

//获取wifi adb端口号,
getprop service.adb.tls.port

wifi adb 使能的前提是需要usb开启的,也就是要开启usb debug模式。

2、设置usb debug模式开启

settings put global adb_enabled 1
//查看usb debug 模式
settings get global adb_enabled

prop相关属性,没研究过,不做介绍。

3、wifi adb 的Settings和prop属性使用技巧

Settings和prop属性不想记忆,或者记不住怎么办?

其实这wifi adb 属性,只要记住 "adb" 这三个字母关键字就行了,如果这三个字母都记不住,那么耶稣也帮不了你

(1)通过prop属性关键字adb查看和设置 wifi adb 使能
console:/dev # 
console:/dev # getprop | grep adb //1、查询adb prop相关属性
[init.svc.adbd]: [running]
[init.svc_debug_pid.adbd]: [646]
[persist.adb.tls_server.enable]: [0] //2、wifi adb 开启标识,默认为关闭,没有端口号值
[persist.adb.wifi.guid]: [adb-f098ca85666478d6-7W3OgQ]
[persist.skg.adb.open]: [1]
[persist.sys.usb.config]: [adb]
[ro.boottime.adbd]: [8656585754]
[sys.rkadb.root]: [0]
[sys.usb.config]: [adb]
[sys.usb.state]: [adb]
console:/dev # setprop persist.adb.tls_server.enable 1  //3、设置adb 开启的prop属性
console:/dev # 
console:/dev # 
console:/dev # getprop | grep adb  //4、查询adb prop相关属性                                 
[init.svc.adbd]: [running]
[init.svc_debug_pid.adbd]: [646]
[persist.adb.tls_server.enable]: [1] //5、wifi adb 开启标识
[persist.adb.wifi.guid]: [adb-f098ca85666478d6-7W3OgQ]
[persist.skg.adb.open]: [1]
[persist.sys.usb.config]: [adb]
[ro.boottime.adbd]: [8656585754]
[service.adb.tls.port]: [42963] //6、wifi adb 端口号
[sys.rkadb.root]: [0]
[sys.usb.config]: [adb]
[sys.usb.state]: [adb]

上面命令的关键字就是:getprop、setprop、adb、enable、port

这些关键字还是比较好记忆的。

(2)通过Settings属性关键字adb查看和设置 wifi adb 使能

Settings 属性其实也是可以模糊搜索的

130|console:/ # settings list global | grep adb //1、查询adb Settings相关属性
adb_enabled=1        //adb debug模式
adb_wifi_enabled=0   //wifi adb模式
console:/ # 
console:/ # settings put global adb_wifi_enabled 1 //2、设置 adb Settings相关属性 
console:/ # 
console:/ # 
console:/ # settings list global | grep adb   //3、查询adb Settings相关属性                
adb_enabled=1
adb_wifi_enabled=1
console:/ # 

上面命令的关键字就是:settings、 list 、global、adb。

如果是Android13 或者更新的版本,还需要查看adb 端口号的prop属性的值。

值得注意的是Settings 使能adb ,前提是wifi必须要连接成功,并且是在adb debug模式。

2024-07-01更正一下:

系统烧录后,未设置过wifi adb 的情况,是无法通过 getprop | grep adb 和 settings list global | grep adb 查询到wifi adb 关键字的,默认是未设置的值,所以看不到默认值,如果是系统第一次使用adb还是要查询或者记忆一下关键属性。

4、Android 13 wifi adb设置固定端口解决

详细内容:

https://blog.csdn.net/wenzhi20102321/article/details/131056174

上面的文章写得比较早,对过程了解不是很熟悉,其实port属性是没必要设置的。

下面这个文章写得详细一些。

5、Android13 网络 Adb 默认开启

主要修改:

packages\modules\adb\daemon\adb_wifi.cpp
framework\base\services\core\java\com\android\server\adb\AdbDebuggingManager.java

//修改前面两个文件就可以实现adb了,后面的文件试辅助分析的。

//虽然 SettingsProvider 也有加载 Settings属性 Settings.Global.ADB_WIFI_ENABLED ,
//但是 prop那个属性更优先,所以可以不用考虑这里默认情况
framework\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider.java

//增加分析定位文件,系统服务启动后会判断 属性persist.adb.tls_server.enable 进行相关操作
//如果属性设置不生效,可以在这里添加打印日志查看过程
framework\base\services\core\java\com\android\server\adb\AdbService.java

详细内容:

https://blog.csdn.net/wenzhi20102321/article/details/132382549

相关推荐
Future_yzx19 小时前
Mybatis中使用MySql触发器报错:You have an error in your SQL syntax; ‘DELIMITER $$
adb
牵牛老人2 天前
Qt调用adb对嵌入式设备的配置文件进行修改,写入多行内容
数据库·qt·adb
LuckyTHP2 天前
蓝叠模拟器adb连接并配置网络代理
网络·adb
Epiphanywh3 天前
Ubuntu 20.04 卸载和安装 MySQL8.0
linux·ubuntu·adb
木子欢儿3 天前
Windows Server 2019 配置PHP环境(图文教程)
开发语言·windows·adb·php
会飞的爱迪生4 天前
mysql优化
android·mysql·adb
云计算老王4 天前
MySQL 数据类型
android·mysql·adb
Crime_man5 天前
Ubuntu系统安装MySQL
mysql·ubuntu·adb
Cai。。5 天前
mysql免安装版配置教程
数据库·mysql·adb
软件测试慧姐5 天前
用adb命令给APP做压力测试,有什么不同?
软件测试·测试工具·adb·面试·压力测试