ADB Commands

ADB 命令大全

ADB Commands

ADB服务相关操作

# 启动adb服务
adb start-server

# 关闭服务
adb kill-server

查看设备相关信息

# 查询已连接设备/模拟器
adb devices

# 查看手机型号
adb shell getprop ro.product.model

# 查看电池状况
adb shell dumpsys battery

# 查看屏幕分辨率
adb shell wm size

# 查看屏幕密度
adb shell wm density

# 查看显示屏参数
adb shell dumpsys window displays

# 查看Android系统版本
adb shell getprop ro.build.version.release

# 查看CPU信息
adb shell cat /proc/cpuinfo

# 查看手机CPU架构
adb shell getprop ro.product.cpu.abi

# 查看内存信息
adb shell cat /proc/meminfo

操作应用相关

# 安装 APK
adb install [-rtsdg] <apk_path>
参数 含义
-r 允许覆盖安装
-t 允许安装AndroidManifest.xml里application指定android:testOnly="true"的应用
-s 将应用安装到sdcard
-d 允许降级覆盖安装
-g 授予所有运行时权限

需要注意的是如果连接了两台设备,则会报错,此时可以添加-s <serialNumber>来处理

# 卸载应用 -k 参数可选,表示卸载应用但保留数据和缓存目录
adb uninstall [-k] <packagename>

# 进入shell环境
adb shell

# 强制停止应用
adb shell am force-stop <packagename>

# 打开系统设置
adb shell am start -n com.android.settings/com.android.settings.Settings

# 开启开发者选项
adb shell am start -a com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS

# 进入WIFI设置
adb shell am start -a android.settings.WIRELESS_SETTINGS

# 重启系统
adb reboot

通过ADB操作日志相关

# 查看 logcat 帮助信息
adb logcat --help

# 输出日志信息到文件
adb logcat > log

# 使用 more log 命令查看日志信息
adb logcat > ~/logdebug.log

# 输出指定标签内容
adb logcat -s <keyword>
# -s 表示设置默认的过滤器,如要输出System.out标签信息可以:
adb logcat -s System.out

# 清空日志缓存信息
adb logcat -c

# 输出缓存日志
adb locat -d

# 输出最近的日志 <number>表示输出最近的多少行日志,并且不会阻塞
adb logcat -t <number>

# 日志过滤 过滤固定字符串
adb logcat | grep logtag
adb logcat | grep -i logtag #忽略大小写
adb logcat | grep > ~/xxx.log #将过滤后的日志输出到文件
adb logcat | grep --color=auto -i logtag #设置匹配字符串颜色

# 使用正则表达式匹配
adb logcat | grep "^..Activity"

与应用交互操作

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

command 用于
start [options] 启动指定的Activity
startservice [options] 启动指定的Service
broadcast [options] 启动指定的广播
force-stop 停止相关的进程

用于决定intent对象的选项如下:

参数 含义
-a 指定action,比如android.intent.action.VIEW
-c 指定category,比如android.intent.category.APP_CONTACTS
-n 指定完整component名,用于明确指定启动哪个Activity,如com.example.app/ExampleActivity
里还能带数据,像Bundle一样 | 参数 | 含义 | | ----------------------------------------------------------- | ------------------------------------- | | --esn | null 值(只有 key 名) | | -e | --es | | --ez | boolean 值 | | --ei | integer 值 | | --el | long 值 | | --ef | float 值 | | --eu | URI | | --ecn | component name | | --eia [,<EXTRA_INT_VALUE...] | integer 数组 | | --ela [,<EXTRA_LONG_VALUE...] | long 数组 | | | | ```gas # 调起指定Activity adb shell am start [option] # 表示调起 com.xxx.xxx/.MainActivity 并传给它String数据键值对 params - hello, world adb shell am start -n com.xxx.xxx/.MainActivity --es "params" "hello, world" # 调起Service adb shell am startservice [options] adb shell am startservice -n com.exsample.app/.exsample.ExsampleService # 发送广播 adb shell am broadcast [options] # 可以向所有组件广播,也可以只向指定组件广播,例如像所有组件广播 BOOT_COMPLETED adb shell am broadcast -a android.intent.action.BOOT_COMPLETED # 又例如,只向 com.cc.test/.BootCompletedReceiver 广播 BOOT_COMPLETED adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.cc.test/.BootCompletedReceiver # 向应用授予权限(只能授予应用程序声明的可选权限) adb shell pm grant adb -d shell pm grant packageName android.permission.BATTERY_STATS # 取消应用授权 adb shell pm revoke ``` ### 模拟按键输入 ```gas # 模拟在屏幕上点击指定坐标位置 adb shell input tap 50 250 ``` ### ADB 其它命令 ```gas # 清除应用的数据与缓存 adb shell pm clear # 连接到指定的IP adb connect # 查看进程信息 adb shell ps # 查看所有已安装的应用的包名 adb shell pm list packages -f # 查看前台Activity adb shell dumpsys activity activitys | grep ResumedActivity # 查看Activity堆栈信息 adb shell dumpsys activity # 查看栈顶Activity adb shell dumpsys activity top # 包信息 Package Information adb shell dumpsys package # 内存使用情况Memory Usage adb shell dumpsys meminfo # 从手机复制文件出来 比如把Crash日志写在SD卡上,再 pull 到电脑上或者 pull ANR的trace日志 adb pull # 向手机发送文件 比如测试热修复补丁 adb push adb push foo.txt /sdcard/foo.txt # 查看手机CPU 可以看到手机架构(eg.ARMv7) 和几核处理器,可以帮助我们选择so库,排查手机cpu架构相关的问题 adb shell cat /proc/cpuinfo # 获取手机磁盘空间 adb shell df # 获取手机系统版本 adb shell getprop ro.build.version.release # Memory Use Over Time adb shell dumpsys procstats # Graphics State adb shell dumpsys gfxinfo # 查看adb版本 adb version # 进入adb帮助界面 adb help ``` ### Android 11 无线调试 区别于以前的ANDROID WIFI ADB,这次可以无需USB连接再切到tcpip模式连接设备 **使用方法:** - 开发者模式中打开无线调试选项 - 首次使用需点击「使用配对码配对设备」进行配对 - 运行 `adb pair ipaddr:port`后输入配对码进行连接 ```gas adb pair ipaddr:port ``` ### logcat ```gas # 查看 Zygote 运行情况 adb logcat -s Zygote # 查看 system_server 运行情况 adb logcat -s SystemServer adb logcat | grep "1359 1359" //system_server情况 # 查看 SystemServiceManager 运行情况 adb logcat -s SystemServiceManager # 查看 ActivityManager 运行情况 adb logcat -s ActivityManager ``` ## APK Tools ```bash apktool d -s ``` ```bash sh d2j-dex2jar.sh classes.dex ```