adb源码 笔记

USB开启ADB设置流程 那么 sys.usb.state 属性的值是在哪设置的呢?setting应用中有监听adb状态广播:packages/apps/Settings/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java。UsbDeviceManager类路径位于 frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java。 阅读详情

ADB-server

运行在PC端,是一个始终在后台运行的进程,作为与手机端交互的唯一接口。ADB-server处理ADB-client的请求,一部分请求无须与设备交互,直接在PC本地完成;剩下的请求需要与设备端的adbd交互,ADB-server起到了一个switcher的作用。

ADB-client

运行在PC端,可以同时存在多个。每个ADB-client由用户启动,完成多种功能。其作用是与ADB-server交互,实现用户请求的功能。

adbd

运行在设备端的常驻进程,同时只存在一个。作用是接收PC端的ADB-server发来的请求,并作出对应操作。


这三个可执行程序都是同一套代码编译出来的,位于<Android Source Dir>/system/core/adb/

        在adb源码中找到了:
            #define DEFAULT_ADB_PORT 5037
               #define DEFAULT_ADB_LOCAL_TRANSPORT_PORT 5555
               #define ADB_CLASS              0xff
               #define ADB_SUBCLASS           0x42
               #define ADB_PROTOCOL           0x1
          其中,class,subclass,protocol对应的是“USB\\Class_FF&SubClass_42&Prot_01”中的FF,42和01,果然代码里有大部分的信息。
       service用了一个结构体asocket保存了用于连接的两个socket,这个socket对一个是本地的,一个是设备上的,也就是service接收到本地socket的数据会将收到的数据发向这个结构中对应的设备的socket。
          atransport,用于传输数据的对象,可以设置成不同类型,而分别与本地或usb设备进行数据传输。本地用的是socket 文件描述符,usb设备用的是usb连接的句柄。
          alistener是一个结构,只保存了一些数据 , 当socket监听收到连接请求时用于绑定本地端口和请求端口。
          usb通信的部分是通过adb_api,就是那两个dll里的代码,它们用到了DeviceIoControl来与设备通信

          fdevent 用一个结构体,保存了事件及事件处理的函数的指针。

          adb 启动时会先检查是否有设置相关的环境变量,有ANDROID_PRODUCT_OUT,ANDROID_SERIAL,ANDROID_ADB_SERVER_PORT,主要是port,如果没有port将会使用5037这个端口。然后adb客户端会尝试发送版本检查的信息,如果返回-2,说明服务端没有启动,就获取自身所在的路径,以服务端的参数启动一个服务进程,这个进程与原adb是同一个程序。

Android ADB 源码分析总结 Android之ADB总结 本文内容如下: 1.makefile分析及总结 2.adb框架介绍 3.adbd源码分析 3.1adbd初始化流程分析 3.2adbshell流程分析 3.3adbroot流程分析 4.adb常用命令 一、makefile分析及总结 // 以下内容摘录自android/system/... 阅读详情

相关推荐

【Android系统源码修改】 默认开启adb模式

修改如下 build/core/main.mk tags_to_install := ifneq (,$(user_variant)) # Target is secure in user builds. - ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 + ADDITIONAL_DEFAULT_PROPERTIES += ro.secur...

Bright的博客 3709

USB的VID和PID,以及分类(Class,SubClass,Protocol)

USB(Universal Serial BUS,通用串行总线)协议规定,所有的USB设备都有VID(Vendor ID,供应商识别码)和PID(Product ID,产品识别码)。VID由供应商向USB-IF(Implementers Forum,应用者论坛)申请。每个供应商的VID是唯一的,PID由供应商自行决定。主机通过VID和PID来识别不同设备,根据它们(以及设备的版本号),可以给设备加

山不在高,有金则名 6万+

ADB源码(android / platform / system / core)

adb源码官网:https://android.googlesource.com/platform/system/core/可在以上链接获取adb源码集成到项目中。若下载失败可以下载上面的附件。

ADB源码分析(一)——ADB模块简述

原文地址 http://www.apkbus.com/blog-50331-54609.html感谢作者的分享1、Adb 源码路径(system/core/adb)。2、要想很快的了解一个模块的基本情况,最直接的就是查看该模块的Android.mk文件,下面就来看看adb模块的Android.mk文件:  ……  ifeq ($(HOST_OS),linux) //用HOST_OS这个宏来兼容不同的操作系统的adb可执行程序(windows、L...

kunkliu的博客 2596

adb源码(VS2010编译)

adb的源码,改了一点点,加了点日志。vs2010可以编译。

