Android开发者指南(1) —— Android Debug Bridge(adb)

 

l <tty> —PPP流中的tty。例如:/dev/omap_csmi_ttyl。

      adb forward tcp:6100 tcp:7100
adb [-d|-e|-s {<serialNumber>}] shell <shellCommand>

  events — 查看事件有关的音讯

 

  原文

可以在其余命令前增进此项,那样的话adb就会等到模拟器或手机设备已经接二连三才会执行命令,例如:

上边是 devices 命令和其执行结果:

在屏幕上输出日志信息

从模拟器或手机中复制一个文本或文件夹(递归的)使用:

指令仅对USB设备有效

l dev:<character device
name>

  查询模拟器或手机状态

      adb [-d|-e|-s <serialNumber>] <command>

stop

    可以使用adb的 pull 和 push 命令从模拟器或手机中复制文件,或者将文件复制到模拟器或手机中。与
install 命令差别,它仅能复制.apk文件到一定的职分, pull 和 push 命令可以复制任意文件夹和文件到模拟器或手机的别样地点。

get-state

         可以应用forward 命令转载端口 — 将一定端口上的呼吁转载到模拟器或手机的例外的端口上。下例是从6100端口转到7100端口:

/system/bin/...

  thread — 仅突显进度:线程和优先级/标记

adb [-d|-e|-s {<serialNumber>}] shell

劳务端项

adb
logcat *:W

get-serialno

l [parm]… — 0到多个PPP/PPPD 选项, 例如 defaultroute, local, notty等等。

forward <local>
<remote>

 

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

  * 服务端部分,是运行在开发用微机上的后台进度,用于管理客户端与运行在模拟器或真机的护理进度通讯。

logcat [<option>]…
[<filter-spec>]…

adb forward tcp:8000 jdwp:472

注意该命令并不等待系统完全启动,因而不可以充实需求在系统完全启动才能执行的指令,例如install 命令要求Android包管理器辅助,但它必须在系统完全启动后才使得。上边的授命

出口adb对象的系列号

export
ANDROID_LOG_TAGS=”ActivityManager:I
MyApp:D *:S”

 * 状态(state) — 连接景况,其值是:

  从远程shell检查sqlite3 数据库

  查看stdout和stderr

adb
logcat ActivityManager:I
MyApp:D
*:S

         即可以在adb命令中行使体系号指定特定的靶子,前文已经涉嫌的devices命令可以完毕查询设备的队列号信息。

  接下去服务端与拥有正在运转的模拟器或手机总是。它经过扫描5555-5585里面的奇数号端口来探寻模拟器或手机,一旦发觉adb守护进程,就因此此端口举办接二连三。要求表明的是,每一个模拟器或手机应用部分平稳的端口,偶数号端口用于控制台连接,奇数号端口用于adb连接,例如:

一声令下仅对运作中的模拟器有效

输出adb设备的场合

l local:<UNIX domain
socket name>

启航或再一次起动模拟器或手机

         启动远程shell使用上边的格式:       

  F — 严重错误

通过USB运行UPP

adb logcat -b radio
[adb] logcat [-b <buffer>]

         Android日志系统提供了从众多应用程序和系统先后中募集和查看调试信息的建制,那个音讯被采集到一系统循环缓冲区中,可以logcat 命令查看和过滤。

终止模拟器或手机

    上述表明式最后的 *:S
用于安装富有标记的日记优先级为S,那样可以确保仅有标志为“View”(译者注:应该为ActivityManager,原文可能是笔误)和“MyApp”的日志被输出,使用 *:S 是可以确保输出符合指定的过滤器设置的一种推荐的办法,那样过滤器就改为了日记输出的“白名单”。

         默许的,Android系统发送 stdout 和 stderr (System.out 和 System.err)
输出到 /dev/null。 在 Dalvik
VM进程,可以将出口复制到日志文件,在那种处境下,系统运用 stdout 和 stderr标记写入日志,优先级是I

输出有效的JDWP进度新闻

  Viewing Alternative Log
Buffers

         每一条日志音信都有一个标志和优先级与其关联。

端口可以采取以下格式表示:

 

选项

描述

-b <buffer>

加载不同的缓冲区日志,例如 event 或radiomain 缓冲区是默认项,参见Viewing Alternative Log Buffers.

-c

清空(刷新)所有的日志并且退出

-d

在屏幕上输出日志并退出

-f <filename>

将日志输出到文件<filename>,默认输出是stdout.

-g

输出日志的大小

-n <count>

设置最大的循环数据<count>,默认是4,需要-r选项

