ADB 工具

1. Android 系统主要目录描述

#目录           子目录                  功能描述
#/acct          /                  系统回收站,删除的系统文件
#/cache       /                   是缓存文件夹,主要放缓存的文件
#/data        /                    存放用户安装的软件以及各种数据
#/data       /app/               用户自己安装的apk文件放在这个目录下
# /data         /data/           用户安装文件存储位置,软件以包名 package name 来命名
#/data       /system/          记录手机安装信息等文件的目录
#/etc         /                      配置文件,指向/system/etc/
#dev         /                      设备文件,里面的文件很多都是设备模拟的文件系统
#/proc      /                       目录下包含着系统运行的各种信息
#/proc      /cpuinfo             查看CPU相关信息
#/proc      /meminfo           查看内存相关信息
#/storage   /                      手机存储设备,sdcard0表示第一块SD存储卡
#/mnt        /                      挂载点,sdcard存储卡挂载目录
#/sys         /                      存放linux内核文件
#/system   /                      存放Android系统文件
#/system   /app/                存放系统程序
#/system   /bin/                 存放的主要是Linux系统自带的组件
#/system  /build.prop         Andriod系统中很重要的文件,记录系统的设置和改变
#/system  /etc/                  主要存放安卓系统的核心配置文件
#/system  /fonts/               系统文字存放目录
#/system  /framework/       核心文件,系统平台运行框架
#/system   /lib/                  存放几乎所有的共享库(.so)文件
#/system   /media/             存放系统提示音以及系统铃声
#/system   /usr/                 用户的配置文件,如键盘布局、共享、时区文件等
#/sbin       /                       系统工具,用于调试adbd程序
#
Android 主要系统目录描述

2.Android测试环境搭建

第一步:安装JDK;下载地址:https://www.oracle.com/java/technologies/javase-downloads.html

第二步:安装Eclipse;下载地址:http://www.eclipse.org/downloads/

第三步:安装AndroidSDK;Android SDK下载地址:https://www.androiddevtools.cn/,进入网页,在SDK Tools例表项中选择对应的版本下载。配置系统环境变量:新建系统变量名:ANDROID_SDK_HOME,变量值D:softAndroid-SDK(安装目录),编辑Path变量:%ANDROID_SDK_HOME%platform-tools;%ANDROID_SDK_HOME% ools;%ANDROID_SDK_HOME%uild-tools29.0.3

3.ADB工具

3.1 ADB主要功能

1.可以快速更新设备或模拟器上的软件

2.可以在设备或模拟器上运行shell命令

3.可以同步设备或模拟器上的文件,即上传、下载文件

4.可以实时抓取APP运行时的Log信息

5.查看设备硬件信息、查看应用程序占用资源

3.2 连接设备或模拟器

1.连接真实手机设备:

(1)USB连接:通过USB将手机连接到PC端->下载安装android手机驱动->在手机设置找到开发者选项打开usb调试->adb devices->adb -s device_id shell

(2)WIFI连接:在手机设置找到开发者选项打开网络usb调试->adb devices能检测到对应设备->adb tcpip 5555(确定手机端和电脑端的wifi通讯端口)->拔掉usb线,再通过命令(adb connect 192.xxx.xx.x:5555)连接。注意:需要电脑和手机在同一网段,才能通过Wifi正常连接

2.连接模拟设备

下载夜神模拟器安装->用命令adb connect 127.0.0.1:62001连接

3.3ADB基本命令

1.adb 服务

(1)adb start-server     #启动adb服务器,当adb出现异常后,可以重启adb 
(2)adb kill-server     #关闭adb服务器,当adb状态不稳定,可以关闭adb

2.设备

(1)adb devices     #查询连接的设备或模拟器
#命令adb devices 运行后有三种状态:
#device:表示找到设备并与adb连接上
#no device:表示当前没有模拟器在运行,或者没有找到设备。
#offline:表示设备或模拟器没有与adb相连或者没有响应。
(2)adb -s device_id cmd     #向特定设备发送adb命令  
#
adb devices
List of devices attached
97ZD4D8D0E      device
adb -s 97ZD4D8D0E shell
rk3399_imvt:/ #

3.重启

