https://rainmonth.github.io/posts/A191020.html
摘要
adb,指的是Android Debug Bridge,即Android调试桥,顾名思义,和Android调试有莫大的关系。可以在命令通过输入命令来查看Android系统支持的服务的各种运行状态。
环境配置
首先要已经搭建好Android开发环境(具体请自行百度)
其次,为了避免频繁调用cd(切换目录命令,建议配置好环境变量,Mac下具体配置如下)
1
export PATH=${PATH}:/Users/RandyZhang/Library/Android/sdk/platform-tools
全局配置选项
-a,使用该选项将监听所有的网络接口,而不仅仅是localhost;
-d,使用USB设备(即真机设备,当连有多个设备时将报错,因为不知道到底该用哪个)
-e,使用TCP/IP设备(即模拟器设备,同上多个设备将报错)
-s SERIAL,使用使用给定的序列号设备(序列号唯一,多个设备不会报错,会覆盖$ANDROID_SERIAL环境变量),使用如下:
1
adb -s SERIAL command
-p PRODUCT,指定输出apk的名字或输出路径(会覆盖$ANDROID_PRODUCT_OUT环境变量),使用如下:
1
adb -p name(or path) command
注意:这里是小写的p
-H,adb server的名称,默认localhost;
-P,adb server的端口号,默认5037;
-L SOCKET,在指定的socket上监听adb server,默认tcp:=localhost:5037;
常用命令
devices[-l], 列出已连接的设备(-l时输出详细结果);
help,查看帮助,如:
1
2
3
4#查看所有帮助
adb help
#查看commond命令的帮助
adb help commandversion,查看adb 版本号;
文件传输
push,将SOURCE_DIR推送到DIS_DIR,使用方式:
adb push SOURCE_DIR DIS_DIR
;pull,将REMOTE_DIR拉到LOCAL_DIR,使用方式:
adb pull REMOTE_DIR LOCAL_DIR
;
shell,通过输入
adb shell
,可以进入目标机器的shell命令行环境,改命令会单独介绍;安装与卸载
- install
- uninstall
shell命令
通用使用方法:adb [-d|-e|-s serial_number] shell shell_command
- adb shell am,am(activity manager)
- adb shell pm,pm(package manager)
- adb shell pm list permissions 列出权限组
am
am
,其实就是ActivityManagerService
的命令行表现形式而已,也就是说,通过AMS
的几乎所有功能都可以使用am来实现。am支持很多子命令,可以在shell环境下输入am
查看帮助说明,现列出几个重要的命令。
pm
dumpsys
Android系统源码com.android.server包下面定义了一系列的服务,如果对应的Java代码里面有dump方法,就支持使用dumpsys
来打印信息
连接Android设备,输入adb shell,进入到手机的shell交互界面
dumpsys --help
, 查看dumpsys的帮助信息
1 | usage: dumpsys |
dumpsys -l
,列出那些服务支持dump,但不进行dumpdumpsys --skip SERVICES
,dump 除了指定SERVICES外的其他服务的信息dumpsys SERVICES [ARGS]
,dump 指定SERVICES的信息,[ARGS]为SERVICES支持的参数
先看看支持dump哪些服务,输入dumpsys -l
,会输出当前运行的服务,常用的几个如下:
- activity,
- window
- batterystats
- package
- appwidget
- meminfo
- gfxinfo
下面对上面常用的一些命令做说明
activity
对应于ActivityManagerService.java
window
对应于WindowManagerService.java
batterystats
对应于BatteryStatsService.java
,
package
对应于PackageManagerService.java
,
memoinfo
dumpsys meminfo + 包名,查看特定的进程的内存信息
查看对应包名内存信息,如输入adb shell dumpsys memoinfo com.hhdd.kadahd
,会得到如下结果:
1 | Applications Memory Usage (kB): |
各项指标的含义:
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
gfxinfo
dumpsys是一款运行在设备上的Android工具,将 gfxinfo命令传递给dumpsys可在logcat中提供输出,其中包含各阶段发生的动画以及帧相关的性能信息。
比如运行
adb shell dumpsys gfxinfo com.hhdd.kada
,会输出如下结果:
1 | adb shell dumpsys gfxinfo com.hhdd.kada |
app安装/卸载
备份/恢复
调试
- adb bugreport [PATH],将bug报告输出到PATH指定位置
- adb jdwp,列出所有持有JDWP(Java 平台调试体系结构)的进程id
- adb logcat,logcat相关配置
安全
脚本命令
内部调试
- adb start-server 开启服务器
- adb kill-server关闭服务器
- adb reconnect 服务器端的重连
- adb reconnect device 设备端的重连
开启远程连接
断开远程连接
adb devices 查看已经远程连接的设备,如:
1
210.1.30.114:5555 device
10.1.30.50:5555 deviceadb disconnect 要断开的设备号,即可断开链接。如:
1
adb disconnect 10.1.30.50:5555
相关环境变量
2、安装(-r 替换已存在的应用)
adb -s 5LM7N16531010541 shell pm install -r "/data/local/tmp/tinker.sample.android"
adb push
例如:
1、推送
adb push /Users/RandyZhang/AndroidStudioProjects/tinker/tinker-sample-android/app/build/outputs/apk/app-debug.apk /data/local/tmp/tinker.sample.android
2、安装(-r 替换已存在的应用)
adb shell pm install -r “/data/local/tmp/tinker.sample.android”