adb详解及经常使用命令总结

前言

若是想要调试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中的断点

若是咱们要调试的断点很靠前,好比在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能够进行无线调试,甚至咱们能够在云测平台远程调试云测手机。工具

  1. 若是设备没有开启监听端口,须要先有线链接usb,终端输入要监听的端口号,开启adb server
adb tcpip <port> 例如5555
复制代码
  1. 断开有线链接
adb connect <device-ip-address>:<port>
复制代码

有时候adb运行该命令会报链接错误,这个时候能够尝试如下命令开发工具

  1. 关闭PC端的adb server
adb kill-server
复制代码
  1. 开启PC端的adb 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/*"

查看前台Activity

adb shell dumpsys activity top
复制代码

此方法一般用于很方便地定位activity类的名称,使用频率很高

查看正在运行的 Services

adb shell dumpsys activity services [<packagename>]
复制代码

查看应用详细信息

adb shell dumpsys package <packagename>
复制代码

设备IP 地址

adb shell ifconfig
复制代码

查看cpu信息

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
复制代码
相关文章
相关标签/搜索