adb常用命令

来源:互联网 发布:nba2konline刷球星软件 编辑:程序博客网 时间:2024/06/03 21:40

启动/停止

adb kill-server      停止adb serveradb start-server     启动adb server

设备连接

adb shell            连接设备adb devices          获取设备列表及设备状态adb get-state        获取设备状态    device : 设备正常连接    offline: 连接出现异常,设备无响应    unknown: 没有连接设备           unauthorized:    设备未授权允许调试

安装/卸载软件

运行命令后如果见到类似如下输出(状态为Success)代表安装成功

      [100%] /data/local/tmp/1.apk            pkg:/data/local/tmp/1.apk      Success

而如果状态为 Failure则表示安装失败,比如: 

     [100%] /data/local/tmp/map-20160831.apk           pkg: /data/local/tmp/map-20160831.apk     Failure [INSTALL_FAILED_ALREADY_EXISTS]

应用列表

adb shell pm list packages [-f] [-d] [-e][-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]无                 所有应用-f                 显示应用关联的 apk 文件-d                 只显示 disabled 的应用-e                 只显示 enabled 的应用-s                 只显示系统应用-3                 只显示第三方应用-I                 显示应用的 installer-u                 包含已卸载应用<FILTER>           包名包含 <FILTER> 字符串adb shell pm list packages                 列出手机装的所有app的包名adb shell pm list packages -s              列出系统应用的所有包名adb shell pm list list packages -3         列出除了系统应用的第三方应用包名

查看前台Activity/Service

adb shell dumpsys activity activities | grep mFocusedActivityadb shell dumpsys activity services [<packagename>]

与应用交互

主要是使用am<command>命令,常用的 <command>如下:

command

含义

start [options] <INTENT>

启动 <INTENT>指定的 Activity                                                                              

startservice [options] <INTENT>    

启动 <INTENT>指定的 Service

broadcast [options] <INTENT>

发送 <INTENT> 指定的广播

force-stop <packagename>

停止 <packagename>相关的进程


<INTENT>参数很灵活,和写 Android程序时代码里的 Intent相对应。主要是使用 am<command>命令,常用的 <command>如下:

参数

含义

-a <ACTION>

指定 action,比如android.intent.action.VIEW

c <CATEGORY>

指定 category,比如android.intent.category.APP_CONTACTS

-n <COMPONENT>

指定完整 component 名,用于明确指定启动哪个 Activity,如 com.example.app/.ExampleActivity

 例如:

adb shell am start -n com.alina.demo/.ui.DemoActivity         启动应用adb shell am force-stop <packagename>                         强制停止应用adb shell am startservice [options] <INTENT>                  调起Serviceadb shell am broadcast [options] <INTENT>                     发送广播
清除应用数据与缓存
adb shell pm clear <packagename>         清除应用数据与缓存

设备状态

adb shell dumpsys battery                                   电池状况adb gegt-serialno                                           获取序列号adb shell cat /sys/class/net/elan0/address                  获取MAC地址adb shell getprop ro.build.version.release                  查看Android系统版本adb shell wm size                                           查看屏幕分辨率adb shell wm density                                        查看屏幕密度adb shell dumpsys window displays                           显示屏参数adb shell settings get secure android_id                    android_idadb shell dumpsys iphonesubinfo                             Android4.4及以下版本获取IMEIadb shellsuservice call iphonesubinfo 1                                Android5.0及以上版本获取Iadb shell getprop ro.build.version.release                  Android 系统版本adb shell ifconfig | grep Mask                              IP 地址adb shell cat /proc/cpuinfo                                 CPU 信息adb shell cat /proc/meminfo                                 内存信息

模拟按键/输入

adb shell input keyevent <keycode>
常用的keycode及其含义
3HOME 键4返回键5打开拨号应用6挂断电话24增加音量25降低音量26电源键27拍照(需要在相机应用里)64打开浏览器82菜单键85播放/暂停86停止播放87播放下一首88播放上一首122移动光标到行首或列表顶部123移动光标到行末或列表底部126恢复播放127暂停播放164静音176打开系统设置187切换应用207打开联系人208打开日历209打开音乐210打开计算器220降低屏幕亮度221提高屏幕亮度223系统休眠224点亮屏幕231打开语音助手276如果没有 wakelock 则让系统休眠
滑动解锁
adb shell input swipe 起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标
输入文本
adb shell input text ~

日志

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

Android的日志分为如下几个优先级(priority):

V —— Verbose(最低,输出得最多)

D —— Debug

I —— Info

W —— Warning

E —— Error

F —— Fatal

S —— Silent(最高,啥也不输出)

