若是想要调试Android系统里的应用,通常的方式是手动经过jwdp attach到指定应用的虚拟机进行调试,这种方式很费事费力。除此之外,想要拷贝修改文件,查看系统信息等等,都不是很方便,好在系统给咱们提供了一个很好的工具。shell
adb (Android Debug Bridge) 全称安卓调试桥,是一个集调试应用、操做系统内文件、查看系统/应用相关信息于一身的开发工具。缓存
adb和安卓系统中的系统服务同样,一样采用了CS (client-server) 的架构。其内部主要包含三个部分: adb client、adb server和adbd
。其中,bash
adb client
: 运行于PC上,提供PC端运行的命令,好比咱们常常调用的adb shell。adb server
: 一样运行于PC上,做为后台进程,负责client与手机/模拟器中的守护进程(daemon)
的socket通讯,正如其名像一座桥同样。adbd (adb daemon)
: 运行于手机/模拟器,做为系统启动后的守护进程若是咱们要调试的断点很靠前,好比在Application的onCreate方法中,以致于不能足够快的将进程设置为debug模式,此时可使用adb命令解决该问题架构
在应用未启动时,输入如下命令后点击app启动app
adb shell am set-debug-app -w <your-app-package-name>
复制代码
若是不想每次都运行该命令才能开始调试,能够加上参数socket
adb shell am set-debug-app -w --persistent <your-app-package-name>
复制代码
使用此参数,记得调试完成后要关闭tcp
adb shell am clear-debug-app
复制代码
正由于adb这种cs架构,因此adb能够进行无线调试,甚至咱们能够在云测平台远程调试云测手机。工具
adb tcpip <port> 例如5555
复制代码
adb connect <device-ip-address>:<port>
复制代码
有时候adb运行该命令会报链接错误,这个时候能够尝试如下命令开发工具
adb kill-server
复制代码
adb start-server
复制代码
5.Android端开启adbd(须要root)ui
su
setprop service.adb.tcp.port 5555
start adbd // 若是失败,则先进行stop adbd
复制代码
adb shell pm list packages
复制代码
参数 | 显示列表 |
---|---|
-f | 显示应用关联的 apk 文件 |
-s | 只显示系统应用 |
-3 | 只显示第三方应用 |
adb install <path_to_apk>
复制代码
参数 | 含义 |
---|---|
-r | 容许覆盖安装 |
-d | 容许降级覆盖安装 |
-g | 授予全部运行时权限 |
adb uninstall [-k] <packagename>
复制代码
参数-k:表示卸载应用但保留数据和缓存目录
adb shell pm clear <packagename>
复制代码
此操做在应用内是没法调用的,除非root.
若是仅想删除应用数据而保留用户数据,能够尝试使用(须要root), adb shell su -c "rm -rf /data/data/<app's package>/cache/*"
若是是debug包,可使用run-as
命令在非root状况下删除数据, adb shell run-as <app's package> "rm -rf /data/data/<app's package>/cache/*"
adb shell dumpsys activity top
复制代码
此方法一般用于很方便地定位activity类的名称,使用频率很高
adb shell dumpsys activity services [<packagename>]
复制代码
adb shell dumpsys package <packagename>
复制代码
adb shell ifconfig
复制代码
adb shell cat /proc/cpuinfo
复制代码
adb shell cat /proc/meminfo
复制代码
截图并保存在当前文件目录下,很是实用
adb exec-out screencap -p > sc.png
复制代码
若是常常须要使到截图功能,能够考虑写shell脚本,一个简单的实现方式以下,
snap_screen() {
//自定义要保存的图片名称
if [ $# -eq 0 ]
then
//不输入名称,则默认值以下
name="screenshot.png"
else
name="$1.png"
fi
adb shell screencap -p /sdcard/$name
adb pull /sdcard/$name
adb shell rm /sdcard/$name
curr_dir=pwd
echo "save to `pwd`/$name"
}
复制代码
该脚本能够保存在~/.zshrc
(这里推荐一下终端zsh,很是好用), 或~/.bashrc
里,source一下,下次就能够很方便的使用了
录制屏幕以 mp4 格式保存到 /sdcard:
adb shell screenrecord /sdcard/filename.mp4
复制代码
须要中止时按 Ctrl-C
,默认录制时间和最长录制时间都是 180 秒。
若是须要导出到电脑:
adb pull /sdcard/filename.mp4
复制代码