Android__ADB_操作命令.docx

来源:互联网 发布:奥斯卡软件证书 编辑:程序博客网 时间:2024/04/27 17:37

ADB(Android Debug Bridge)

说明:下面一些命令需要有root权限才能执行成功

快速启动dos窗口执行adb:

1.adb.exe所在路径添加到系统环境变量中

2. 配置快捷键启动dos

进入C:\WINDOWS\system32目录下,找到cmd.exe.

右击菜单 "发送到" -> 桌面快捷方式。

在桌面上右击"快捷方式 到 cmd.exe" -> "属性" -> "快捷方式"页

-> 光标高亮"快捷键" -> 按下自定义快捷键 (如:Ctrl + Alt + Z)

 

任何情况下,按下Ctrl + Alt + Z启动dos窗口就可以执行adb命令了

 

 

-----------查看设备连接状态 系列-----------

adbget-serialno   获取设备的ID和序列号serialNumber

adbdevices 查询当前计算机上连接那些设备(包括模拟器和手机),输出格式: [serialNumber] [state]

adb get-state  查看模拟器/设施的当前状态.

 

说明:

序列号[serialNumber]——由adb创建的一个字符串,这个字符串通过自己的控制端口<type>-<consolePort>

唯一地识别一个模拟器/设备实例。一个序列号的例子: emulator-5554

 

-----------发送命令到设备 系列-----------

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

-d 发送命令给usb连接的设备

-e 发送命令到模拟器设备

-s <serialNumber>发送命令到指定设备

 

如启动手机设备shell: adb -d shell 

 

adbforward <local> <remote>发布端口,可以设置任意的端口号,

做为主机向模拟器或设备的请求端口。如:adb forward tcp:5555 tcp:8000

 

adbreboot 重启手机

adbremount 将system分区重新挂载为可读写分区

adbkill-server 终止adb服务进程

adbstart-server 重启adb服务进程

adb root 已root权限重启adb服务

adbwait-for-device 在模拟器/设备连接之前把命令转载在adb的命令器中

adb jdwp 查看指定的设施的可用的JDWP信息.

可以用 forward jdwp:<pid> 端口映射信息来连接指定的JDWP进程.例如:

adbforward tcp:8000 jdwp:472

jdb-attach localhost:8000

 

adb shellam 命令可以启动应用程序

 

adb shellinput text <string>  向设备输入文本(光标所在的文本框)

adb shellinput keyevent <event_code> 向设备发送按键事件

如:      

在编辑短信时,往文本框输入文本:adb shell input text "hello" 

向手机发送键值回Home:adb shell input keyevent 3

event_code参考view/KeyEvent.java中的  KEYCODE_*

    public static final int KEYCODE_SOFT_LEFT       = 1;

    public static final intKEYCODE_SOFT_RIGHT      = 2;

    public static final int KEYCODE_HOME            = 3;

    public static final int KEYCODE_BACK            = 4;

    public static final int KEYCODE_CALL            = 5;

    public static final intKEYCODE_ENDCALL         = 6;

   

-----------安装卸载 系列-----------

adbinstall [-l] [-r] <file> - push this package file to the device andinstall it

                               ('-l' meansforward-lock the app)

                               ('-r' meansreinstall the app, keeping its data)

adbuninstall [-k] <package> - remove this app package from the device

                               ('-k' means keepthe data and cache directories)

如:

adbinstall d:\hello.apk

adbunstall com.huawei.hello

说明:如果带-r选项重新安装apk时,安装在 /data/local/tmp/目录下,手机重启后还是使用原来的apk.

 

-----------文件操作 系列-----------

adb push<local> <remote>    - copyfile/dir to device

adb pull<remote> <local>    - copyfile/dir from device

 

-----------基本linux shell命令 系列-----------

adb shell[command]

ls 列出目录下的文件和文件夹

cd 切换目录

rm 删除目录和文件

cat  查看文件内容

ps 可以看那个进程再跑

ps -x[PID] 查看单个进程的状态

top 可以看那个进程的占用率最高

su 切换到root用户

kill[pid] 杀死一个进程

chmod 777<file> 修改该文件为可执行权限

 

详细使用情况可以登录一台Linux服务器在shell下查看帮助手册,  man <command>

 

-----------查看系统状态和信息 系列-----------

adb shellprocrank 查询各进程内存使用情况

adb shellservice list 查看services信息

adb shellcat /proc/meminfo 查看当前的内存情况

adb shellcat /proc/cpuinfo 查看CPU信息(硬件)

adb shellcat /proc/iomem  查看IO内存分区

 

adb shellgetprop 列出系统所有属性

