adb常用命令

启动/停止

adb kill-server      停止adb server
adb 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 mFocusedActivity
adb 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>                  调起Service
adb 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_id
adb shell dumpsys iphonesubinfo                             Android4.4及以下版本获取IMEI
adb shell
su
service call iphonesubinfo 1                                Android5.0及以上版本获取I
adb 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及其含义
3	HOME 键
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 shell
su
2.  查看当前分区挂载情况

命令:

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

查看连接过的 WiFi 密码

adb shell
su
cat /data/misc/wifi/*.conf

重启手机

adb reboot

使用 Monkey 进行压力测试

adb shell monkey -p <packagename> -v 500

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

开启/关闭 WiFi

adb root
adb shell svc wifi enable
adb 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






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值