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

Android 如何启用user版本的adb源码分析

Android调试桥(ADB, Android Debug Bridge)是一个Android命令行工具,包含在SDK 平台工具包中,adb可以用于连接Android设备,或者模拟器,实现对设备的控制,比如安装和调试应用。和Appium一样,adb也是基于C/S架构实现的。

一些常用的ADB命令及其用法:

查看ADB版本信息:adb version
启动ADB:通常ADB会在需要时自动启动。
停止ADB:adb kill-server
以root权限运行adbd:adb root
指定ADB server的网络端口:adb -P
查询已连接的设备/模拟器列表:adb devices
USB连接:将设备通过USB线连接到电脑,并启用USB调试模式。
WLAN连接:可以通过USB线先连接设备,然后使用adb tcpip 和adb connect :命令来建立无线连接。
WiFi连接转为USB连接:adb usb
查看应用列表:adb shell pm list packages
安装应用:adb install
重新安装应用到SD卡:adb install -r
卸载应用:adb uninstall
卸载应用但保留数据和缓存文件:adb uninstall -k
截图:adb shell screencap -p /sdcard/screenshot.png 和 adb pull /sdcard/screenshot.png
录制屏幕:adb shell screenrecord /sdcard/demo.mp4
输入文本:adb shell input text “Hello World”
输入事件:adb shell input keyevent
点击屏幕:adb shell input tap

通过adb shell中执行getprop persist.sys.usb.config,可以看到系统usb的相关选项,persist.sys.usb.config显示的就是当前系统关于usb选项的系统配置【RK3188Android4.4刚移植的例子】:
在这里插入图片描述

全编脚本中make命令会调用build/core/main.mk,在里面可以看到一段关于debuggable的编译选项:
在这里插入图片描述

通过上面的代码片段,可以知道ADDITIONAL_DEFAULT_PROPERTIES的值;
在文件build/core/main.mk也有几行这样的代码:
在这里插入图片描述

在build/core/Makefile中:
在这里插入图片描述

看到default.prop了,其实又是一个专题啊,有时间后面再介绍了,在这里当作没有看到吧!

执行76行代码:post_process_props.py脚本文件,post_process_props.py会根据main.mk中的ro.debuggable指定的值来生成default.prop的persist.sys.usb.config:
在这里插入图片描述

不过打开之后,对于user 版本adb shell 开启的还是shell 权限,而不是root 权限,如果您需要root 权限,需要再改一下system/core/adb/adb.c 里面的should_drop_privileges() 这个函数,在#ifndef ALLOW_ADBD_ROOT 时return 0; 而不是return 1即可:

在这里插入图片描述

如果想要编译user版本的时候打开adb,把
prop.put(“persist.sys.usb.config”, “none”);
改为:
prop.put(“persist.sys.usb.config”, “adb”);
即可。

最后,把RK3188Android4.4刚移植的例子附上:
在这里插入图片描述

觉得本文对您有用,麻烦点赞、关注、收藏,您的肯定是我创作的无限动力,谢谢!!!

相关文章:

Android 如何启用user版本的adb源码分析

Android调试桥(ADB, Android Debug Bridge)是一个Android命令行工具,包含在SDK 平台工具包中,adb可以用于连接Android设备,或者模拟器,实现对设备的控制,比如安装和调试应用。和Appium一样,adb也是基于C/S架…...

linux phpstudy 重启命令

[rootLinuxWeb phpstudy]# ./system/phpstudyctl restart 查看命令 1) phpstudy -start 启动小皮面板 2) phpstudy -stop 停止小皮面板 3) phpstudy -restart 重启小皮面板 4) phpstudy -status 查询面板状态 5) phpstudy -in…...

台式电脑屏幕亮度怎么调节?让你的眼睛更舒适!

在日常使用台式电脑时,调节屏幕亮度是一项常见的需求。不同的环境和个人偏好可能需要不同的亮度设置。因此,了解台式电脑屏幕亮度怎么调节是非常重要的。本文将介绍三种常见的方法,帮助您轻松调节台式电脑屏幕亮度,以满足您的需求…...

打造安全的 Linux 环境:实用配置指南

唠唠闲话 一开始接触服务器,我只是把它当博客的托管网站,源文件用 GitHub 备份,所以网站被黑了也没啥关系。但随着使用深入,网站逐渐加入我的日常工作流中,而且有了使用更多服务的需求。在这种情况下,服务…...

神经网络有哪些算法

神经网络算法是人工智能领域的重要组成部分,它通过模拟人类神经系统的结构和功能,实现对复杂问题的处理和分析。以下是对神经网络算法的详细概述,包括常见的算法和它们的特点、应用等,力求达到约2500字的篇幅。 一、神经网络算法概述 神经网络算法是一种基于人工神经元的…...

计算机网络期末试题

第一章 概述 一. 单选题(共13题,36.4分) 1. (单选题) 因特网起源于( )网络。 A. ARPANETB. EthernetC. CATVD. CERNET 我的答案: A:ARPANET;正确答案: A:ARPANET; 2.8分 2. (单选题)人们把( )年作为因特网的诞…...

