一、定义与作用:
ADB全称Android Debug Bridge, 就是起到调试桥的作用。是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备,默认情况下当我们运行Eclipse时adb进程就会自动运行。当然我们也可以在外部使用本身自带的一些命令,进行操控模拟器或者真实的设备。adb一般位于<sdk>/platform-tools/目录下,其中<sdk>是android sdk的安装目录。它的主要功能有:
(1)快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
(2)在设备上运行Shell命令;
(3)管理设备或手机模拟器上的预定端口;
(4)在设备或手机模拟器上复制或粘贴文件。
二、配置环境变量:
1,打开环境变量配置窗口。右击计算机,属性-高级系统设置-环境变量。
2.下面你可以建一个单独的变量,也可以直接在path后面直接追加,主要是个人习惯吧。要注意的是一定要指定目录为:D:\Android\Android-sdks\tools。这是我的目录
3.编辑成功运行的结果如下图:
三、代码的使用
1、
adb version 版本信息
C:\Users\Administrator>adb version
Android Debug Bridge version 1.0.31
2、
安装与卸载应用
可以通过install命令来从development computer安装一个应用到emulator/device上。
usage: adb install <path_of_apk>
通过uninstall命令可以卸载已经安装的软件。
1.usage: adb uninstall name-of-app-package
其中name-of-app-package是/data/data目录下的安装包。
2.手动删除
adb shell
cd /data/app
rm app.apk
3、
.复制文件
可以使用adb pull ,push 命令将文件复制到一个模拟器/设备实例的数据文件或是从数据文件中复制。install 命令只将一个apk文件复制到一个特定的位置,与其不同的是,pull 和 push 命令可让用户复制任意的目录和文件到一个模拟器/设备实例的任何位置。
从模拟器或者设备中复制文件或目录,使用如下命:
adb pull <remote> <local>
将文件或目录复制到模拟器或者设备,使用如下命令:
adb push <local> <remote>
在这些命令中, <local> 和<remote> 分别指通向自己的发展机(本地)和模拟器/设备实例(远程)上的目标文件/目录的路径。
下面是一个例子::
adb push foo.txt /sdcard/foo.txt
4、
从电脑上发送文件到设备
adb push <本地路径> <远程路径>
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)
5、
从设备上下载文件到电脑
adb pull <远程路径> <本地路径>
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑
6、
查看设备
adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
7、adb logcat 使用logcat命令
8、
过滤日志输出
每一个输出的Android日志信息都有一个标签和它的优先级.
- 日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就是查看系统的标签).
- 优先级有下列集中,是按照从低到高顺利排列的:
V
— Verbose (lowest priority)D
— DebugI
— InfoW
— WarningE
— ErrorF
— FatalS
— Silent (highest priority, on which nothing is ever printed)
9、
控制日志输出格式
日志信息包括了许多元数据域包括标签和优先级。可以修改日志的输出格式,所以可以显示出特定的元数据域。可以通过 -v
选项得到格式化输出日志的相关信息.
brief
— Display priority/tag and PID of originating process (the default format).process
— Display PID only.tag
— Display the priority/tag only.thread
— Display process:thread and priority/tag only.raw
— Display the raw log message, with no other metadata fields.time
— Display the date, invocation time, priority/tag, and PID of the originating process.long
— Display all metadata fields and separate messages with a blank lines.
当启动了logcat
,你可以通过-v
选项来指定输出格式:
[adb] logcat [-v <format>]
下面是用 thread
来产生的日志格式:
adb logcat -v thread
需要注意的是你只能-v
选项来规定输出格式 option.
10、
启动shell命令
Adb 提供了shell端,通过shell端你可以在模拟器或设备上运行各种命令。这些命令以2进制的形式保存在本地的模拟器或设备的文件系统中:
/system/bin/...
不管你是否完全进入到模拟器/设备的adb远程shell端,你都能 shell
命令来执行命令.
当没有完全进入到远程shell的时候,这样使用shell
命令来执行一条命令:
adb [-d|-e|-s {<serialNumber>}] shell <shellCommand>
在模拟器/设备中不用远程shell端时,这样使用shell
命 :
adb [-d|-e|-s {<serialNumber>}] shell
通过操作CTRL+D
或exit
就可以退出shell远程连接.
下面一些就将告诉你更多的关于shell命令的知识.
adb 命令表
下列表格列出了adb支持的所有命令,并对它们的意义和使用方法做了说明.
Category |
Command |
Description |
Comments |
Options |
-d |
仅仅通过USB接口来管理abd |
如果不只是用USB接口来管理则返回错误 |
-e |
仅仅通过模拟器实例来管理adb |
如果不是仅仅通过模拟器实例管理则返回错误 |
|
-s <serialNumber> |
通过模拟器/设备的允许命令号码来发送命令来管理adb (如“emulator-5556″) |
如果没有指定号码,则会报错 |
|
General |
devices |
查看所有连接模拟器/设备的设施的清单 |
查看 Querying for Emulator/Device Instances 获取更多相关信息 |
help |
查看adb所支持的所有命令 |
||
version |
查看adb的版本序列号 |
||
Debug |
logcat [<option>] [<filter-specs>] |
将日志数据输出到屏幕上 |
|
bugreport |
查看bug的报告,如dumpsys ,dumpstate ,和logcat 信息 |
||
jdwp |
查看指定设施的可用的JDWP信息 |
可以用 forward jdwp:<pid>端口映射信息来连接指定的JDWP进程,例如: adb forward tcp:8000 jdwp:472 jdb -attach localhost:8000 |
|
Data |
install <path-to-apk> |
安装Android为(可以模拟器/设施的数据文件.apk指定完整的路径) |
|
pull <remote> <local> |
将指定的文件从模拟器/设施拷贝到计算机上 |
||
push <local> <remote> |
将指定的文件从计算机上拷贝到模拟器/设备中 |
||
Ports and Networking |
forward <local> <remote> |
用本地指定的端口通过Socket方法远程连接模拟器/设施 |
端口需要描述下列信息:
|
ppp <tty> [parm]… |
通过USB运行ppp:
需要提醒的不能自动启动PDP连接 |
||
Scripting |
get-serialno |
查看adb实例的序列号 |
查看 Querying for Emulator/Device Instances 可以获得更多信息 |
get-state |
查看模拟器/设施的当前状态 |
||
wait-for-device |
如果设备不联机就不让执行,也就是实例状态是 device 时 |
可以提前把命令转载在adb的命令器中,在命令器中的命令在模拟器/设备连接之前是不会执行其他命令的,示例如下: adb wait-for-device shell getprop 需要提醒的是,这些命令在所有的系统启动起来之前是不会启动adb的,所以在所有的系统启动起来之前也不能执行其他的命令,例如,运用install 的时候就需要Android包,这些包需要系统完全启动,例如: adb wait-for-device install <app>.apk 上面的命令只有连接上了模拟器/设备连接上了adb服务才会被执行,而在Android系统完全启动前执行就会有错误发生 |
|
Server |
start-server |
选择服务是否启动adb服务进程 |
|
kill-server |
终止adb服务进程 |
||
Shell |
shell |
通过远程Shell命令来控制模拟器/设备实例 |
查看获取更多信息 for more information |
shell [<shellCommand>] |
连接模拟器/设施执行Shell命令,执行完毕后退出远程Shell端l |