[ADB]ADB(Android Debug Bridge)简介及基础(不包含命令)

"Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an emulator instance or connected Android-powered device."

ADB作为一个多功能命令行工具,为你与模拟器或者连接到电脑的安卓设备的通讯提供了可能。

"It is a client-server program that includes three components:

  • A client, which runs on your development machine. You can invoke a client from a shell by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create adb clients.
  • A server, which runs as a background process on your development machine. The server manages communication between the client and the adb daemon running on an emulator or device.
  • A daemon, which runs as a background process on each emulator or device instance.

You can find the adb tool in <sdk>/platform-tools/."

ADB是一个CS架构的程序,它包含三个部件:

  • 客户端,运行在你的开发机器上。通过发送adb命令,你可以从shell引用一个客户端。其他诸如ADT插件、DDMS也都会创建adb客户端
  • 服务器,该进程运行在开发机器的后台。服务器对客户端和adb后台驻留程序(adb daemon,在模拟器或设备上运行)之间的通讯进行管理
  • daemon,在每个模拟器或设备实例后台运行的进程

adb 工具可以在<sdk>/platform-tools/中找到

 

"When you start an adb client, the client first checks whether there is an adb server process already running. If there isn't, it starts the server process. When the server starts, it binds to local TCP port 5037 and listens for commands sent from adb clients—all adb clients use port 5037 to communicate with the adb server.

The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports — an even-numbered port for console connections and an odd-numbered port for adb connections. For example:

Emulator 1, console: 4
Emulator 1, adb: 5
Emulator 2, console: 6
Emulator 2, adb: 7
and so on...

As shown, the emulator instance connected to adb on port 5 is the same as the instance whose console listens on port 4.

Once the server has set up connections to all emulator instances, you can use adb commands to access those instances. Because the server manages connections to emulator/device instances and handles commands from multiple adb clients, you can control any emulator/device instance from any client (or from a script).

Note: When you connect a device running Android 4.2.2 or higher to your computer, the system shows a dialog asking whether to accept an RSA key that allows debugging through this computer. This security mechanism protects user devices because it ensures that USB debugging and other adb commands cannot be executed unless you're able to unlock the device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or higher."

 启动adb客户端后,客户端首先检查adb服务器是否在运行。如果没有,它会启动服务器进程。服务器启动后,其将会绑定本地TCP的5037端口,来监听来自adb客户端的命令。所有的adb客户端都使用5037端口来与adb服务器通信。

然后,服务器与所有正在运行的emulator/device实例建立连接。服务器通过扫描从5到5585的奇数端口号来定位emulator/device(因此每台机器最多同时连接16台设备)。当服务器找到adb后台驻留程序的端口后,其通过那个端口进行连接。每个emulator/device实例都需要一对连续的端口号——一个控制台连接的偶数端口,和一个adb连接的奇数端口。例如:

模拟器1,控制台:4

模拟器1,adb:5

模拟器2,控制台:6

模拟器2,adb:7

……

如上所示,通过5连接到adb的模拟器实例和监听4端口控制台连接的实例是相同的。

一旦服务器与所有的模拟器实例建立了连接,你就能通过adb命令来访问哪些实例。因为服务器对所有连接到它的实例进行管理而且处理多个adb客户端发送来的命令,所以你可以通过任意的客户端或者脚本来操控任意一个emulator/device实例。

注意:当你连接到电脑的设备Android版本是或者高于4.2.2时,系统会询问是否允许在这台电脑上调试程序,具体是RSA key。增加了些安全性。

 

p.s.以上内容引用部分来自Google Android