-r <kbytes>

每<kbytes>循环日志文件,默认是16,需要 -f 选项

-s

设置默认的过滤器为无输出

-v <format>

设置输出格式,默认的是brief,支持的格式列表参见Controlling Log Output Format.

  radio — 查看蕴涵在有线/电话相关的缓冲区音讯

 

         扶助对于多数指令是实惠的。

 

    过滤器表明式的格式是tag:priority … ,其中tag是标志, priority是细微的优先级, 该标记标识的具备大于等于指定优先级的音信被写入日志。也足以在一个过滤器表达式中提供七个那样的过滤,它们之间用空格隔开。

 

从模拟器或手机COPY文件到开发机

  * 守护进度部分,运行于模拟器或手机的后台。

一般项

-d

  其他Shell命令

可以利用 forward jdwp:<pid> 转换端口以连接受指定的 JDWP 进度,例如:

I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
adb push <local> <remote>

  设置应用程序

  标记是一个粗略的字符串,用于标识原始信息的来源
(例如”View”
来源于显示系统)。

  * 客户端部分,运行在付出用的电脑上,可以在指令行中运行adb命令来调用该客户端,像ADB插件和DDMS那样的Android工具也得以调用adb客户端。

 
例如利用 thread 输出格式:

  下载

在屏幕上输出骨干调试新闻

备注

         一旦运行了 sqlite3,就足以选择 sqlite3 命令,退出并赶回远程shell可以使用 exit 或 CTRL+D。

描述

  Android调试桥接器,简称adb,是用以管理模拟器或真机状态的全能工具,选择了客户端-服务器模型,包含七个部分:

 adb devices

dumpsys

  S — 无记载
(最高优先级,没有啥样会被记载)

声明

         Android日志系统为日志音讯保持了多个循环缓冲区,而且不是持有的消息都被发送到默许缓冲区,要想查看那个附加的缓冲区,可以应用-b 选项,以下是足以指定的缓冲区:

         最简便易行利用monkey的格局是因此上边的命令行,它可以运行指定的应用程序并向其发送500个伪随机事件。

说明

    博客园:http://www.cnblogs.com/

adb -s emulator-5556 install helloWorld.apk

 

l jdwp:<pid>

  -b 选项的用法:

         精晓adb服务端连接的模拟器或手机可以帮衬更好的选取adb命令,那可以通过devices命令列举出来:

在对象模拟器或手机上启动远程SHELL

  优先级是底下的字符,顺序是从低到高:

start-server

Shell 命令

从开销机COPY指定的文件到模拟器或手机

比方不点名设备就会回去错误

  
翻译组已同时协会翻译API和开发者指南,并计划出开发者指南的合集,现正边搜集边翻译,臆想4/十二月份出第三个合集,欢迎大家共同参加,并与大家分享您的进度,点这里下载,发邮件告诉大家你翻译的章节。

 

devices

  raw — 突显原始的日记音信,没有其余的元数据字段

 

设置应用程序(用全体路径指定.apk文件)

  中转端口

 

  V — 明细
(最低优先级)

  D — 调试

  本章内容为开发者指南(Dev
Guide)/Developing/Tools/adb,这是一篇越发美好的译稿,翻译来自”移动云_文斌”,欢迎访问它的博客:”http://blog.csdn.net/caowenbin“,再一次谢谢”移动云_文斌”
!期待您一头加入翻译Android的连锁资料,联系自身over140@gmail.com。

  与模拟器或手机传输文件

  可以运用 -v启动 logcat来决定日志格式:

甘休服务端进度

  使用adb命令

 

出口adb援救的吩咐

 [serialNumber] [state]

在屏幕上出示系统数据

# logcat

         下表列出了无数卓有成效的adb
shell命令,完整的列表可以因而启动模拟器并且应用adb
–help命令获取。

start

  I — 信息

  当启动adb客户端时,客户端首先检测adb服务端进度是或不是运行,即便没有运行,则启动服务端。当服务端启动时,它会绑定到当地的TCP5037端口,并且监服从adb客户端发来的吩咐——所有的adb客户端都施用5037端口与adb服务端通讯。

 

     可以在开发机中通过远程shell的方式使用logcat命令查看日志输出:

会在模拟器或手机与adb发生一而再后就举行install,但系统还未曾完全启动,所以会挑起错误。

  执行Shell命令

  Android Debug Bridge

         在未进入远程shell的气象下得以按下述格式执行单条命令:

 

  long —突显所有的元数据字段并且用空行分隔信息内容

  欢迎转发,但请保留小说原来出处:)

         从开发用微机的命令行或脚本文件中动用adb命令的用法是:

 

 

 