按某级别过滤日志则会将该级别及以上的日志输出。

比如,命令:

adb logcat *:W

会将 WarningErrorFatal Silent 日志输出。


tag和级别过滤日志

<filter-spec>可以由多个 <tag>[:priority]组成。

adb logcat ActivityManager:I MyApp:D *:S

表示输出 tag ActivityManager Info以上级别日志,输出 tag MyApp Debug以上级别日志,及其它 tag Silent级别日志(即屏蔽其它 tag日志)。


日志格式

可以用 adb logcat -v <format>选项指定日志输出格式。

日志支持按以下几种 <format>

l brief

默认格式。格式为:

<priority>/<tag>(<pid>): <message>

示例:

D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
l process

格式为:

<priority>(<pid>) <message>

示例:

D( 1785) Disconnected process message: 10, size: 0  (HeadsetStateMachine)
l tag

格式为:

<priority>/<tag>: <message>

示例:

D/HeadsetStateMachine: Disconnected process message: 10, size: 0
lraw

格式为:

<message>

示例:

Disconnected process message: 10, size: 0

l time

格式为:

<datetime> <priority>/<tag>(<pid>): <message>

示例:

08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

lthreadtime

格式为:

<datetime> <pid> <tid> <priority> <tag>: <message>

示例:

08-28 22:39:39.974  1785  1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0

llong

格式为:

 [ <datetime> <pid>:<tid> <priority>/<tag> ]<message>

示例:

[ 08-28 22:39:39.974  1785: 1832 D/HeadsetStateMachine ]Disconnected process message: 10, size: 0

指定格式可与上面的过滤同时使用。比如:

adb logcat -v long ActivityManager:I *:S

清空日志
adb logcat -c
内核日志
adb shell dmesg
例如:
<6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs<6>[14201.685525] PM: early resume of devices complete after 0.838 msecs<6>[14201.753642] PM: resume of devices complete after 68.106 msecs

中括号里的[14201.684016]代表内核开始启动后的时间,单位为秒。

通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 Freeing init memory那一行前面的时间就是。


状态栏和导航栏的显示隐藏

本节所说的相关设置对应Cyanogenmod里的「扩展桌面」。

命令:

adb shell settings put global policy_control <key-values>

<key-values>可由如下几种键及其对应的值组成,格式为<key1>=<value1>:<key2>=<value2>

key

含义

 immersive.full

  同时隐藏                                                   

 immersive.status

  隐藏状态栏

 immersive.navigation

  隐藏导航栏

 immersive.preconfirms      

  ?


这些键对应的值可则如下值用逗号组合:

value

含义

  apps

  所有应用

  *

  所有界面

  packagename

  指定应用

  -packagename         

  排除指定应用                                                          


例如:

adb shell settings put global policy_control immersive.full=*

表示设置在所有界面下都同时隐藏状态栏和导航栏。

adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3

表示设置在包名为com.package1 com.package2的应用里隐藏状态栏,在除了包名为 com.package3的所有应用里隐藏导航栏。


实用功能

adb exec-out screencap -p > sc.png                     截图保存到电脑adb shell screencap -p /sdcard/sc.png                  截图保存到设备里adb shell screenrecord /sdcard/filename.mp4            录制屏幕adb shell screenrecord –help

可以使用 adb shell screencap -h查看 screencap命令的帮助信息,下面是两个有意义的参数及含义:

参数

含义

-p

指定保存文件为 png 格式

-d display-id        

指定截图的显示屏编号(有多显示屏的情况下)            


另外一种一行命令截图并保存到电脑的方法:

Linux Windows

adb shell screencap -p | sed "s/\r$//" > sc.png

Mac OS X

adb shell screencap -p | gsed "s/\r$//" > sc.png

重新挂载 system分区为可写

1. 进入 shell并切换到 root用户权限

命令:

adb shellsu
2. 查看当前分区挂载情况

命令:

mount
3. 重新挂载
mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system

查看连接过的 WiFi密码

adb shellsucat /data/misc/wifi/*.conf

重启手机

adb reboot

使用 Monkey进行压力测试

adb shell monkey -p <packagename> -v 500

表示向 <packagename>指定的应用程序发送 500 个伪随机事件

开启/关闭 WiFi

adb rootadb shell svc wifi enableadb shell svc wifi disable

若执行成功,输出为空;若未取得 root权限执行此命令,将执行失败,输出 Killed


查看进程

adb shell ps

列名

含义

  USER          

  所属用户                   

  PID

  进程 ID

  PPID

  父进程 ID

  NAME

  进程名


查看实时资源占用情况

adb shell top

关闭adb

adb shell settings put global adb_enabled 0