Android13 串口控制是能wifi adb实现

news/2024/7/8 7:36:05 标签: adb

Android13 串口控制是能wifi adb实现

文章目录

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

一、前言

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

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

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

adb_15">二、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

adb_Settingsprop_74">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
adb_Settingsprop_95">(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生效的原因。

三、其他

adb__119">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相关属性,没研究过,不做介绍。

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

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

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

adb_wifi_adb__161">(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

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

adb_wifi_adb__199">(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还是要查询或者记忆一下关键属性。

adb_227">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


http://www.niftyadmin.cn/n/5536876.html

相关文章

Spring Boot 创建定时任务

在现代应用程序开发中,定时任务是一个常见的需求。Spring Boot作为一个强大的框架,提供了简单易用的定时任务调度功能。本文将详细介绍如何在Spring Boot中创建和管理定时任务,并提供完整的代码示例。 1. 什么是定时任务 定时任务是指在预定…

Keil5中:出现:failed to execute ‘...\ARMCC\bin\ArmCC‘

点三个点,去自己的磁盘找自己的ARM\ARMCC\bin

400G SR4和800G SR8光模块在AI集群中的应用

人工智能(AI)技术的快速发展下,AI集群的计算能力和数据传输需求不断提升。为了满足这一需求,光模块技术也在不断进步。高速率光模块作为新一代高速光通信解决方案,正在逐步应用于AI集群中,为其提供更高效、…

AI赋能还是挑战?软件开发者的未来展望

🌈所属专栏:【其它】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点…

Java SpringBoot MongoPlus 使用MyBatisPlus的方式,优雅的操作MongoDB

Java SpringBoot MongoPlus 使用MyBatisPlus的方式,优雅的操作MongoDB 介绍特性安装新建SpringBoot工程引入依赖配置文件 使用新建实体类创建Service测试类进行测试新增方法查询方法 官方网站获取本项目案例代码 介绍 Mongo-Plus(简称 MP)是一…

Flash存储器解析:从原理到应用,全面了解其与缓存的区别

Flash存储器解析:从原理到应用,全面了解其与缓存的区别 Flash存储器是一种非易失性存储器技术,广泛应用于各种电子设备中,如USB闪存盘、固态硬盘(SSD)、智能手机、数码相机和嵌入式系统。它能够在断电情况下…

Spring Security 认证流程

Spring Scurity是spring生态下用于认证和授权的框架,具有高度的灵活性和可扩展行,本节主要对Spring Security的认证过程中进行概括性的介绍,主要介绍在该过程中,会涉及到哪些组件以及每个组件所承担的职责,希望大家可以…

白骑士的Python教学高级篇 3.4 Web开发

系列目录 上一篇:白骑士的Python教学高级篇 3.3 数据库编程 在现代软件开发中,Web开发占据了重要的一席之地。通过Web开发,我们可以创建从简单的个人博客到复杂的电子商务网站等各种应用。在Python的生态系统中,Flask和Django是两…