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程序 #
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 在命令行屏幕显示日志信息。如果您不设置此选项,则该实用程序在运行时不会显示任何信息。
>待补充
#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 #退出日志抓取
日志相关分析:
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用户手册官方链接:https://developer.android.google.cn/studio/command-line/adb?hl=zh-cn
>>>>>待续