adb shellgetprop | findstr "gsm" 列出包含gsm的属性

adb shellsetprop <key> <value>  修改系统属性

 

adb shellsqlite3 可以执行sql语句查看数据库信息, 具体使用情况待调查

 

-----------Log系列-----------

adblogcat [ <filter-spec> ] - View device log

 

1~~~~~~~~~~~查看可用日志缓冲区:

adblogcat -b radio — 查看缓冲区的相关的信息.

adblogcat -b events — 查看和事件相关的的缓冲区.

adblogcat -b main — 查看主要的日志缓冲区

 

2~~~~~~~~~~~过滤日志输出:

过滤器语句按照下面的格式描tag:priority... , tag 表示是标签, priority 是表示标签的报告的最低等级

adblogcat *:W  显示优先级为warning或更高的日志信息

adblogcat ActivityManager:I MyApp:D *:S

 

日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就是查看系统的标签).

优先级有下列集中,是按照从低到高顺利排列的:

V —Verbose (lowest priority)

D — Debug

I — Info

W —Warning

E — Error

F — Fatal

S —Silent (highest priority, on which nothing is ever printed)

 

如果你电脑上运行logcat ,相比在远程adbshell端,你还可以为环境变量ANDROID_LOG_TAGS :输入一个参数来设置默认的过滤

exportANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

需要注意的是ANDROID_LOG_TAGS 过滤器如果通过远程shell运行logcat 或用adb shell logcat 来运行模拟器/设备不能输出日志.

 

3~~~~~~~~~~~控制日志输出格式:

日志信息包括了许多元数据域包括标签和优先级。可以修改日志的输出格式,所以可以显示出特定的元数据域。可以通过 -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 originatingprocess.

long —Display all metadata fields and separate messages with a blank lines.

当启动了logcat ,你可以通过-v 选项来指定输出格式:

 

[adb]logcat [-v <format>]

下面是用 thread 来产生的日志格式:

 

adblogcat -v thread

需要注意的是你只能-v 选项来规定输出格式 option.

 

4~~~~~~~~~~~Logcat命令列表

-b<buffer>  加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers. 

-c  清楚屏幕上的日志. 

-d  输出日志到屏幕上.

-f<filename>  指定输出日志信息的<filename> ,默认是stdout .

-g  输出指定的日志缓冲区,输出后退出. 

-n<count>  设置日志的最大数目<count> .,默认值是4,需要和 -r 选项一起使用。

-r<kbytes>  每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用. 

-s  设置默认的过滤级别为silent. 

-v<format>  设置日志输入格式,默认的是brief 格式,要知道更多的支持的格式,参看Controlling Log Output Format 

 

 

adbbugreport                - return allinformation from the device

                                 that should beincluded in a bug report.

 

adb shelldmesg     查询内核缓冲区信息

adb shelldumpstate 各类信息,比如进程信息,内存信息,进程是否异常,kernnel的log等

adb shelldumpcrash

adb shelldumpsys  查询所有service的状态

 

 

-----------其他 -----------

 

模拟器使用镜像sdcard

用SDK里的mksdcard工具来创建FAT32磁盘镜像并在模拟器启动时加载它。这样创建镜像:? mksdcard <size> <file>,

比如我要创建一个64M的SD卡模拟文件,文件路径是在D:\workspace\sdcard.img

             mksdcard  64000000 D:\workspace\sdcard.img

 

Emulator  –sdcard D:\workspace\sdcard.img

或者在eclipse的run菜单的open run dialog对话框中配置启动参数。

 

#top

Usage:top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [-h ]

    -m num Maximum number of processes to display.

    -n num Updates to show before exiting.

    -d num Seconds to wait between updates.

    -s col Column to sort by (cpu,vss,rss,thr).

    -t     Show threads instead of processes.

    -h     Display this help screen.

   

   ********* simple selection *********  ********* selection by list *********

-A allprocesses                      -C bycommand name

-N negateselection                   -G by realgroup ID (supports names)

-a all w/tty except session leaders  -U by realuser ID (supports names)

-d allexcept session leaders         -g bysession OR by effective group name

-e allprocesses                      -p byprocess ID

T  all processes on this terminal     -s processes in the sessions given

a  all w/ tty, including other users  -t by tty

g  OBSOLETE -- DO NOT USE             -u by effective user ID (supportsnames)

r  only running processes             U processes for specified users

x  processes w/o controlling ttys     t by tty

***********output format **********  ***********long options ***********

-o,ouser-defined  -f full            --Group --User --pid --cols --ppid

-j,j jobcontrol   s  signal          --group --user --sid --rows --info

