ADB 命令速查手册-2026年9月版

31 阅读13分钟

ADB 命令速查手册

适用环境:Android 车机调试(展锐 uis7870 / 中汽 zqautomotive / 赛力斯 Seres),Windows 为主。 Windows 下用 findstr 代替 Linux 的 grep;PowerShell 下可用 Select-String

目录


一、基础设备管理

# 查看已连接设备
adb devices

# 以 root 身份重启 adbd
adb root

# 重新挂载系统分区为可读写
adb remount

# 重启设备
adb reboot

二、无线连接

# 让设备在 5555 端口开启无线 adb
adb tcpip 5555

# 连接设备(IP 换成实际地址)
adb connect 12.8.1.151

三、应用管理

启动应用 / Activity

# 打开系统原生设置
adb shell am start -a android.settings.SETTINGS

# 直接打开指定应用的某个 Activity
adb shell am start -n com.zqautomotive.settings/.MainActivity

# 查询应用的可启动 Activity(启动类)
adb shell cmd package resolve-activity --brief com.android.gallery3d

停止 / 杀死应用

# 强制停止应用(相当于设置里"强行停止")
adb shell am force-stop com.seres.settings

# 按进程名杀死进程(systemui 等系统进程也适用)
adb shell pkill systemui

# 按 pid 杀死进程(pid 见下方进程查询)
adb shell kill <pid>

# 干掉 SystemUI(需要 root)
adb shell su -c "killall com.android.systemui"

查看应用进程

# 根据包名查看进程(Linux/macOS)
adb shell ps | grep com.seres.settings

# Windows 写法
adb shell ps | findstr com.zqautomotive.launcher

# 列出与关键字相关的所有进程
adb shell ps -A | findstr zq

# 进入 shell 后查看全部进程
adb shell
ps -A

包管理

# 列出所有已安装应用,按关键词过滤
adb shell pm list packages | grep <关键词>

# 带 APK 路径查找应用(可定位到具体文件)
adb shell pm list packages -f | grep <关键词>

# 查看某个包的安装路径
adb shell pm path com.android.car.settings

# 清除应用数据(停止应用并清空缓存/数据,相当于彻底重置)
adb shell pm clear <包名>

# 示例:清除王者荣耀数据
adb shell pm clear com.tencent.tmgp.sgame

安装 / 卸载

# 安装 APK
# -d 允许降级安装;-r 覆盖安装;-t 允许安装测试包
adb install -t xx.apk

# 批量安装当前目录下所有 APK(Windows cmd)
for %f in (*.apk) do adb install "%f"

四、进程 / 前台窗口

# 当前聚焦的 Activity
adb shell dumpsys activity | grep "mFocus"

# 栈顶 Activity(车机上更常用,可拿到真实前台包名/Activity)
adb shell dumpsys activity activities | grep -E 'mResumedActivity|topResumedActivity|topActivity'

# 当前前台窗口(注意:mCurrentFocus 有时返回的是 Window 而非包名)
adb shell dumpsys window | grep -E 'mCurrentFocus' | cut -d '/' -f 1

# Windows 查看栈顶窗口
adb shell dumpsys window | findstr mCurrentFocus

五、系统信息

# 设备全部构建信息
adb shell getprop | grep build
# 或直接读 build.prop
adb shell cat /system/build.prop

# 系统版本描述
adb shell getprop ro.build.description

# 硬件版本
adb shell getprop ro.mfg.hw.version

# 存储空间使用情况
adb shell df -h

# 整机内存信息(需 root)
adb shell cat /proc/meminfo

六、CPU / 内存监控

# 查看某个应用的内存占用
adb shell dumpsys meminfo com.android.systemui

# 系统全局内存摘要
adb shell dumpsys meminfo

# 只看应用内存概要,快速浏览
adb shell dumpsys meminfo -s

# 所有进程 CPU 使用时间、百分比及系统总负载
adb shell dumpsys cpuinfo

# 实时进程列表,按 CPU 占用排序(-s cpu),显示前 5 个(-m 5)
adb shell top -m 5 -s cpu