(1)adb reboot     #正常重启
(2)adb reboot bootloader     #重启到bootloader(刷机模式)
(3)adb reboot recovery     #重启到recovery(恢复模式)

4.查看service

adb shell service list     #查看service

5.查看进程

(1)adb shell ps     #列出进程表及其pid
(2)adb shell kill pid     #杀死指定pid的进程
(3)adb shell ps -p pid     #查看指定进程信息
(4)adb shell "ps | grep <被测应用包名>"     #获取指定应用的进程ID(PID),注意要在adb shell 后面加双引号,否则会报错grep不是内部命令
(5)adb shell cat /proc/$pid/status     #通过pid查看对应程序的进程状态、用户ID(UID)

6.查看系统当前内存使用情况

(1)adb shell cat /proc/cpuinfo     #查看CPU相关信息
(2)adb shell cat /proc/meminfo     #查看内存相关信息
(3)adb shell dumpsys meminfo package     #查看指定包名应用内存使用情况

7.Activity 调试

(1)adb shell am start -n your.package.name/your.package.name-activity     #启动应用界面
注意:如果用该命令行启动第三方应用报错:Security exception: Permission Denial,是无权限问题,可先使用adb root获取权限
例:
adb root
adb shell am start -n tv.danmaku.bili/.MainActivityV2
(2)adb shell am force-stop package    #停止应用

8.安装apk

(1)adb  install     #用来向设备安装软件。
#命令格式如下:adb install [option] <path>
#例:
adb install E:2019-10-28	estapp-release.apk
Performing Streamed Install
Success #运行命令后,出现Success,表示成功安装到设备或者模拟器上。
(2)adb install -r xxx.apk     #覆盖安装(保留缓存和数据)

9.卸载apk

(1)adb uninstall     #用来卸载设备上的软件。
#命令行格式如下:adb uninstall [option] <package>
#
adb shell pm list package #例出包名,然后卸载对应的包adb uninstall com.sina.weibo
Success #运行命令后出现Success,表示成功卸载应用
(2) adb uninstall -k package     #卸载时保留数据和缓存目录

10.获取当前打开应用的相关信息

(1)adb shell dumpsys window | findstr mCurrentFocus     #获取当前打开应用的包名或窗口名
(2)adb shell dumpsys window  | findstr mFocusedApp     #获取当前打开应用的包名或窗口名

11.文件管理

(1)adb pull    #将设备或模拟器中文件复制到PC端。命令格式如下:
adb pull <remote> <local>#
adb root  #先获取root权限
adb pull /data/system/appops.xml E:2019-10-28	est/data/system/appops.xml: 1 file pulled. 4.9 MB/s (21014 bytes in 0.004s)  #将安卓设备上的appops.xml文件拷贝到PC端
(2)adb push    #将PC端文件复制到设备或模拟器中。命令格式如下:
adb push <local> <remote>
(3)adb shell rm /sdcard/text.txt     #删除文件
-f 强制删除文件不需要确认-r 递归删除文件夹内文件-i 删除文件前需要确认
(4)adb shell mkdir -p /sdcard/temp/test/    #指定-p递归创建目录
(5)adb shell touch /sdcard/text.txt     #创建文件
(6)adb shell cp /sdcard/text.txt /sdcard/text/
(7)adb shell mv /sdcard/1.txt /sdcard/2.text     #移动同一目录下文件相当于重命名文件

12.查看设备应用

(1)adb shell pm list packages     #查看设备所有应用包名
(2)adb shell pm path your.package.name     #列出指定包名对应的apk路径
#例adb shell pm path com.android.camera2
package:/product/app/Camera2/Camera2.apk
(3)adb shell pm clear your.package.name     #清空指定包名对应的应用的数据和缓存文件

13.申请 root 权限

adb shell
su
或
adb root

14.查看手机上所有的包名

adb shell
cd data/data;ls

15.Linux多个命令行一起执行可以用";"或者"&&"进行分割

16.adb shell 查看文件后退出

exit 或者 Ctrl + D

17.截取屏幕截图

adb shell screencap /sdcard/screen.png
#例:屏幕截图,保存到PC端$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png
18.录制视频