-O,Opreloaded -o  v  virtual memory  --cumulative --format --deselect

-l,llong          u  user-oriented  --sort --tty --forest --version

-F   extra full   X  registers       --heading --no-heading --context

                    ********* misc options*********

-V,V  show version      L list format codes  f  ASCII art forest

-m,m,-L,-T,H  threads  S  children in sum    -y change -l format

-M,Z  security data     c true command name  -c schedulingclass

-w,w  wide output       n numeric WCHAN,UID  -H processhierarchy

 

 

netstat-ano 查看网络连状态

 显示协议统计信息和当前 TCP/IP 网络连接。

 

NETSTAT[-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]

 

  -a           显示所有连接和监听端口。

  -b           显示包含于创建每个连接或监听端口的

                可执行组件。在某些情况下已知可执行组件

                拥有多个独立组件,并且在这些情况下

                包含于创建连接或监听端口的组件序列

                被显示。这种情况下,可执行组件名

                在底部的 [] 中,顶部是其调用的组件,

                等等,直到 TCP/IP 部分。注意此选项

                可能需要很长时间,如果没有足够权限

                可能失败。

  -e           显示以太网统计信息。此选项可以与 -s

                选项组合使用。

  -n           以数字形式显示地址和端口号。

  -o           显示与每个连接相关的所属进程 ID。

  -p proto     显示 proto 指定的协议的连接;proto 可以是

                下列协议之一: TCP、UDP、TCPv6 或 UDPv6。

                如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:

                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。

  -r           显示路由表。

  -s           显示按协议统计信息。默认地,显示 IP、

                IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;

                -p 选项用于指定默认情况的子集。

  -v           与 -b 选项一起使用时将显示包含于

                为所有可执行组件创建连接或监听端口的

                组件。

  interval     重新显示选定统计信息,每次显示之间

                暂停时间间隔(以秒计)。按 CTRL+C 停止重新

                显示统计信息。如果省略,netstat 显示当前

                配置信息(只显示一次)

               

               

pm

usage: pm[list|path|install|uninstall]

       pm list packages [-f]

       pm list permission-groups

       pm list permissions [-g] [-f] [-d] [-u][GROUP]

       pm list instrumentation [-f][TARGET-PACKAGE]

       pm list features

       pm path PACKAGE

       pm install [-l] [-r] [-t] [-iINSTALLER_PACKAGE_NAME] PATH

       pm uninstall [-k] PACKAGE

       pm enable PACKAGE_OR_COMPONENT

       pmdisable PACKAGE_OR_COMPONENT

 

The listpackages command prints all packages. Options:

  -f: see their associated file.

 

The listpermission-groups command prints all known

permissiongroups.

 

The listpermissions command prints all known

permissions,optionally only those in GROUP.  Options:

  -g: organize by group.

  -f: print all information.

  -s: short summary.

  -d: only list dangerous permissions.

  -u: list only the permissions users will see.

 

The listinstrumentation command prints all instrumentations,

or onlythose that target a specified package. Options:

  -f: see their associated file.

 

The listfeatures command prints all features of the system.

 

The pathcommand prints the path to the .apk of a package.

 

Theinstall command installs a package to the system.  Options:

  -l: install the package with FORWARD_LOCK.

  -r: reinstall an exisiting app, keeping itsdata.

  -t: allow test .apks to be installed.

  -i: specify the installer package name.

 

Theuninstall command removes a package from the system. Options:

  -k: keep the data and cache directoriesaround.

after thepackage removal.

 

Theenable and disable commands change the enabled state of

a givenpackage or component (written as "package/class").

 

   

查看stdout 和stderr

在默认状态下,Android系统有stdout 和 stderr (System.out和System.err )输出到/dev/null ,

在运行Dalvik VM的进程中,有一个系统可以备份日志文件。在这种情况下,系统会用stdout 和stderr 和优先级 I.来记录日志信息

 

通过这种方法指定输出的路径,停止运行的模拟器/设备,然后通过用setprop 命令远程输入日志

 

$ adbshell stop

$ adbshell setprop log.redirect-stdio true

$ adbshell start系统直到你关闭模拟器/设备前设置会一直保留,可以通过添加/data/local.prop 可以使用模拟器/设备上的默认设置

 

UI/软件 试验程序 Monkey

当Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,

它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件.

最简单的方法就是用用下面的命令来使用Monkey,这个命令将会启动你的软件并且触发500个事件.

 

$ adbshell monkey -v -p your.package.name 500

更多的关于命令Monkey的命令的信息,可以查看UI/Application Exerciser Monkey documentation page.

 

0 0
原创粉丝点击