【NVIDIA驱动的顽固问题】---- /dev/sdax:clean,xxx/xxx files,xxx/xxx blocks ---- 最全解决方法

本文的意义在于整理总结关于此问题的全部解决方法,希望能给大家节约时间。

lc1852109的博客 3128

Android Adb 源码分析(一)

扭起屁股得意洋洋最近,我负责的项目因为临近量产,把之前的userdebug版本关闭,转成了user版本,增加selinux的权限,大家都洋溢在项目准备量产的兴奋和喜悦之中不能自拔谁知,好景不长,user版本发布之后,各种bug接踵而来,但是因为user版本权限的原因,我们之前保留在/data/logs/下面的日志不能pull出来,定位问题非常困难不得不想到的解决方案第一个办法:我们想到的第一个办法就是更改data目录的权限,改成system用户,但是因为data下面的logs目录的文件是root权限,获取日

kunkliu的博客 3789

4.2 结构翻模

结构翻模功能可以将DWG文件中的二维图线对象:轴网、墙、柱、梁、基础、房间和面积等快速转换成Revit模型对象,翻模速度快,准确率高。与先前的模盒翻模功能不同,结构翻模不再需要在AutoCAD中提取模型的图线,所有操作在Revit均可完成。(1)翻模程序适用于钢筋混凝土结构的平法DWG文件。(2)将平法中所表示的轴网线,轴网文字,结构柱,梁,结构墙在Revit 中重新建出来。(3) 模盒可以翻出连...

fishbuaa的专栏 1798

ADB源码分析(二)——adb sever的启动

ADB源码分析(二)——adb sever的启动1、 ADB Server的启动前面我们讲到adb模块的源码在system/core/adb下面,通过查看Android.mk文件我们了解到这个adb模块回编译生成连个可执行文件adb、adbd,源码通过ADB_HOST这个宏来控制编译的是adb还是adbd。首先我们来看看这个运行于PC端的adb——ADB Server。下面我们就来看看ADB Server的启动adb.c(system/core/adb/):接着来看看adb_commandline()(sy

kunkliu的博客 1689

Windows10下MATLAB2017a安装与破解实战:手把手教你搞定双镜像加载

本文详细介绍了在Windows 10系统下安装和破解MATLAB 2017a的完整步骤,包括双镜像加载、许可证配置及常见问题解决方案。通过手把手教程,帮助用户顺利完成安装并优化性能,特别适合工程计算领域的初学者和专业人士。

weixin_29053383的博客 420

Virtuoso 中的tech file 详细说明

工艺文件(Techfile)是集成电路设计中的核心配置文件,定义了从晶圆制造到版图验证全流程所需的工艺规则和图层属性。在Cadence Virtuoso平台中,Techfile作为连接设计与制造的桥梁,主要包含以下内容: 图层体系定义 金属层、介质层、多晶硅层等物理图层的编号、名称和显示属性 图层用途(DRAW、MASK等)及图层-用途组合(LPP)的优先级 设计规则约束 几何尺寸规则(最小线宽/间距) 包围和延伸规则 密度规则和特殊工艺规则(如天线效应) 器件定义 MOS管、电阻等器件的图层构成 电学参数

u013620135的博客 8136

Android ADB 命令及源码编译命令笔记

ADB 常用命令adb root:获取root 权限adb remount:重新挂载adb shell :进入terminaladb devices -s serialnumber :查看指定设备状态adb devices 获取设备列表及设备状态adb kill-serveradb start-serveradb logcat , 打印 Android 的系统日志adb install -r ap...

qq_26366149的博客 1687

20.Labview使用子vi进行VI间的数据传递详解(模块化)

子VI(模块化)题主在题注中也提到, 子VI的建立只是为了减少程序的负担,那么我们当使用子VI的时候首先就要明确什么是子VI?什么样的程序可以作为子VI?首先我们来看NI官方给的定义,具体说明如下图所示:题主已经将重点画出来了,在官方的解释中将子VI定义为了模块化,大家可以看到创建模块化子VI的特点在于减少代码重复工作优化了程序的框架结构。把一个代码打包,需要的时候就拎出来让他处理处理,不需要的时候就让它躺在我的列表里就行了也不占用运行空间。那么创建子VI需要需要注意以下几点:①任何一个程序。

关注我,更多技术问题欢迎私聊~ 3517

bat批处理循环执行adb命令,android开发艺术探索pdf

控制键 ================================================================  KEYCODE_ENTER回车键66KEYCODE_ESCAPEESC键111KEYCODE_DPAD_CENTER导航键 确定键23KEYCODE_DPAD_UP导航键 向上19KEYCODE_DPAD_DOWN导航键 向下20KEYCODE_DPAD_LEFT导航键 向左21KEYCODE_DPAD_RIGHT导航键 向右22KEYCODE_MOVE_HO

m0_65511857的博客 687

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

专栏总目录,文中介绍了UDS协议相关的基础知识和一些术语,给出了详细介绍6大类26种服务的跳转目录。

车载系统攻城狮 9万+

Google Earth Engine(GEE)——全球影像数据正确下载方式和注意事项

今天看到有人担心全球影像能不能下载的问题? 有时候我们会用到全球的数据,但是如何下载全球的数据呢? 首先如果没有全球的矢量边界我们会不会无法下载全球的数据,答案当然是可以的,因为我们在边界筛选的过程中filterBounds(),就是为了筛选边界,当我们不进行边界筛选的时候,自然而然默认的边界范围就是全球的,但是紧接着会面临其他两个问题:1如何下载?2如何在不缩小分辨率的情况下下载成功? 对于第一个问题我们如何下载?还是按照正常的逻辑利用export直接倒出到Google硬盘当中, 代码:

此星光明博客 3772

adb源码路径

AdbWinApi.dll---development\host\windows\usb\api AdbWinUsbApi.dll---development\host\windows\usb\winusb adb.exe---system\core\adb 下面列出编译adb所需要的文件 文件名称 andriod源码位置 备注

anthony634的专栏 1792

如何在Ubuntu 22.04系统上安装CUDA 12.9

本文提供Ubuntu22.04系统上安装CUDA12.9的简明指南:1)确认已安装适配575驱动;2)清理旧版本后安装必需依赖库;3)通过deb包方式添加英伟达源并安装CUDA12.9工具包;4)配置环境变量;5)通过nvcc-V和nvidia-smi命令验证安装。文中包含常见问题解决方法及多显卡使用说明,全程约需10分钟完成安装。