正文

The Dalvik Debug Monitor
Service

(DDMS) 工具提供了更便于使用的智能的调剂环境。

Shell

     系统会保留这一设置直到模拟器或手机退出,也可以在配备中追加/data/local.prop以使得这一设备成为默许配置。

  Logcat命令选项列表

         在少数意况下,可能须要为止然后重启服务端进度,例如adb不响应命令的时候,可以透过重启解决难点。

         日志音信在标记和优先级之外还有不少元数据字段,那一个字段可以由此改动出口格式来支配输出结果, -v 选项加上上面列出的始末可以决定输出字段:

    可以利用adb从支付用电脑中复制应用程序并且安装到模拟器或手机上,使用install命令即可,在那么些命令中,必须指定待安装的.apk文件的路线:

    复制一个文件或文件夹(递归的)到模拟器或手机中应用:

         查看和跟踪系统日志缓冲区的指令logcat的相似用法是:

  main — 查看主缓冲区
(默许缓冲区)

     通过运行logcat ,可以得到一个系统中利用的标志和预先级的列表,观看列表的前两列,给出的格式是<priority>/<tag>。

    Android汉语翻译组:http://goo.gl/6vJQl

 

 offline — 未连接或未响应

 

      需求小心的是,若是应用了-s而尚未点名设备的话,adb会报错。

 

pull <remote> <local>

  停止adb服务

adb shell ls /system/bin

    注意,假设选取了设置有ADT插件的Eclipse开发条件,就不需求直接使用adb或aapt命令来设置应用程序了,ADT插件可以活动已毕这一个操作。

         例如:

adb install <path_to_apk>

 

脚本项

 

shell

为报告bug,在屏幕上输出dumpsys, dumpstate和 logcat数据

    退出远程shell时使用CTRL+D 或 exit 终止会话。

    关于创造可设置的利用的越多音信,请参见Android
Asset Packaging
Tool

(aapt).

         
PDF:Android开发者指南——adb(移动云_文斌)

[adb] logcat [<option>] ... [<filter-spec>] ...

    上边的公布是展现所有优先级大于等于“warning”的日记:

参见 Querying for
Emulator/Device
Instances
以赢得越来越多音讯。

 

 

    必要专注的是,如若是在长距离shell或是使用adb shell logcat 命令运行logcat , ANDROID_LOG_TAGS 不会导出到模拟器或手机设备上。

  E — 错误

每一个设施的输出形如:

   下文介绍过滤器和下令选项,详细内容可参见Listing
of logcat Command
Options

端口和网络项

bugreport

    如果想要减弱输出的内容,可以增进过滤器表达式举办限定,过滤器可以限制系统只输出感兴趣的标记-优先级组合。

 

  过滤日志输出

输出所有涉及的模拟器或手机配备列表

ppp <tty> [parm]…

$ adb devices

List of devices attached 

emulator-5554  device

emulator-5556  device

emulator-5558  device

kill-server

卡住执行直到设备已经再三再四,即设备景况是
device.

 

可选项

$ adb shell monkey -v -p your.package.name 500

一声令下仅对adb关联的一定种类号的模拟器或手机有效(例如 “emulator-5556”).

     那里是一个日志输出的新闻,优先级是“I”,标记是“ActivityManager”:

install <path-to-apk>

     关于monkey更加多的采取及详细信息,请参见UI/Application
Exerciser
Monkey

 

  使用 logcat 命令

 

         通过中距离shell,可以选用sqlite3指令行程序来治本由应用程序创设的SQLite数据库。 sqlite3 工具包蕴众多实用的吩咐,例如 .dump 用于出口表格的情节,.schema 用于为曾经存在的表输出 SQL CREATE
语句。 并且该工具也提供了一同执行SQLite命令的力量。

         当使用的时候,程序会调用adb客户端。因为adb客户端不必要关联到任何模拟器,所以只要有五个模拟器或手机正在运转,就必要利用-d参数指定要操作的是哪一个,更加多关于那些接纳参数的选用可以参见Directing
Commands to a Specific Emulator/Device Instance。

         Adb提供了shell来在模拟器或手机上运行各样各个的吩咐,这么些命令的二进制格局存在于那些途径中:

$ adb logcat

         使用 sqlite3时,向前文讲述的那么进入模拟器的长距离shell,然后利用sqlite3 命令。也得以在调用 sqlite3时指定数据库的全路径。SQLite3数据库存储在/data/data/<package_name>/databases/路径下。

