跳转至

ADB

Commonds

基础命令

命令 含义
adb devices 查看设备连接情况
adb version 查看版本
adb help 查看帮助
adb shell 进入adb sehll命令
adb shell top 查看手机当前进程占用手机内存情况
adb shell kill -3 pid 杀掉进程
adb logcat -v process | grep 8607 8607是进程 PID
adb shell reboot -p 关机
adb reboot 重启
adb shutdown 关机
adb root root
adb remount 获取读写权限
adb kill-server 关闭adb服务
adb start-server 启动adb服务
adb shell stop 关闭设备请求
adb shell start 启动设备请求
adb shell su root setenforce 0 关闭seLinux模式

网络相关设置

命令 含义
adb shell ifconfig 查看手机IP
adb tcpip 5555 设置手机tcpip
adb connect IP 连接IP

屏幕display信息

命令 含义
adb shell wm size 查看分辨率
adb shell set wm size 设置分辨率
adb shell wm density 查看屏幕密度
adb shell wm density xxx 设置屏幕密度

应用管理

查看应用列表

命令 含义
adb shell pm list packages 所有应用
adb shell pm list packages -f 显示应用关联的 apk 文件
adb shell pm list packages -d 只显示 disabled 的应用
adb shell pm list packages -e 只显示 enabled 的应用
adb shell pm list packages -s 只显示系统应用
adb shell pm list packages -3 只显示第三方应用
adb shell pm list packages -i 显示应用的 installer
adb shell pm list packages -u 包含已卸载应用
<FILTER> 包名包含 <FILTER> 字符串

安装与卸载APK

安装

命令 含义
adb install -l xxx.apk 将应用安装到保护目录 /mnt/asec
adb install -r xxx.apk 允许覆盖安装
adb install -t xxx.apk 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用
adb install -s xxx.apk 将应用安装到 sdcard
adb install -d xxx.apk 允许降级覆盖安装
adb install -g xxx.apk 授予所有运行时权限
adb install --abi abi-identifier xxx.apk 为特定 ABI 强制安装 apk,abi-identifier 可以是 armeabi-v7a、arm64-v8a、v86、x86_64 等

卸载

命令 含义
adb uninstall [-k] \ <packagename> 表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。

查看日志

Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

Android 日志

命令格式如下:

[adb] logcat [<option>] ... [<filter-spec>] ...
日志等级

Android 的日志分为如下几个优先级(priority),由上往下级别递增。

等级 英文 含义
V verbase 级别最低,琐碎、不重要的日志信息
D debug 调试信息
I info 重要信息
W warning 警告信息
E error 错误信息
F fatal 严重错误信息
S slient 无记载

按某级别过滤日志则会将该级别及以上的日志输出。比如,命令:

adb logcat "*:W"
日志缓冲区

基本命令

adb logcat -b <buffer> 

buffer选项可以填为:

命令 含义
radio 通信系统
system 系统组件
event event事件模块
main java层
kernel linux内核
all 所有

内核 日志

命令:

adb shell dmesg

输出示例:

[34096.252006] init: Control message: Could not find 'aidl/vendor.qti.qhcp.IQHDC/default' for ctl.interface_start from pid: 423 (/system/bin/servicemanager)                                                                                                  
[34097.245918] init: Control message: Could not find 'aidl/vendor.qti.qhcp.IQHDC/default' for ctl.interface_start from pid: 423 (/system/bin/servicemanager)                                                                                                  
[34097.254912] init: Control message: Could not find 'aidl/vendor.qti.qhcp.IQHDC/default' for ctl.interface_start from pid: 423 (/system/bin/servicemanager)                                                                                                  
[34098.246388] init: Control message: Could not find 'aidl/vendor.qti.qhcp.IQHDC/default' for ctl.interface_start from pid: 423 (/system/bin/servicemanager)                                                                                                  
[34098.254246] init: Control message: Could not find 'aidl/vendor.qti.qhcp.IQHDC/default' for ctl.interface_start from pid: 423 (/system/bin/servicemanager)

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

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

APK包相关命令

adb shell pm命令

adb shell pm -l 列出包列表
adb shell pm list packages  查看包名(同上)