更多相关文章
  • 易网科技讯 3月2日消息,麦考林(Nasdaq:MCOX)今日发布2010年第四季度及全年财报.数据显示麦考林第四季度净营收6420万美元,同比增长5.7%:净利润110万美元,同比减少61.7%.净营收6420万美元 同比增长率下跌明显净营收6420万美元,同比增长5.7%,环比增长16%.净营收 ...
  • shiro介绍 1.1     什么是shiro shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证.用户授权.   spring中有spring security (原名Acegi),是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单. shiro不依赖 ...
  • Tomcat组件生命周期管理 在Tomcat总体结构 (Tomcat源代码解析之二)中,我们列出了Tomcat中Server,Service,Connector,Engine,Host,Context的继承关系图,你会发现它们都实现了接口,而采用了来对所有支持生命周期管理的组件的生命周期各个阶段进行 ...
  • 本文目的 我们来看一个小例子,在一个ASP.NET MVC项目中创建一个控制器Home,只有一个Index: public class HomeController : Controller { public ActionResult Index() { var model = new DemoMo ...
  • 说到跨站资源监控,首先会联想到『Content Security Policy』.既然 CSP 好用,我们何必自己再搞一套呢.那就先来吐槽下 CSP 的缺陷. 目前的 CSP 日志不详细 用过 CSP 的都很郁闷,上报的只有违规的站点名,却没有具体路径.这是缺陷,还是特意的设计? 显然,CSP 是为 ...
  • 在我该系列的之前的所有随笔中,都是采用 Linux 发行版自带的包管理工具(如 apt-get.yum 等)进行软件的安装和卸载,从来没有向大家展示使用源代码自行编译安装软件的方法.但是长期混迹于 Unix/Linux 世界的童鞋们都知道,从源代码自行编译安装软件并不是那么的难,一般都是这样三个步骤 ...
一周排行
  • 今天继续利用准备WSE安全开发文章的空闲时间,完善<.NET深入学习笔记>系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么.为什么.和怎么实现).想必很多人也接触过这两个概念.做过C++的人 ...
  • 晨报讯(记者 孙雨)马云有了权,雅虎有了钱,各自落袋为安.9月18日夜间,阿里巴巴集团(下称阿里)对外宣布,对雅虎76亿美元股权回购计划已全部完成.阿里回购雅虎手中持有的20%阿里股权.同时,阿里将对目前正在使用的技 ...
  • ansible工具:简单的自动化IT工具,具体的就是"批量的在远程服务器上执行命令" ansible的优点: 1 充分利用现有设施.使用 Ansible 无需安装服务端和客户端,只要 SSH 即可 ...
  • 由于没有对参数进行正确过滤,导致SQL注射漏洞 详细说明: http://www.baihc.com/website/news_content.php?id=322&type=1,此URL的ID字段由于没有对 ...
  • (产品|李 谋)微软移动平台的最后机会?在 Windows 10 预览版更新方面,虽然微软每次都更新不多的内容,但架不住微软的高频率更新速度,现在的 Windows 10 Mobile 也越来越接近其本该有的样子了. ...
  • 现在,我们经常都可以看到复杂的JavaScript应用程序,由于这些应用程序变得越来越复杂,一长串的jQuery回调语句或者通过应用程序在 各个状态执行不同的函数调用,这些做法都会变得无法再让人接受,这导致了Java ...
  • 匿名今天再次出来与更多的数据泄露在#OpGoldenDawn的名称.   最近来自波兰经济部如下信息由同一个匿名黑客活动从希腊财政部外交部和 欧安组织 (欧洲安全与合作组织)最近的一次大型泄漏泄漏.   rar包,名 ...
  • 人民网北京3月21日电(记者朱瑶)中国发展高层论坛2009年年会学术峰会今天在北京举行.中国移动通信公司总裁王建宙在下午的企业峰会上表示:金融危机对电信行业的影响很大,农村地区将是中国移动下一步电信发展的大市场. 王 ...
  • 通过微博这个最热门的个性化"话筒",永中科技创始人曹参(现为永中科技副董事长)近日连续向自己的公司"开炮",称永中科技董事长可能非法转移员工及知识产权至新公司永中软件(永中科技 ...
  • c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的:   void f(int n); std::thread t(f, n + 1); t.join(); 但是线程毕竟是属于比较低层次的东 ...