Android13 串口控制是能wifi 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等功能。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优化数据库字段使用位运算-php语言示例

背景:一个会员有三个状态,A、B、C,其中一个人可以为 A、B、C、AB;之前数据表结构加了三个字段is_a、is_b、is_c; 本人实在不想这样粗糙的实现需求,遂决定用位运算优化。 上代码: 位运算可以用来处理状态值…

探索SOLIDWORKS 2024设计增强功能

随着技术的不断进步和市场的日益竞争,工程设计和制造行业对于快捷、准确和创新的工具需求日益增长。SOLIDWORKS作为3D CAD设计软件,一直致力于为用户提供更强大、更便捷的设计工具。SOLIDWORKS 2024的发布,再次证明了其在设计增强功能方面的持…

使用 Amazon Bedrock Converse API 简化大语言模型交互

本文将介绍如何使用 Amazon Bedrock 最新推出的 Converse API,来简化与各种大型语言模型的交互。该 API 提供了一致的接口,可以无缝调用各种大型模型,从而消除了需要自己编写复杂辅助功能函数的重复性工作。文中示例将展示它相比于以前针对每…

如何在Windows上使用Docker搭建PHP开发环境

前言 在本地搭建开发环境我好像没几年就要折腾一次,因为本地开发电脑使用的是windows,早些年的时候,用过很多类似WAMP之类的东西,但最终都有或多或少不满意的地方,前两年的时候,还折腾过WSL,但…

批量文件名修改软件:一键解决同一编码多型号文件分类与命名难题,高效管理文件

在数字化时代,图片文件已经成为我们工作中不可或缺的一部分。然而,当面对成百上千个同一编码下不同型号的图片文件时,如何快速、准确地进行分类和命名,成为了许多职场人士头疼的问题。现在,我们为您带来了一款神奇的批…

MyBatisPlus 基础数据表的增删改查 入门 简单查询

MyBatisPlus MyBatisPlus(简称MP)是一个基于MyBatis的增强工具库,简化了MyBatis的开发,提供了很多实用的功能和特性,如自动生成SQL、通用CRUD操作、分页插件、条件构造器、代码生成器等。它不仅简化了开发过程&#x…

2024海亮日记

写在前面:长文预警 20240617 听说要去海亮,不考(补考)期末考试,于是进行一个停课的办理,第一次进入410,被逆天的配置和气氛所震惊 发誓这回去HL一定要有好效果,于是制定了详细的计…

golang 未指定类型interface{} 类型的 int类型数据json.Unmarshal 解码后变成float64类型问题解决方法

golang内置的json反序列化方法,默认情况下对应 未指定类型interface{} 类型的的 int类型数据在经过Unmarshal解码后 int类型的数据会变成 float64类型。 因为json里面默认将interface{}类型的int数据都当做float64来处理。 解决方法很简单,就是使用自定…

优盘有盘符显示0字节:故障解析与数据恢复策略

一、优盘有盘符显示0字节现象描述 在使用优盘的过程中,我们有时会遇到一种令人困惑的情况:插入优盘后,电脑能正常识别到优盘的盘符,但当我们尝试访问其中的数据时,却发现优盘的容量显示为0字节,无法读取或…

快速掌握MyBatis

MyBatis 是一个流行的 Java 持久层框架,它提供了一种半自动的 SQL 映射方式,使得开发者能够更加灵活地编写 SQL 语句,同时避免了传统 JDBC 代码的冗余和复杂性。下面进行简要概述: MyBatis 快速掌握 核心概念:理解 My…

8.1 Firmware Update Process

8.1 Firmware Update Process 通过reset激活firmware 更新的过程: host发出firmare下载命令,将FW image下载到控制器。FW image可能有多个部分要下载,因此FW image 下载命令中指定正在下载的FW image的每个部分的偏移量。FW image 下载命令…

Sui创始团队在竞速环节中的快问快答

在Sui Basecamp活动期间,Sui区块链的最初贡献者在Oracle红牛赛车模拟器上展示了他们的技术能力,在驾驶圈时回答了有关Sui的问题。 Evan Cheng(又名Revvin’ Evan)在解释Mysticeti创下区块链最终性记录的同时保持着他的驾驶线路。…

Java | Leetcode Java题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; class Solution {void dfs(char[][] grid, int r, int c) {int nr grid.length;int nc grid[0].length;if (r < 0 || c < 0 || r > nr || c > nc || grid[r][c] 0) {return;}grid[r][c] 0;dfs(grid, r - 1, c);dfs(grid, r…

go Channel原理 (三)

Channel 设计原理 不要通过共享内存的方式进行通信&#xff0c;而是应该通过通信的方式共享内存。 在主流编程语言中&#xff0c;多个线程传递数据的方式一般都是共享内存。 Go 可以使用共享内存加互斥锁进行通信&#xff0c;同时也提供了一种不同的并发模型&#xff0c;即通…

【嵌入式——FreeRTOS】任务

【嵌入式——FreeRTOS】任务 任务创建和删除动态方式创建任务静态方式创建任务 删除任务任务切换调度器任务切换流程 任务挂起任务恢复相关API函数 任务创建和删除 动态方式创建任务 任务的任务控制块以及任务的栈空间所需的内存&#xff0c;均由freeRTOS从freeRTOS管理的堆中…

c#asp.net中字典的使用

字典是一个键值对&#xff0c;可以用来保存数据&#xff0c;再查询&#xff1b; 下面是一个案例&#xff1a;依据多个学号查询多个学生的姓名&#xff0c;只能到数据库查询一次数据&#xff01;&#xff01;&#xff01; 先在数据库查询学号对应的学生&#xff0c;把数据保存在…

mysql8.0.19安装zip版本

下载地址https://downloads.mysql.com/archives/community/ 下载版本 下载后解压&#xff0c;不包括data 和my.ini文件。其中data 文件是自动生成的【mysqld --initialize --console】&#xff0c;my.ini需要自己编写设置。 新建my.ini文件 需要自己设置 basedirG:\soft\mysql…

内网服务器时间校正

新购买的云服务器发现内网机器和可以访问外网的机器时间慢了三分钟&#xff0c;导致有些访问会报错&#xff0c;那么我们配置一下ntp校正一下时间。外网配置起来比较简单&#xff0c;直接下载ntp执行校正命令即可。 比当前时间慢了三分钟 注意当前服务器是可以访问外网的机器这…

【gitee使用教程】(创建项目仓库并上传代码简易版)

gitee使用教程&#xff0c;创建项目仓库并上传代码简易版 1.在码云上创建一个仓库2.将代码克隆到本地1.复制仓库地址2.找到你想要放置的文件位置&#xff0c;右键点击更多选项&#xff0c;选择Git Clone3.将复制的仓库地址填入URL 3. IDEA结合GIT和Gitee的简单使用idea需要识别…

【python】最新版抖音s逆向拿到数据,非常详细教程(附完整代码)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…