adb shell pm path "PackageName"  获取包的路径(可以通过dump SF获取当前的活动包名)
adb shell pm list  packages  -f 查看包名对应的apk路径及名称
adb shell dumpsys  列出手机所有apk的详细信息

Dumpsys信息

服务列表信息

adb shell service list

或者

adb shell dumpsys -l

常见服务信息列表

服务名 类名 功能
gfxinfo GraphicsBinder 图像
SurfaceFlinger 图像相关
activity ActivityManagerService AMS相关信息
package PackageManagerService PMS相关信息
window WindowManagerService WMS相关信息
input InputManagerService IMS相关信息
power PowerManagerService PMS相关信息
batterystats BatterystatsService 电池统计信息
battery BatteryService 电池信息
alarm AlarmManagerService 闹钟信息
dropbox DropboxManagerService 调试相关
procstats ProcessStatsService 进程统计
cpuinfo CpuBinder CPU
meminfo MemBinder 内存
dbinfo DbBinder 数据库
appops app使用情况
permission 权限
processinfo 进程服务
batteryproperties 电池相关
audio 查看声音信息
netstats 查看网络统计信息
diskstats 查看空间free状态
jobscheduler 查看任务计划
wifi wifi信息
diskstats 磁盘情况
usagestats 用户使用情况
devicestoragemonitor 设备信息

dump方法

dumpsys <service>    打印具体某一项服务(service就是前面表格中的服务名)

例如: (adb shell)
dumpsys cpuinfo //打印一段时间进程的CPU使用百分比排行榜
dumpsys meminfo -h  //查看dump内存的帮助信息
dumpsys package <packagename> //查看指定包的信息
dumpsys SurfaceFLinger    //查看SF服务

dump SurfaceFlinger信息

adb shell dumpsys SurfaceFlinger

一般包含:
1、layer的信息,layer一般对应于一个surface;
2、opengl的信息。一般是跟gpu比较相关的参数,opengl是标准的接口;
3、display。安卓支持三种类型的display,可以导出display当前的显示状态,也就是各个surface(layer)在各个display的显示属性;
4、surfaceflinger管理graphis buffer的信息。主要是layer申请的帧数据内存;
5、hwcomopser的如果实现dump接口也能知道hwcomposer的一些参数;
6、gralloc的内存分配信息。如果gralloc有实现dump接口的话;
7、合成方式、BufferLayer的树形结构信息

连接DP 然后继续dump SurfaceFlinger信息

连接之前启动: adb shell dumpsys SurfaceFlinger --file --no-limit 
断开后再次执行 adb shell dumpsys SurfaceFlinger --file --no-limit 
并pull出来 adb pull /data/misc/wmtrace/dumpsys.txt

GPU帧渲染数据

adb shell dumpsys gfxinfo 

例如查看camera功能的渲染一帧所经过的各个阶段的耗时情况(单位毫秒)
dumpsys gfxinfo **.camera 

带上 framestats 参数可以获取最近的 120 帧数据:
adb shell dumpsys gfxinfo **.camera framestats

高级命令

启用/禁用 SELinux

  • 禁用

    adb root
    adb shell setenforce 0
    

  • 启用

    adb root
    adb shell setenforce 1
    

启用/禁用 dm_verity

  • 禁用

    adb root
    adb disable-verity
    

  • 启用

    adb root
    adb enable-verity
    

启用/禁用 hidden api

  • 禁用

    adb shell settings delete global hidden_api_policy_pre_p_apps  
    adb shell settings delete global hidden_api_policy_p_apps
    

  • 启用

可以访问 hide api

adb shell settings put global hidden_api_policy_pre_p_apps 1  
adb shell settings put global hidden_api_policy_p_apps 1

Android binary XML

Android12之后,引入一种自定义的写XML的协议,这样的二进制文件叫二进制XML。 如果我们直接 cat /data/system/packages.xml ,显示出来的是乱码的,需要使用 abx2xml 工具进行转换。

adb shell cat /data/system/packages.xml | adb shell abx2xml - -

fastboot

gsi

只刷Android上层,不包含vendor部分。 qssi同样适用。

adb reboot fastboot

fastboot flash system system.img  
fastboot flash system_ext system_ext.img  
fastboot flash product product.img  
fastboot flash vbmeta_system vbmeta_system.img  
fastboot -w  
fastboot reboot

评论