# 交互式查看进程(进入后可按键操作)
adb shell top
adb shell top -h   # 查看 top 帮助

七、屏幕与显示

分辨率 / DPI

# 查看当前(逻辑)分辨率
adb shell wm size

# 设置分辨率(宽 x 高),如改为竖屏分辨率
adb shell wm size 1080x1920

# 恢复默认分辨率
adb shell wm size reset

# 查看物理分辨率
adb shell wm physicalsize

# 设置 / 重置 DPI
adb shell wm density 480
adb shell wm density reset

注意:

  • wm size 设置的是逻辑分辨率,内容会缩放;
  • wm density 设置的是 DPI,影响 UI 元素大小。

多屏信息

# 查看所有屏幕信息(通过 mDisplayId= 字段确认屏幕 ID)
adb shell dumpsys display

# 快速提取所有屏幕 ID 列表
adb shell dumpsys display | grep "mDisplayId=" | awk '{print $1}' | cut -d= -f2 | sort -u

屏幕旋转

# 设置屏幕旋转方向
adb shell settings put system user_rotation 3

# 恢复自动旋转
adb shell settings put system accelerometer_rotation 1
含义
0
190°
2180°
3270°(逆时针)

八、深色 / 黑白模式

# 切换深色模式(黑)
adb shell cmd uimode night yes

# 切换浅色模式(白)
adb shell cmd uimode night no

# 方式二:直接写设置(2=深色 / 1=浅色 / -1=自动)
adb shell settings put secure ui_night_mode 2     # 黑夜
adb shell settings put secure ui_night_mode 1     # 白天
adb shell settings put secure ui_night_mode -1    # 自动(设为自动后 cmd uimode 才生效)

# 查看当前模式
adb shell dumpsys uimode

九、音量控制

# 媒体音量 +
adb shell input keyevent KEYCODE_VOLUME_UP

# 媒体音量 -
adb shell input keyevent KEYCODE_VOLUME_DOWN

十、权限管理

# 查询应用申请了哪些权限及授权情况
adb shell dumpsys package com.zq.systemui | findstr "requested permissions:", "granted="
# PowerShell 写法
adb shell dumpsys package com.zq.systemui | Select-String "requested permissions:", "granted="
adb shell dumpsys package com.android.systemui | Select-String "requested permissions:", "granted=", "CAR_VENDOR_EXTENSION"

# 精确查某个权限是否授予
adb shell dumpsys package com.zq.systemui | grep android.car.permission.CAR_VENDOR_EXTENSION

# 运行时授权(授予应用某个权限)
adb shell pm grant com.zq.systemui android.car.permission.CAR_VENDOR_EXTENSION

系统白名单权限路径(放置权限 xml,如 com.android.systemui.xml): system_ext/etc/permissions

查找权限 xml 文件:

adb shell find /system_ext -name com.android.systemui.xml
# 结果示例:/system_ext/etc/permissions/com.android.systemui.xml

十一、电池模拟

# 把系统电池电量设为 100%(便于模拟满电状态)
adb shell dumpsys battery set level 100

# 恢复真实电池
adb shell dumpsys battery reset

十二、SELinux / Root / Remount

# 关闭 SELinux(临时,需 root)
adb shell
$ su              # 直接 setenforce 0 会报 Permission denied,需先 su
# setenforce 0

实测记录:普通 shell 下执行 setenforce 0 返回 Couldn't set enforcing status to '0': Permission deniedsu 提权后即可成功。


十三、Fastboot 解锁流程

目的:解锁 / 重新挂载(remount)system 等分区,便于 push 修改系统镜像。

# 1. 执行 unlock1.bat 解锁脚本
# 2. 短路进入 fastboot 模式
# 3. 新开窗口执行:
fastboot devices
fastboot reboot

# 4. 设备重启后确认已识别
adb devices

# 5. root 并 remount
adb root
adb remount
# 预期输出:Disabling verity for /system /system_ext /vendor /odm /product ...
#           Using overlayfs for ...  /  Now reboot your device for settings to take effect

# 6. 按提示重启,使 verity 关闭 / overlayfs 生效
adb reboot

十四、串口调试

串口接线

