Official Page
http://developer.android.com/tools/help/adb.html
logcat
adb logcat -b radio -b main -v time
bugreport
Prints dumpsys, dumpstate, and logcat data to the screen, for the purposes of bug reporting.shell
input
输入touch,key等事件。
The sources are: trackball joystick touchnavigation mouse keyboard gamepad touchpad dpad stylus touchscreen The commands and default sources are: text <string> (Default: touchscreen) keyevent [--longpress] <key code number or name> ... (Default: keyboard) tap <x> <y> (Default: touchscreen) swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen) press (Default: trackball) roll <dx> <dy> (Default: trackball)
- 例1,输入按键enter key
adb shell input keyevent 66
- 例2,输入滑动操作
adb shell input touchscreen swipe 18 665 18 350
getevent
- 获取底层驱动上报的touch,key等事件:
adb shell getevent
输出:
add device 1: /dev/input/event0 name: "mtk-kpd" add device 2: /dev/input/event4 name: "mtk-tpd-kpd" could not get driver version for /dev/input/mouse0, Not a typewriter add device 3: /dev/input/event3 name: "mtk-tpd" add device 4: /dev/input/event2 name: "hwmdata"
- 命令帮助:
adb shell getevent -h
输出:
Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device] -t: show time stamps -n: don't print newlines -s: print switch states for given bits -S: print all switch states -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64) -d: show HID descriptor, if available -p: show possible events (errs, dev, name, pos. events) -i: show all device info and possible events -l: label event types and names in plain text -q: quiet (clear verbosity mask) -c: print given number of events then exit -r: print rate events are received
- 用法示例,获取TP事件:
archermind@aclgcl-ubnt:~$ adb shell getevent -lt /dev/input/event3 [1406014816.720040] EV_KEY BTN_TOUCH DOWN [1406014816.720048] EV_ABS ABS_MT_POSITION_X 000000f2 [1406014816.720051] EV_ABS ABS_MT_POSITION_Y 000001f3 [1406014816.720054] EV_SYN SYN_MT_REPORT 00000000 [1406014816.720056] EV_SYN SYN_REPORT 00000000 [1406014816.729482] EV_ABS ABS_MT_POSITION_X 000000f2 [1406014816.729490] EV_ABS ABS_MT_POSITION_Y 000001f3 [1406014816.729493] EV_SYN SYN_MT_REPORT 00000000 [1406014816.729495] EV_SYN SYN_REPORT 00000000 [1406014816.740365] EV_ABS ABS_MT_POSITION_X 000000f2
dumpsys
获取系统中的各种运行状态,此命令的功能非常强大,是调试和解bug必备之助手,支持的功能如下:
- memory使用情况:
adb shell dumpsys meminfo
- ext:分析memory问题时,可抓取以下信息:
adb shell dumpsys meminfo > dumpsys_meminfo.txt adb shell cat /sys/kernel/debug/ion/ion_mm_heap > ion_mm_heap.txt adb shell cat /proc/mali/memory_usage > memory_usage.txt adb shell ps > ps.txt adb shell cat /proc/vmallocinfo > vmallocinfo.txt adb shell cat /proc/zoneinfo > zoneinfo.txt adb shell cat /proc/meminfo > proc_meminfo.txt
- 其中ps命令,查到某个可以进程后取得其进程号,查看maps信息:
adb shell cat /proc/<pid>/maps
- CPU使用情况:
adb shell dumpsys cpuinfo
- 列出使用过的应用统计,打开过的次数和时间。
adb shell dumpsys usagestats
- showing memory details for processes running in the background over the past ~3 hours.
adb shell dumpsys procstats [--hours 3]
adb shell dumpsys activity log a on adb shell dumpsys adb shell dumpsys activity activities adb shell dumpsys wifi adb shell dumpsys cpuinfo adb shell dumpsys meminfo [packagename] 1 SurfaceFlinger 2 accessibility 3 account 4 activity 5 alarm 6 appwidget 7 audio 8 backup 9 battery 10 batteryinfo 11 bluetooth 12 bluetooth_a2dp 13 clipboard 14 connectivity 15 content 16 cpuinfo 17 device_policy 18 devicestoragemonitor 19 diskstats 20 dropbox 21 entropy 22 ethernet 23 hardware 24 input_method 25 iphonesubinfo 26 isms 27 keybar 28 location 29 media.audio_flinger 30 media.audio_policy 31 media.camera 32 media.player 33 meminfo 34 mount 35 netstat 36 network_management 37 notification 38 package 39 permission 40 phone 41 power 42 search 43 sensorservice 44 simphonebook 45 statusbar 46 telephony.registry 47 throttle 48 uimode 49 usagestats 50 vibrator 51 wallpaper 52 wifi 53 window 54 gfxinfo
pm
Using package manager
- 例:列出设备上所有的package:
adb shell pm list packages -f
更多的功能可以参考以下帮助:
usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER] pm list permission-groups pm list permissions [-g] [-f] [-d] [-u] [GROUP] pm list instrumentation [-f] [TARGET-PACKAGE] pm list features pm list libraries pm list users pm path PACKAGE pm dump PACKAGE pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] [--originating-uri <URI>] [--referrer <URI>] PATH pm uninstall [-k] PACKAGE pm clear [--user USER_ID] PACKAGE pm enable [--user USER_ID] PACKAGE_OR_COMPONENT pm disable [--user USER_ID] PACKAGE_OR_COMPONENT pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT pm disable-until-used [--user USER_ID] PACKAGE_OR_COMPONENT pm block [--user USER_ID] PACKAGE_OR_COMPONENT pm unblock [--user USER_ID] PACKAGE_OR_COMPONENT pm grant PACKAGE PERMISSION pm revoke PACKAGE PERMISSION pm set-install-location [0/auto] [1/internal] [2/external] pm get-install-location pm set-permission-enforced PERMISSION [true|false] pm trim-caches DESIRED_FREE_SPACE pm create-user USER_NAME pm remove-user USER_ID pm get-max-users pm list packages: prints all packages, optionally only those whose package name contains the text in FILTER. Options: -f: see their associated file. -d: filter to only show disbled packages. -e: filter to only show enabled packages. -s: filter to only show system packages. -3: filter to only show third party packages. -i: see the installer for the packages. -u: also include uninstalled packages. pm list permission-groups: prints all known permission groups. pm list permissions: 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. pm list instrumentation: use to list all test packages; optionally supply <TARGET-PACKAGE> to list the test packages for a particular application. Options: -f: list the .apk file for the test package. pm list features: prints all features of the system. pm list users: prints all users on the system. pm path: print the path to the .apk of the given PACKAGE. pm dump: print system state associated w ith the given PACKAGE. pm install: installs a package to the system. Options: -l: install the package with FORWARD_LOCK. -r: reinstall an exisiting app, keeping its data. -t: allow test .apks to be installed. -i: specify the installer package name. -s: install package on sdcard. -f: install package on internal flash. -d: allow version code downgrade. pm uninstall: removes a package from the system. Options: -k: keep the data and cache directories around after package removal. pm clear: deletes all data associated with a package. pm enable, disable, disable-user, disable-until-used: these commands change the enabled state of a given package or component (written as "package/class"). pm grant, revoke: these commands either grant or revoke permissions to applications. Only optional permissions the application has declared can be granted or revoked. pm get-install-location: returns the current install location. 0 [auto]: Let system decide the best location 1 [internal]: Install on internal device storage 2 [external]: Install on external media pm set-install-location: changes the default install location. NOTE: this is only intended for debugging; using this can cause applications to break and other undersireable behavior. 0 [auto]: Let system decide the best location 1 [internal]: Install on internal device storage 2 [external]: Install on external media pm trim-caches: trim cache files to reach the given free space. pm create-user: create a new user with the given USER_NAME, printing the new user identifier of the user. pm remove-user: remove the user with the given USER_IDENTIFIER, deleting all data associated with that user
service
例:
adb shell service list
更多:
Usage: service [-h|-?] service list service check SERVICE service call SERVICE CODE [i32 INT | s16 STR] ... Options: i32: Write the integer INT into the send parcel. s16: Write the UTF-16 string STR into the send parcel.
am
Using activity manager
- am支持的功能太多,帮助如下:
usage: am [subcommand] [options] usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <FILE>] [--R COUNT] [-S] [--opengl-trace] [--user <USER_ID> | current] <INTENT> am startservice [--user <USER_ID> | current] <INTENT> am stopservice [--user <USER_ID> | current] <INTENT> am force-stop [--user <USER_ID> | all | current] <PACKAGE> am kill [--user <USER_ID> | all | current] <PACKAGE> am kill-all am broadcast [--user <USER_ID> | all | current] <INTENT> am instrument [-r] [-e <NAME> <VALUE>] [-p <FILE>] [-w] [--user <USER_ID> | current] [--no-window-animation] <COMPONENT> am profile start [--user <USER_ID> current] <PROCESS> <FILE> am profile stop [--user <USER_ID> current] [<PROCESS>] am dumpheap [--user <USER_ID> current] [-n] <PROCESS> <FILE> am set-debug-app [-w] [--persistent] <PACKAGE> am clear-debug-app am monitor [--gdb <port>] am hang [--allow-restart] am restart am idle-maintenance am screen-compat [on|off] <PACKAGE> am to-uri [INTENT] am to-intent-uri [INTENT] am switch-user <USER_ID> am stop-user <USER_ID> am stack create <TASK_ID> <RELATIVE_STACK_BOX_ID> <POSITION> <WEIGHT> am stack movetask <TASK_ID> <STACK_ID> [true|false] am stack resize <STACK_ID> <WEIGHT> am stack boxes am stack box <STACK_BOX_ID> am start: start an Activity. Options are: -D: enable debugging -W: wait for launch to complete --start-profiler <FILE>: start profiler and send results to <FILE> -P <FILE>: like above, but profiling stops when app goes idle -R: repeat the activity launch <COUNT> times. Prior to each repeat, the top activity will be finished. -S: force stop the target app before starting the activity --opengl-trace: enable tracing of OpenGL functions --user <USER_ID> | current: Specify which user to run as; if not specified then run as the current user. am startservice: start a Service. Options are: --user <USER_ID> | current: Specify which user to run as; if not specified then run as the current user. am stopservice: stop a Service. Options are: --user <USER_ID> | current: Specify which user to run as; if not specified then run as the current user. am force-stop: force stop everything associated with <PACKAGE>. --user <USER_ID> | all | current: Specify user to force stop; all users if not specified. am kill: Kill all processes associated with <PACKAGE>. Only kills. processes that are safe to kill -- that is, will not impact the user experience. --user <USER_ID> | all | current: Specify user whose processes to kill; all users if not specified. am kill-all: Kill all background processes. am broadcast: send a broadcast Intent. Options are: --user <USER_ID> | all | current: Specify which user to send to; if not specified then send to all users. --receiver-permission <PERMISSION>: Require receiver to hold permission. am instrument: start an Instrumentation. Typically this target <COMPONENT> is the form <TEST_PACKAGE>/<RUNNER_CLASS>. Options are: -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT). Use with [-e perf true] to generate raw output for performance measurements. -e <NAME> <VALUE>: set argument <NAME> to <VALUE>. For test runners a common form is [-e <testrunner_flag> <value>[,<value>...]]. -p <FILE>: write profiling data to <FILE> -w: wait for instrumentation to finish before returning. Required for test runners. --user <USER_ID> | current: Specify user instrumentation runs in; current user if not specified. --no-window-animation: turn off window animations while running. am profile: start and stop profiler on a process. The given <PROCESS> argument may be either a process name or pid. Options are: --user <USER_ID> | current: When supplying a process name, specify user of process to profile; uses current user if not specified. am dumpheap: dump the heap of a process. The given <PROCESS> argument may be either a process name or pid. Options are: -n: dump native heap instead of managed heap --user <USER_ID> | current: When supplying a process name, specify user of process to dump; uses current user if not specified. am set-debug-app: set application <PACKAGE> to debug. Options are: -w: wait for debugger when application starts --persistent: retain this value am clear-debug-app: clear the previously set-debug-app. am bug-report: request bug report generation; will launch UI when done to select where it should be delivered. am monitor: start monitoring for crashes or ANRs. --gdb: start gdbserv on the given port at crash/ANR am hang: hang the system. --allow-restart: allow watchdog to perform normal system restart am restart: restart the user-space system. am idle-maintenance: perform idle maintenance now. am screen-compat: control screen compatibility mode of <PACKAGE>. am to-uri: print the given Intent specification as a URI. am to-intent-uri: print the given Intent specification as an intent: URI. am switch-user: switch to put USER_ID in the foreground, starting execution of that user if it is currently stopped. am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit switch to it. am stack create: create a new stack relative to an existing one. <TASK_ID>: the task to populate the new stack with. Must exist. <RELATIVE_STACK_BOX_ID>: existing stack box's id. <POSITION>: 0: before <RELATIVE_STACK_BOX_ID>, per RTL/LTR configuration, 1: after <RELATIVE_STACK_BOX_ID>, per RTL/LTR configuration, 2: to left of <RELATIVE_STACK_BOX_ID>, 3: to right of <RELATIVE_STACK_BOX_ID>, 4: above <RELATIVE_STACK_BOX_ID>, 5: below <RELATIVE_STACK_BOX_ID> <WEIGHT>: float between 0.2 and 0.8 inclusive. am stack movetask: move <TASK_ID> from its current stack to the top (true) or bottom (false) of <STACK_ID>. am stack resize: change <STACK_ID> relative size to new <WEIGHT>. am stack boxes: list the hierarchy of stack boxes and their contents. am stack box: list the hierarchy of stack boxes rooted at <STACK_BOX_ID>. <INTENT> specifications include these flags and arguments: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] [-c <CATEGORY> [-c <CATEGORY>] ...] [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] [--esn <EXTRA_KEY> ...] [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] [--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] [--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...] [--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> ...] [--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...] [--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>] [--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]] [--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]] [--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]] [-n <COMPONENT>] [-f <FLAGS>] [--grant-read-uri-permission] [--grant-write-uri-permission] [--debug-log-resolution] [--exclude-stopped-packages] [--include-stopped-packages] [--activity-brought-to-front] [--activity-clear-top] [--activity-clear-when-task-reset] [--activity-exclude-from-recents] [--activity-launched-from-history] [--activity-multiple-task] [--activity-no-animation] [--activity-no-history] [--activity-no-user-action] [--activity-previous-is-top] [--activity-reorder-to-front] [--activity-reset-task-if-needed] [--activity-single-top] [--activity-clear-task] [--activity-task-on-home] [--receiver-registered-only] [--receiver-replace-pending] [--selector] [<URI> | <PACKAGE> | <COMPONENT>]
screenrecord
Recording a device screen
- 可以用该命令录制一段视频,很多重现步骤可以用这个命令来录制。
- 注意:从Android 4.4 (API level 19)开始支持。
adb shell screenrecord /sdcard/demo.mp4
monkey
Ask INT for more detial.
others
单独编译启动模块(编译kernel)之后的下载命令
adb reboot bootloader fastboot flash boot out/target/product/jrdsh82_w_tmous_kk/boot.img
重新挂载custpack使其拥有读写权限(需要adb有root权限)
adb shell mount -o remount rw /custpack