adb shell screenrecord [options] filename
#
adb shell screenrecord /sdcard/demo.mp4

按Ctrl+C键可停止屏幕录制;如果不手动停止,到三分钟或--time -limit设置的时间限制时,录制将会自动停止

screenrecord 实用程序的局限性:
(1)音频不与视频文件一起录制。
(2)无法在搭载 Wear OS 的设备上录制视频。
(3)某些设备可能无法以它们的本机显示分辨率进行录制。如果在录制屏幕时出现问题,请尝试使用较低的屏幕分辨率。
(4)不支持在录制时旋转屏幕。如果在录制期间屏幕发生了旋转,则部分屏幕内容在录制时将被切断。
screenrecord 选项说明:
--help   显示命令语法和选项
--size width x height   设置视频大小:1280x720。默认值为设备的本机显示屏分辨率(如果支持);如果不支持,则为 1280x720。为获得最佳效果,请使用设备的 Advanced Video Coding (AVC) 编码器支持的大小。
--bit-rate rate  设置视频的视频比特率(以 MB/秒为单位)。默认值为 4Mbps。您可以增加比特率以提升视频品质,但这样做会导致视频文件变大。下面的示例将录制比特率设为 6Mbps:screenrecord 
--bit-rate  6000000 /sdcard/demo.mp4
--time-limit time     设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)。
--rotate    将输出旋转 90 度。此功能处于实验阶段。
--verbose   在命令行屏幕显示日志信息。如果您不设置此选项,则该实用程序在运行时不会显示任何信息。
adb 基本命令

>待补充

#1. adb logcat #用来抓取log信息进行bug跟踪。命令格式如下:
adb logcat [option] [filter-spec]

(1)logcat 命令选项说明:

-v #日志输出格式,输出格式列表:

brief:显示优先级、标记以及发出消息的进程的 PID。
long:显示所有元数据字段,并使用空白行分隔消息。
process:仅显示 PID。
raw:显示不包含其他元数据字段的原始日志消息。
tag:仅显示优先级和标记。
thread::旧版格式,显示优先级、PID 以及发出消息的线程的 TID。
threadtime(默认值):显示日期、调用时间、优先级、标记、PID 以及发出消息的线程的 TID。
time:显示日期、调用时间、优先级、标记以及发出消息的进程的 PID。


-b #加载一个日志缓冲区,参数选项如下:

radio:查看包含无线装置/电话相关消息的缓冲区。
events:查看已经过解译的二进制系统事件缓冲区消息。
main:查看主日志缓冲区(默认),不包含系统和崩溃日志消息。
system:查看系统日志缓冲区(默认)。
crash:查看崩溃日志缓冲区(默认)。
all:查看所有缓冲区。
default:报告 main、system 和 crash 缓冲区。

-s #设置默认的过滤级别是silent,如指定 '* :s'
-f #将log输出到指定的文件,默认为标准输出
-r #循环log的字节数,默认值是16,需要和-f选项一起使用
-n #设置循环log的最大数目,默认值是4,需要和-r选项一起使用
-g #打印日志缓冲区的大小并退出
-c #清除缓冲区中全部日志并退出(清除完后可以使用-g查看缓冲区)
-d #将缓冲区的Log转存到屏幕中然后退出(不阻塞)
-G #指定日志缓冲区大小

#
adb logcat #表示时时抓取整个手机的log信息并在命令提示窗口输出信息。
adb logcat >D:log.txt #将实时抓取log信息并保存到本地log.txt文件
adb logcat -v time >D:log.txt #生成输出格式为 time 的log信息
adb logcat -b radio >D:log.txt #获取网络射频信息。
adb logcat -b events >D:log.txt #获取事件信息
adb logcat -v time -b main -b radio -b system >logcat.txt #获取log信息加上时间,显示主要缓冲区以及电话和系统相关日志
adb logcat -G 5M #指定5M缓冲区大小
adb logcat -v thread #生成输出格式为 thread 的log信息

(2)logcat 命令过滤项说明
-V #Verbose 显示全部信息
-D #Debug 显示调试信息
-I #Information 显示一般信息
-W #Warning 显示警告信息
-E #Error 显示错误信息
-F #Fatal 显示严重错误信息