板子另一端
TXDRX
RXDTX
GNDGND

通过串口打开 adb(切到 ADB 模式)

# 1. 先执行 su
su

# 2. 将 extcon 切到 device/ADB 模式
echo 1 > /sys/devices/platform/extcon-virt/id_virt
echo 1 > /sys/devices/platform/extcon-virt/vbus_virt

# 3. 换 adb 接口线连接查看
adb devices

改回 USB 模式

echo 0 > /sys/devices/platform/extcon-virt/id_virt
echo 0 > /sys/devices/platform/extcon-virt/vbus_virt

Muble 串口参数

  • 路径:Session -> Serial
  • serial port:COM70
  • Speed:921600

其他

  • 切换 device 密码(拨号界面输入):*#*#83781#*#*

十五、文件传输

# 推送文件/目录到设备(示例:360 环视数据包)
adb push 3603D /sdcard

# 写入完成后同步(保险起见)
adb shell sync

# 拉取设备文件到本地(示例:拉取 ylog)
adb shell
cd data/ylog/ap
adb pull 011-0704_151021--0704_151057.ylog .

# 直接拉取整个日志目录
adb pull /data/ylog/ap

# 拷贝文件(Git Bash / MSYS 环境示例)
cp make_build.sh /s/ci/hedong/code

十六、SystemUI 推包地址

# SystemUI APK 安装路径
/system_ext/priv-app/SeresSystemUI/SeresSystemUI.apk

# SystemUI 权限 xml 文件路径
/system_ext/etc/permissions/com.android.systemui.xml

十七、日志抓取

# 崩溃日志(Java 异常)
adb logcat | grep "AndroidRuntime"

# 实时监控系统启动过程中的严重错误
adb logcat -b all | grep -E "AndroidRuntime|SystemServer|PackageManager|PrivappPermission"

# 只输出指定 tag 的日志并写入文件(其他 tag 静默)
# 格式:adb logcat -v time <Tag>:* *:s > 输出文件
adb logcat -v time AutoVoice:* *:s > log_AutoVoice.txt

十八、性能追踪(systrace / perfetto)

# 抓取 15 秒 perfetto trace(含 sched/freq/idle/am/wm/gfx/view/input/binder 等核心事件)
adb shell perfetto -o /data/misc/perfetto-traces/android_trace.perfetto-trace -t 15s -b 64mb -a "*" sched freq idle am wm gfx view input binder_driver hal dalvik

在浏览器中打开 trace 分析:

ui.perfetto.dev/


十九、Monkey 压力测试

# 对指定包随机发送 100 万次事件做压力测试
adb shell monkey -p com.zqautomotive.settings 1000000

二十、模块单编

# 1. 进入产物目录,删除该模块之前编译的生成物
#    产物根路径:out/target/product/uis7870_2h10_ca(按实际机型)

# 2. 查找生成物
find . -name VwCopilotLauncher*

# 3. 删除该目录下所有文件
rm -rf *

# 4. 初始化编译环境并单编模块
source build/envsetup.sh
lunch 102          # 102 为对应机型 lunch 编号
make VwCopilotLauncher

# 查看当前在哪个 lunch 上
source build/envsetup.sh
lunch              # 不带参数会列出并提示选择

二十一、APK 系统签名

# 通用格式
apksigner sign --ks <your_keystore.jks> --ks-key-alias <alias> \
  --ks-pass pass:<password> --key-pass pass:<key_password> <input.apk>

# 示例:用 platform 平台签名(360 / 系统应用常用)
apksigner sign --ks platform.jks --ks-key-alias platform \
  --ks-pass pass:platform --key-pass pass:platform <input.apk>

二十二、Git 常用命令

分支与远端

# 查看远端仓库地址
git remote -v

# 查看本地分支与远端跟踪关系
git branch -vv

# 基于远端分支新建本地分支并跟踪(旧写法)
git checkout -b VW_CoPilot origin/master

# Git 2.23+ 推荐写法
git switch -c iat origin/iat

丢弃修改

# 丢弃工作区未暂存(未 git add)的修改
git checkout -- .
# 或更现代的命令
git restore .

