ADB源码分析(一)

ADB是android debug bridge的缩写,负责计算机与Android设备的几乎所有通信和协作,可以认为是连接两者的桥梁。

在Android开发和恶意代码分析中,经常用到它的install、uninstall、push、pull、logcat、shell等命令。它的用法可以参考SDK的文档:

http://developer.android.com/guide/developing/tools/adb.html

正因为其独特的桥梁作用,有必要详细了解其工作过程。幸运的是,我们可以获得其源码,它位于Android源码树的platform/system/core/adb/目录下,可以通过下面的git命令下载:

git clone git://android.git.kernel.org/platform/system/core.git

如果要编译,还是推荐下载完整的Android源码,并参考上一篇文章所述编译方法。

ADB由两个物理文件组成:

  1. adb或adb.exe,运行于PC端,包括Linux、Windows、Mac OS等系统之中,通常是x86架构上(下文中,ADB指整个模块,而adb单独指这一部分);
  2. adbd,运行于Android设备的底层Linux之中,ARMv5架构上。

为了保持两者代码一致,Google并未将其做源码文件级别的分离,而是统一为一份代码,通过传入Android.mk的$(BUILD_SIMULATOR)变量是否为真,来构建不同的文件。对源码而言,由ADB_HOST宏是否预定义为真来区分。

而adb本身还需要估计多个操作系统平台,这由传入Android.mk的$(HOST_OS)来控制,它的有效取值包括linux、darwin、freebsd和windows。不同平台的主要差异是USB的控制方法和文件路径。

除了物理文件上的区别,adb本身还会在PC中产生两类不同的进程。

其中一个进程将由命令行“adb fork-server server”产生(给用户的调用接口是adb start-server),这个守护进程长期运行于后台,没有控制台界面,称之为adb server(adb服务端),其主要工作有两部分:

  1. 管理PC中的Android模拟器,以及通过USB线连接到PC的Android设备,负责维持运行于其中的adbd进程与自身的数据通道;
  2. 实现PC与设备/模拟器之间的数据拷贝。

adb的另一类进程是提供给用户的命令行工具,对用户暴露了上述install、push、shell等接口,与用户交互,称之为adb client(adb客户端)。其主要工作是解析这些命令的参数,做必要预处理,然后转移为指令或数据,发送给adb服务端。adb服务端再将指令数据转发到模拟器或设备中,由adbd处理,产生结果,再通过adb服务端接收回来。

事实上,当adb客户端运行时,会自动检查当前系统中是否存在adb服务端,如果不存在,则通过“adb fork-server server”启动一个服务端,然后再与之建立连接。这样,用户就不需要关心这些概念和差异了。

因此,从运行实体上看,ADB由三部分构成:

  1. adbd
  2. adb server
  3. adb client

Google还引入了一个adb service(adb服务,注意与adb服务端的区别)的概念,指adbd提供的功能。这就构成了ADB的四个模块。在源码的OVERVIEW.txt文件中对它们的关系进行了描述。而protocol.txt描述了各模块之间通信协作的协议格式。

http://blog.claudxiao.net/2011/05/adb_analysis_part1/
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android 12的ADB源代码是指Android开发者桥接(Android Debug Bridge,简称ADB)的源代码ADB是一个多功能命令行工具,用于与Android设备进行通信和调试。在Android开发过程中,ADB源代码对于理解和调试设备与计算机之间的交互非常有用。 ADB源代码Android开源项目(AOSP)的代码库中可用,并且可以通过下载AOSP来获取该源代码。通过查看源代码,我们可以了解ADB是如何实现与Android设备之间的通信和数据传输的。 ADB源代码包含了ADB客户端和ADB服务端的实现。ADB客户端在计算机上运行,而ADB服务端则在Android设备上运行。源代码中涵盖了各种命令和功能,包括连接设备、获取设备信息、安装和卸载应用程序、传输文件等。 了解ADB源代码可以帮助开发者理解ADB工具的工作原理和内部机制。这对于开发者在调试和优化应用程序时非常有帮助,可以更好地利用ADB的各种功能来帮助开发过程。 总而言之,Android 12的ADB源代码是开发者可以获取和查看的ADB工具的源代码,通过了解该源代码,开发者可以更好地了解ADB的工作原理和内部机制,并在开发中更好地应用ADB的各种功能。 ### 回答2: Android 12是谷歌推出的最新操作系统版本,它带来了许多新功能和改进。ADB(安卓调试桥)则是开发者工具包中的一个重要组件,它允许开发者在计算机和Android设备之间进行通信和调试。ADB源代码Android源代码中可以找到。 ADB源码位于Android源码的“platform/system/core/adb”目录下。这个目录包含ADB的所有关键组件。ADB源码以C/C++编写,开发者可以查看和修改这些代码以满足自己的需求。 在Android 12中,ADB源码可能会有一些变化和更新。这些变化可能包括新的功能、性能改进和bug修复。开发者可以通过查看和分析源码,了解这些变化并将其应用于自己的项目中。 为了使用ADB源码,开发者需要首先通过下载和编译整个Android源代码来获取它。一旦获取到ADB源码,开发者可以使用适当的编译工具将其编译为可执行文件。然后,通过在计算机上执行编译后的二进制文件,开发者就可以与连接的Android设备进行通信和调试。 总之,Android 12中ADB源代码可以在Android源代码的特定目录中找到。开发者可以通过查看和修改这些源码来了解和应用ADB的最新功能和改进。同时,获取和编译Android源代码也是使用ADB源码的前提条件。 ### 回答3: Android 12的ADB源码指的是Android操作系统12版本中的ADBAndroid Debug Bridge)相关代码ADBAndroid开发平台中的一个调试工具,它能够通过USB电缆或Wi-Fi连接设备和计算机,实现设备和计算机之间的通信和数据传输。ADB源码包含了ADB守护进程(adbd)以及与其相关的各种组件和功能的实现代码。 在Android 12中,ADB源码经过了诸多改进和更新。其中包括对ADB连接的性能和稳定性的优化,以提高调试和数据传输的效率。此外,还增加了一些新的功能和命令,便于开发者进行更多的调试和测试工作。 ADB源码主要由C++语言编写,涉及到与底层系统中的设备驱动程序和底层服务的交互。开发者可以通过查看并分析ADB源码,深入了解ADB的工作原理和实现细节,以及针对特定需求进行二次开发和定制。 要查看Android 12中的ADB源码,需要访问Android开源项目(AOSP)的代码库。通过AOSP,开发者可以获取Android操作系统的全部源代码,包括ADB源码。但需要注意的是,访问和使用AOSP的源码需要先了解相关的法律政策和使用条款,并按照规定进行操作。 总之,Android 12的ADB源码是指Android 12版本中ADB相关的代码实现,通过查看和分析源码,开发者可以深入了解ADB的工作原理和实现细节,并进行二次开发和定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值