只要有多个USB设备就会重返错误

从当地端口转换连接到模拟器或手机的指定端口

         下文介绍了足以用来管理模拟器或手机的那个adb命令。要是是在Eclipse并且安装了ADT插件的条件下开发Android应用程序,就不须要从命令行使用adb了,ADT插件已经提供了晶莹剔透的合一。可是,仍是可以在调节等需要的时候一贯运用adb。

  例如查看radio缓冲区:

  process — 仅体现进度PID

命令

  tag — 仅呈现优先级/标记

 

 

         也可以利用UNIX命名的socket标识:

Emulator 1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557 …

$ adb -s emulator-5554 shell

# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db

SQLite version 3.3.12

Enter ".help" for instructions

.... enter commands, then quit...

sqlite> .exit 

备注

  接纳logcat查看日志

 

         示例:

jdwp

 

adb push foo.txt /sdcard/foo.txt
[adb] logcat [-v <format>]
adb -s <serialNumber> <command> 

 

         当服务端与拥有的模拟器建立连接之后,就可以应用adb命令来决定或者访问了。因为服务端管理着连连并且可以吸纳到从五个adb客户端的吩咐,所以可以从其他一个客户端或脚本来控制其余模拟器或手机配备。

l tcp:<portnum>

只顾不用自行启动PPP连接

数据项

 

  W — 警告

 

         执行结果是adb为每一个设施出口以下情状音信:

$ adb shell stop

$ adb shell setprop log.redirect-stdio true

$ adb shell start

  adb命令列表

调试项

类别

 

 

 

 

  注意只好在 -v 选项中指定一种格式。

检测adb服务过程是不是启动,倘诺没启动则启动它。

dmesg

         即只要模拟器与adb在5555端口连接,则其与控制台的连年就是5554端口。

在目的模拟器或手机上举行shellCommand然后退出远程SHELL

输出adb的版本号

要是有三个运行中的模拟器就会回到错误

jdb -attach localhost:8000

adb logcat -v thread

    借使在付出用微机上运行 logcat 
(相对于运作运程shell而言),也足以经过ANDROID_LOG_TAGS环境变量设置默许的过滤器表明式:

    上面给出的例子是仅输出标记为“ActivityManager”并且优先级大于等于“Info”和符号为“MyApp”并且优先级大于等于“Debug”的日志:

 device —已经两次三番到服务商。注意那么些意况并不意味着Android系统现已完全启动起来,系统启动的长河中一度足以连接adb,但以此状态是健康的可操作状态。

  支配日志格式

  * 体系号(serialNumber) — 由adb创制的选拔控制台端口号的用于唯一标识一个模拟器或手机配备的字符串,格式是
<设备项目>-<端口号>,例如: emulator-5554

         Monkey是运作于模拟器或手机上的一个程序,通过变化伪随机的大度的系统级的用户事件流来模拟操作,包含单击、触摸、手势等。从而为正值开发中的应用程序通过任意响应进行压力测试。

  time — 显示日期,调用时间,优先级/标记,PID

参见 Issuing Shell
Commands
以博取更多音信。

 

         要想使用那种措施赢得输出,须要为止运行中的模拟器或手机,然后选择命令 setprop 来允许输出重定位,示例如下:

wait-for-device

adb pull <remote> <local>
      adb forward tcp:6100 local:logd 

输出日志讯息

  brief — 展现优先级/标记和原来进度的PID (默许格式)

结束

         即使有三个模拟器或手机正在运作,当使用adb命令的时候就需求指定目标设备,那足以因此运用-s选项参数落成,用法是:

  操作指定的模拟器或手机

         无论是不是进入adb远程shell,都得以利用 shell 命令来执。

push <local> <remote>

    例如:

         下表列出了所有adb帮忙的下令及其表达:

设若没有模拟器或手机在运作,这一场所重返的是no device。

version

 

         使用kill-server可以告一段落服务端,然后采取别的的adb命令重启。

 

     倘诺是在长距离shell中可直接使用命令:

将气象输出到文件

参见 Querying for
Emulator/Device
Instances

以取得更加多新闻。

logcat [<option>]
[<filter-specs>]

help

-s <serialNumber>

shell [<shellCommand>]

    以下是足以采用的shell命令的越多音信。

前言

dumpstate

  应用Monkey举行UI或应用程序测试

-e

    在这些命令中<local>和<remote>引用的是文件或文件夹的不二法门,在支付用总计机上的是local,在模拟器或手机上的是remote。

网站地图xml地图