2501_93651177的博客 1481

ADB源码分析——ADB模块简述(转)

本文转载自:http://www.apkbus.com/blog-50331-54609.html   1、Adb 源码路径(system/core/adb)。 2、要想很快的了解一个模块的基本情况,最直接的就是查看该模块的Android.mk文件,下面就来看看adb模块的Android.mk文件:   ……   ifeq ($(HOST_OS),linux) //用HOST_OS这个宏...

631

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ADB 源码分析(一) ——ADB模块简述【转】

本文转载自:http://www.apkbus.com/blog-50331-54609.html ADB源码分析(一)——ADB模块简述 1、Adb源码路径(system/core/adb)。 2、要想很快的了解一个模块的基本情况,最直接的就是查看该模块的Android.mk文件,下面就来看看adb模块的Android.mk文件: …… ifeq...

167

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【转】Android源码编译之ADB编译

<br /><br />How to build adb, the Android debugger<br />adb is the Android debugger (officially the “Android debug bridge” I think). It is a tool for getting shell access to an Android phone across a USB connection. It can also be used to copy files to

zysee的专栏 4983

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 源码编译adb,ADB 源程序从android源码中提取

本来笔者打算写一下adb源码分析的文章,后来发现网上已经有人写了关于adb源码通信和各种机制的文正了,写的挺好的,理解的也比笔者要深刻,所以笔者就不在重复造轮子了。但是前面的编写者,主要是从源码角度来理解,但是对于很多程序员来说,细读一遍源码,绝对没有在ide中断点跟踪一遍程序理解深刻过瘾。所以我将adb源码从android源码中提取出来,支持了ndk编译,以及eclipse下的 cdt编译。这样...

weixin_33462050的博客 731

【Android测试】【第三节】ADB——源码浅谈

前言   由于本人精力平有限,所以这里简单的说说ADB源码。   首先根据前面的理解,我们已经知道了ADB是“连接手机和PC的一个桥梁”,我们经常在PC端开发的时候,会用到eclipse这个工具,这里面有一个工具叫DDMS,如下图:     是不是发现通过DDMS在PC端可以看到手机的一些信息,其实呢 它就是通过 “ddmlib.jar” 来建立起ADB的。因此我们今天就通过反编译

carter_dream的博客 1285

adb 工具源码修改

修改 adb 源码 编译出 可以输入密码的 adb 工具

qq_40315144的博客 1341

修改Android源码,开启adb的Root权限

adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。 默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两种修改的方式: 1

gjnm820的博客 9174
上一篇: iOSOpenDev环境搭建以及使用
下一篇: coreseek安装笔记
AstrayLinux
博客等级 码龄15年 55粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值