当前位置: 首页 > news >正文

Android 12 打开网络ADB并禁用USB连接ADB

在这里插入图片描述

平台

RK3588 + Android 12

Android 调试桥 (adb)
    Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
  • 守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
  • 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。

AndroidStudio 中显示的设备名称

在这里插入图片描述
第一个 rockchip 来自系统属性: ro.product.product.manufacturer
第二个一般是ro.product.model
PS 如果 manufacturer 和 model 一样, 那么会只显示一个的值.

ADB使能和控制USB调试

  • ADB调试的开关:
    系统属性persist.sys.usb.config值里是否包含adb
    系统设置数据库Settings.Global.ADB_ENABLED值是否为非0

frameworks/base/services/core/java/com/android/server/adb/AdbService.java

    private static final String USB_PERSISTENT_CONFIG_PROPERTY = "persist.sys.usb.config";private void initAdbState() {try {/** Use the normal bootmode persistent prop to maintain state of adb across* all boot modes.*/mIsAdbUsbEnabled = containsFunction(SystemProperties.get(USB_PERSISTENT_CONFIG_PROPERTY, ""),UsbManager.USB_FUNCTION_ADB);mIsAdbWifiEnabled = "1".equals(SystemProperties.get(WIFI_PERSISTENT_CONFIG_PROPERTY, "0"));// register observer to listen for settings changesmObserver = new AdbSettingsObserver();mContentResolver.registerContentObserver(Settings.Global.getUriFor(Settings.Global.ADB_ENABLED),false, mObserver);mContentResolver.registerContentObserver(Settings.Global.getUriFor(Settings.Global.ADB_WIFI_ENABLED),false, mObserver);} catch (Exception e) {Slog.e(TAG, "Error in initAdbState", e);}}private void setAdbEnabled(boolean enable, byte transportType) {if (DEBUG) {Slog.d(TAG, "setAdbEnabled(" + enable + "), mIsAdbUsbEnabled=" + mIsAdbUsbEnabled+ ", mIsAdbWifiEnabled=" + mIsAdbWifiEnabled + ", transportType="+ transportType);}if (transportType == AdbTransportType.USB && enable != mIsAdbUsbEnabled) {mIsAdbUsbEnabled = enable;} else if (transportType == AdbTransportType.WIFI && enable != mIsAdbWifiEnabled) {mIsAdbWifiEnabled = enable;if (mIsAdbWifiEnabled) {if (!AdbProperties.secure().orElse(false) && mDebuggingManager == null) {// Start adbd. If this is secure adb, then we defer enabling adb over WiFi.SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1");mConnectionPortPoller =new AdbDebuggingManager.AdbConnectionPortPoller(mPortListener);mConnectionPortPoller.start();}} else {// Stop adb over WiFi.SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "0");if (mConnectionPortPoller != null) {mConnectionPortPoller.cancelAndWait();mConnectionPortPoller = null;}}} else {// No changereturn;}if (enable) {startAdbd();} else {stopAdbd();}for (IAdbTransport transport : mTransports.values()) {try {transport.onAdbEnabled(enable, transportType);} catch (RemoteException e) {Slog.w(TAG, "Unable to send onAdbEnabled to transport " + transport.toString());}}if (mDebuggingManager != null) {mDebuggingManager.setAdbEnabled(enable, transportType);}}private void startAdbd() {SystemProperties.set(CTL_START, ADBD);}private void stopAdbd() {if (!mIsAdbUsbEnabled && !mIsAdbWifiEnabled) {SystemProperties.set(CTL_STOP, ADBD);}}

使用设置系统属性ctl.start启动和ctl.stop停止adbd服务

  • 增加系统控制是否启用USB调试

packages/modules/adb/daemon/main.cpp

int adbd_main(int server_port) {umask(0);signal(SIGPIPE, SIG_IGN);
//.....
#if defined(__ANDROID__)bool adb_usb_on = android::base::GetBoolProperty("persist.adb.adb_usb", false);if (access(USB_FFS_ADB_EP0, F_OK) == 0 && adb_usb_on) {// Listen on USB.usb_init();is_usb = true;}
#endif

修改系统属性后, 重启adbd服务生效.

  • 默认网络ADB调试端口
    系统属性service.adb.tcp.port

修改 packages/modules/adb/daemon/main.cpp 需注意, 可能导致烧录后不能启动, 卡在下面LOG:

emmc_point is /dev/block/mmcblk0
sd_point is (null)
sd_point_2 is (null)
read cmdline
I:Boot command: boot-recovery
I:Got 2 arguments from boot message
ensure_path_mounted path=/cache/recovery/last_locale 
I:[libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/by-name/cache
I:[libfs_mgr]__mount(source=/dev/block/by-name/cache,target=/cache,type=ext4)=0: Success
Loading make_device from librecovery_ui_ext.so
W:Failed to read max brightness: No such file or directory
I:Screensaver disablederasing_text: zh (81 x 38 @ 5031)no_command_text: zh (111 x 38 @ 5031)error_text: zh (65 x 38 @ 5031)
W:Failed to load bitmap cancel_wipe_data_text for locale zh-Hans-CN (error -1). Falling back to use default locale.
E:Failed to load bitmap cancel_wipe_data_text for locale en-US (error -1)
W:Failed to load bitmap factory_data_reset_text for locale zh-Hans-CN (error -1). Falling back to use default locale.
E:Failed to load bitmap factory_data_reset_text for locale en-US (error -1)
W:Failed to load bitmap try_again_text for locale zh-Hans-CN (error -1). Falling back to use default locale.
E:Failed to load bitmap try_again_text for locale en-US (error -1)
W:Failed to load bitmap wipe_data_confirmation_text for locale zh-Hans-CN (error -1). Falling back to use default loc.
E:Failed to load bitmap wipe_data_confirmation_text for locale en-US (error -1)
W:Failed to load bitmap wipe_data_menu_header_text for locale zh-Hans-CN (error -1). Falling back to use default loca.
E:Failed to load bitmap wipe_data_menu_header_text for locale en-US (error -1)
I:Starting recovery (pid 258) on Fri Nov 17 01:15:53 2023I:locale is [zh-Hans-CN]
SELinux: Loaded file_contexts

相关文章:

Android 12 打开网络ADB并禁用USB连接ADB

平台 RK3588 Android 12 Android 调试桥 (adb) Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell(可用来在设备上运行各种命令&am…...

基于Langchain的txt文本向量库搭建与检索

这里的源码主要来自于Langchain-ChatGLM中的向量库部分,做了一些代码上的修改和封装,以适用于基于问题和包含数据库表描述的txt文件(文件名为库表名,文件内容为库表中的字段及描述)对数据库表进行快速检索。 中文分词…...

vue2-router

1.基础 1.1.安装 npm install vue-router3.6.5 1.2.引入 import VueRouter from "vue-router" 1.3.注册 Vue.use(VueRouter) 1.4.创建 const router new VueRouter({routes: [{path:/page1, page1},{path:/page2, page2}]} ) 1.5.引用 new Vue({render: h >…...

css新闻链接案例

利用html和css构建出新闻链接案例,使用渐变色做出背景色变化 background: linear-gradient(to bottom, rgb(137, 210, 251), rgb(238, 248, 254), white); 利用背景图片,调整位置完成 dd { height: 28px; line-height: 28px; background-image: url(./图…...

Android wifi连接和获取IP分析

wifi 连接&获取IP 流程图 代码流程分析 一、关联阶段 1. WifiSettings.submit – > WifiManager WifiSettings 干的事情比较简单,当在dialog完成ssid 以及密码填充后,直接call WifiManager save 即可WifiManager 收到Save 之后,就开…...

MLIR笔记(5)

4.3.4. 图区域 在MLIR中,区域里类似图的语义由RegionKind::Graph来表示。对没有控制流的并发语义,以及通用有向图数据结构的建模,图区域是合适的。图区域适用于表示耦合值之间的循环关系,这些关系没有基本的序。例如,…...

abapgit 安装及使用

abapgit 需求 SA[ BASIS 版本 702 及以上 版本查看路径如下: 安装步骤如下: 1. 下载abapgit 独立版本 程序 链接如下:raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap 2.安装开发版本 2.1 在线安装 前置条…...

园区无线覆盖方案(智慧园区综合解决方案)

​ 李经理正苦恼头疼的工业园区数字化改造项目。近年企业快速增长,园区内Argent工业设备激增,IT部门应接不暇。为确保生产系统稳定运行,IT管理团队经过反复摸索,决定进行全面的数字化升级。然而改造之艰巨远超想象——混杂的接入环境、复杂的专线部署、长达数月的建设周期,种种…...

配置中心--Spring Cloud Config

目录 概述 环境说明 步骤 创建远端git仓库 准备配置文件 配置中心--服务端 配置中心--客户端 配置中心的高可用 配置中心--服务端 配置中心--客户端 消息总线刷新配置 配置中心--服务端 配置中心--客户端 概述 因为微服务架构有很多个服务,手动一个一…...

笔记-模拟角频率和数字角频率的关系理解

先建议阅读前人此文(点击这里),有助于理解。 模拟频率:f 模拟角频率:Ω 数字角频率:ω 其中:在模拟信号中Ω 2πf 正弦波表示:sin(2πft) sin(Ωt) 数字信号就是离散的&#xff…...

Zookeeper+Kafka集群

注:本章使用的Kafka为2.7.0版本 Zookeeper概述 1.Zookeeper定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 2.Zookeeper工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理…...

Sunshine+Moonlight+Android手机串流配置(局域网、无手柄)

目录 前言Sunshine(服务端)ApplicationConfigurationGeneralAdvance Moonlight(客户端)配对打开虚拟手柄串流按键调整退出串流 原神,启动! 前言 写这篇文章单纯是因为搜来搜去没有很符合我需求的教程&#…...

从顺序表中删除具有最小值的元素(假设唯一) 并由函数返回被删元素的值。空出的位 置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。

题目描述:从顺序表中删除具有最小值的元素(假设唯一) 并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 bool DeleteMin(SqList &L,int &min){if(L.length 0)return false;min L…...

详解—[C++ 数据结构]—AVL树

目录 一.AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 3.1插入方法 四、AVL树的旋转 1. 新节点插入较高左子树的左侧---左左:右单旋 2. 新节点插入较高右子树的右侧---右右:左单旋 3.新节点插入较高左子树的右侧---左右:先左单旋…...

卷积神经网络(CNN):乳腺癌识别.ipynb

文章目录 一、前言一、设置GPU二、导入数据1. 导入数据2. 检查数据3. 配置数据集4. 数据可视化 三、构建模型四、编译五、训练模型六、评估模型1. Accuracy与Loss图2. 混淆矩阵3. 各项指标评估 一、前言 我的环境: 语言环境:Python3.6.5编译器&#xf…...

有文件实体的后门无文件实体的后门rootkit后门

有文件实体后门和无文件实体后门&RootKit后门 什么是有文件的实体后门: 在传统的webshell当中,后门代码都是可以精确定位到某一个文件上去的,你可以rm删除它,可以鼠标右键操作它,它是有一个文件实体对象存在的。…...

GPT实战系列-大模型训练和预测,如何加速、降低显存

GPT实战系列-大模型训练和预测,如何加速、降低显存 不做特别处理,深度学习默认参数精度为浮点32位精度(FP32)。大模型参数庞大,10-1000B级别,如果不注意优化,既耗费大量的显卡资源,…...

SQL Sever 基础知识 - 数据排序

SQL Sever 基础知识 - 二 、数据排序 二 、对数据进行排序第1节 ORDER BY 子句简介第2节 ORDER BY 子句示例2.1 按一列升序对结果集进行排序2.2 按一列降序对结果集进行排序2.3 按多列对结果集排序2.4 按多列对结果集不同排序2.5 按不在选择列表中的列对结果集进行排序2.6 按表…...

vscode配置使用 cpplint

标题安装clang-format和cpplint sudo apt-get install clang-format sudo pip3 install cpplint标题以下settings.json文件放置xxx/Code/User目录 settings.json {"sync.forceDownload": false,"workbench.sideBar.location": "right","…...

C++ 系列 第四篇 C++ 数据类型上篇—基本类型

系列文章 C 系列 前篇 为什么学习C 及学习计划-CSDN博客 C 系列 第一篇 开发环境搭建(WSL 方向)-CSDN博客 C 系列 第二篇 你真的了解C吗?本篇带你走进C的世界-CSDN博客 C 系列 第三篇 C程序的基本结构-CSDN博客 前言 面向对象编程(OOP)的…...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

PHP和Node.js哪个更爽?

先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...