#
adb logcat *:E >E:	est_toolsadblog-list	ext1.log #输出E级以上的日志信息

此外adb logcat 可以使用管道来设置过滤内容,还可以结合匹配正则表达过滤内容
adb bugreport #获取bugreport信息。bugreport记录android启动过程的log,以及启动后的系统状态,包括进程列表、内存信息、VM信息等。
adb shell dumpsys dropbox --print #获取dropbox信息。记录出现过的异常等信息,用于分析crash、重启等。
adb pull /data/anr/ . #获取anr信息。系统或者应用无响应时抓取的信息文件。

2.其他日志相关命令
ctrl+c #退出日志抓取
adb logcat

日志相关分析:
1.logcat抓取的日志中,Crash问题->搜关键字:FATAL EXCEPTION;无响应(ANR)问题->搜关键字ANR in
2.测试时出现ANR问题时需要提交抓取的日志文件和/data/system/dropbox下的adta_app_anr@xxxxxx.txt.gz文件或/data/anr/目录下的anr_2021-xx-xx-xx-xx-xx-xxx文件,方便开发定位问题,有多个anr日志时,可用ls -l命令,查看该目录下文件的详细信息,然后根据创建时间,找到目标文件,用adb pull命令拷贝到PC端

>待补充

adb 提供了shell终端,通过shell终端可以在模拟器或者设备上运行各种命令。这些命令是linux shell的一个子集,在手机的目录/system/bin下,很多命令跟bash shell是一样的,譬如ls、pwd、cat等。
#可以通过adb shell命令名来使用这些命令,比如:adb shell ls,也可以先用命令:adb shell进入设备或者模拟器的shell终端,再使用相应的命令。当设备在shell状态下,可以用exit 来退出终端。

#adb shell常见命令用法
1. adb shell dumpsys battery     #查看电池电量的相关信息

adb shell dumpsys battery     #输入该命令后出现如下信息
Current Battery Service state:
  AC powered: false     #表示电源供电
  USB powered: false     #表示使用USB供电
  Wireless powered: false
  Max charging current: 0
  Max charging voltage: 0
  Charge counter: 0
  status: 4     #表示电池电量,5表示电池电量是满的
  health: 2     #电池健康状态,有6个值,分别是0和1表示未知状态,2表示良好,3表示过热,4表示损坏,5表示过压
  present: false     #表示手机上是否有电池
  level: 79     #表示电池剩余量79%
  scale: 100     #表示电池电量最大值是100%
  voltage: 7956     #表示当前电池电压值
  temperature: 0     #表示当前电池温度值
  technology: Li-ion     #Li-ion为电池技术标准,Li-ion表示锂电池

2. adb shell dumpsys wifi   #查看wifi网络信息

3.adb shell dumpsys meminfo     #查看所有应用运行过程中占用内存情况

4.adb shell dumpsys cpuinfo     #查看CPU的动态占用率,按CPU的使用率从大到小排列
 
5.adb shell top -m 5 -n 10 -s cpu #查看前5的CPU占用进程,-m:显示的进程数量,-n:数据的刷新次数,-s:按什么方式排列,-d:刷新时间间隔,默认为5S

6.adb shell dumpstate     #查看系统当前状态信息。信息内容包括:系统构建版本信息、网络相关信息、内核相关信息、运行时间信息、内存使用情况、CPU使用情况、进程相关信息等。

7.adb shell dmesg     #查看内核日志信息

8.adb shell df     #查看手机系统各个分区信息

9.adb shell getprop gsm.network.type     #获取手机网络类型信息

10.adb shell getprop ro.build.version.release     #获取手机系统版本信息

11.adb shell cat /proc/version     #获取设备内核版本信息

12.adb get -serialno     #获取设备序列号

13.adb get -state     #查看设备或模拟器的当前状态,其中device表示已连接

14.adb shell am (Activity Manager)    #模拟一些操作设备动作

15.adb shell pm (package manager)     #查询设备上的应用
adb shell

 adb用户手册官方链接:https://developer.android.google.cn/studio/command-line/adb?hl=zh-cn

>>>>>待续

原文地址:https://www.cnblogs.com/wuxunyan/p/14713355.html