Unity学习笔记---图层

渲染层级 1,调整Sprite Renderer中的Order in Layer可以调整图层层级。 2,在Edit--Project Setting--Graphics中,调整TransParency Sort Mode为Custom Axis, 并将TransParency Sort Axis中的Z值默认的1改为0,将Y改为…...

【简单探索微软Edge】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...

YOLOv5独家改进:backbone改进 | 微软新作StarNet:超强轻量级Backbone | CVPR 2024

💡💡💡创新点:star operation(元素乘法)在无需加宽网络下,将输入映射到高维非线性特征空间的能力,这就是StarNet的核心创新,在紧凑的网络结构和较低的能耗下展示了令人印象深刻的性能和低延迟 💡💡💡如何跟YOLOv5结合:替代YOLOv5的backbone 收录 YOL…...

概率密度函数pdf的某种解释与洞察

1.一个想法实验 我在想一个数,姑且称之为X,介于0和10之间(含0和10)。如果我不告诉你别的,你会想象X = 0的概率是多少?X = 4?假设我对任何特定的数字都没有偏好,你会想象十一个整数0,1,2,.….,10也是一样。因为所有的概率加起来必须是1,所以逻辑上的结论是给11个选项…...

【OceanBase诊断调优】—— 转储错误(错误代码 4138/ORA-01555)

当读事务很长时,租户进行转储会报 4138/ORA-01555 错误。本文介绍该错误的处理方法。 适用版本 OceanBase 数据库 V2.X 及以后的版本 问题现象 当读事务很长,租户进行转储时会出现以下错误。 Oracle 租户: ORA-01555:snapsho…...

Python面试题【数据结构和算法部分101-130】

Python面试题【数据结构和算法部分101-130】 Python面试题【数据结构和算法部分101-130】 Python面试题【数据结构和算法部分101-130】 问题:如何在Python中实现二分查找? 答案: def binary_search(arr, target):low, high 0, len(arr) - 1…...

Django中的日志处理

日志处理 1.日志级别 级别(Level)表示日志消息的优先级,从低到高分为以下几个级别: DEBUG: 详细的日志信息,通常用于调试。 INFO: 一般的信息性消息,用于说明程序运行情况。 WARNING: 警告消息&#xff0…...

FonePaw Data Recovery for Mac:轻松恢复丢失数据

FonePaw Data Recovery for Mac是一款功能强大的数据恢复软件,专为Mac用户设计,帮助用户轻松恢复因各种原因丢失的数据。该软件支持从硬盘驱动器、存储卡、闪存驱动器等存储介质中恢复丢失或删除的文件,包括照片、视频、文档、电子邮件、音频…...

C语言易错提醒选择题精选

Ⅰ 易错题 1.设有double p;&#xff0c;为变量p声明一个引用名称rp,则定义语句为 double& rpp; 2.已知‘A’一‘Z’的ASCII码为65—90&#xff0c;当执行“char ch14*52&#xff1b;cout<<ch<<endl;”语句序列后得到的输出结H &#xff0c;72对应ASCII码中…...

Android11系统去掉截屏功能

1. 去掉Settings里截屏菜单条目&#xff0c;packages/apps/Settings&#xff1a; diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml old mode 100644 new mode 100755 index a5e4d06..a9420bb --- a/res/xml/top_level_settings.xmlb/res/xml/t…...

测试驱动来学习 Promise

基础功能 测试案例&#xff1a;以同步的方式调用。 /*** v1: 基础功能*/ const p1 new MyPromise((resolve, reject) > {resolve(success)reject(error) })p1.then((value) > {console.log(v1: , value) }) 实现功能&#xff1a;在 status 和 value 的位置暂存值&…...

Vue3实战笔记(20)—封装头部导航组件

文章目录 前言一、封装头部导航栏二、使用步骤总结 前言 Vue 3 封装头部导航栏有助于提高代码复用性、统一风格、降低维护成本、提高可配置性和模块化程度&#xff0c;同时还可以实现动态渲染等功能&#xff0c;有利于项目开发和维护。 一、封装头部导航栏 封装头部导航栏&am…...

Yolov8目标检测——在Android上部署Yolov8 tflite模型

1. 简介 YOLOv8 是一种用于目标检测的深度学习模型&#xff0c;它是 YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本之一。YOLO 系列因其高效和准确性而在计算机视觉领域非常受欢迎&#xff0c;特别是在需要实时目标检测的应用中&#xff0c;如视频监控、自动…...

(delphi11最新学习资料) Object Pascal 学习笔记---第12章操作类(类方法和类数据)

第12章 操作类 ​ 在过去的几章中&#xff0c;你已经了解了 Object Pascal 语言面向对象的基础&#xff1a;类、对象、方法、构造函数、继承、后期绑定、接口等等。现在&#xff0c;我们需要进一步了解与类管理相关的一些更高级、更具体的语言特性。从类引用到类助手(class he…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...