# 回退最近 1 次提交,保留代码修改(回到暂存区)
git reset --soft HEAD^

# 彻底丢弃最近 1 次提交及其修改
git reset --hard HEAD~1

# 丢弃本地所有修改,完全对齐远端分支
git reset --hard origin/VW_Copilot_factory

# 撤销合并提交(HEAD 为合并提交时,回到合并前)
git reset --hard HEAD~1

# 中断进行中的 rebase,回到之前状态
git rebase --abort

同步代码

# 常规同步
git checkout vw_ivi
git pull origin vw_ivi

# 提交前先 rebase 远端最新代码
git pull --rebase origin vw_ivi

# 删除本地分支(-D 强制删除)
git branch -D local

# 删除坏掉的仓库目录并重新单独同步(repo 环境)
rm -rf vendor/vwcopilot/app/a7870
repo sync -c --no-tags vendor/vwcopilot/app/a7870

提交流程(rebase + 推送)

# 1. 确认在正确的本地分支
git checkout vw_ivi

# 2. 抓取远端最新动态(不合并)
git fetch origin

# 3. 把本地提交变基到远端分支最前端
git rebase origin/vw_ivi

# 4. 确认本地领先的提交
git log origin/vw_ivi..vw_ivi --oneline

# 5. 重新推送(gerrit 评审流)
git push origin refs/heads/vw_ivi:refs/for/vw_ivi
git push origin HEAD:refs/for/main
git push origin HEAD:refs/for/iat

小贴士:如果本地产生了多余合并提交,可改用 git pull --rebase 代替 git pull(用 rebase 代替 merge),避免合并提交。

Cherry-pick 指定提交

# 区间 cherry-pick(如从 a1b2c3d 连续到 e5f6g7h)
git cherry-pick a1b2c3d^..e5f6g7h

# 依次拼接多笔不连续的 Commit
git cherry-pick 9c8f17c 2031ce0 4d381b8

合并 / 压缩提交(squash)

# 查看最近 5 笔提交
git log --oneline -n 5

# 本地未 push 的提交,用交互式变基合并(N 为要合并的笔数,如 HEAD~3)
git rebase -i HEAD~N

# 编辑界面中:第一行保留 pick,其余改为 squash(或简写 s)
# pick a1b2c3d   第一次提交内容
# squash e4f5g6h 第二次提交内容
# squash i7j8k9l 第三次提交内容

# 保存退出后会再弹窗合并备注信息,保留一个清晰的总述即可

查看记录 / 处理冲突

# 查看前 8 笔提交(图形化显示分支)
git log --oneline --graph --decorate -8

# 冲突/混乱时回退到最近一笔
git reset --hard HEAD~1

二十三、find 文件查找

# 当前目录及子目录查找文件(忽略大小写)
find . -iname "CarNotificationLib"

# 按精确文件名查找
find . -name "file.txt"

# 只查找目录(-type d;普通文件用 -type f)
find . -type d

# 在 /var/log 下找所有 .log 文件
find /var/log -type f -name "*.log"

# 查找大于 100MB 的文件
find / -type f -size +100M

# 查找 1KB ~ 10MB 之间的文件(+ 大于,- 小于)
find / -type f -size +1k -size -10M

# 在所有 Android.bp 中搜索包含 name: "CarSystemUI-core" 的文件
find . -name "Android.bp" | xargs grep 'name: "CarSystemUI-core*"'

# 在 .java 文件中查找包含关键字的文件
find . -name "*.java" -exec grep -l "UnisocPowerManager" {} ;

二十四、Android Studio 快捷键

快捷键作用
Ctrl + O列出可重写 / 已重写方法
Ctrl + H类的继承层级树
Ctrl + U跳到方法 / 类的父类
Ctrl + F12快速浏览当前文件成员(弹窗,可输入过滤)

二十五、常用路径记录

# 个人代码根目录(MSYS 环境)
/s/ci/hedong

# 个人目录
/Users/... (Windows: C:\Users\ZQ)

本手册由个人笔记整理而成,命令以实际设备环境为准;涉及系统分区写操作请先确认已解锁(remount)。