① ADB常用命令
android 调试桥 (adb) ,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
客户端: 用于发送命令。客户端在开发机器上运行。可以通过发出 adb 命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)
PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat -ano|findstr "5037"
守护程序 (adbd): 用于在设备上运行命令。守护程序在每个设备上作为后台进程运行
执行adb shell ps | grep adbd, 可以找到该后台进程,Windows使用findstr替代grep.
adb nodaemon server
服务器(Service): 用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行
adb服务启动后,Windows可以在任务管理中找到adb.exe; linux ps -ef | gref adb 可以查看service
一般都是通过这样子的格式 adb [-d|-e|-s <设备序列号>] <子命令>
通常只有一台设备就忽略 [-d|-e|-s ] 这一部分
这里介绍一些常用的命令:
获取设备列表及设备状态
获取设备的状态
注意:设备的状态有 3 钟,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
结束 adb 服务
启动 adb 服务
注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务。
打印 Android 的系统日志
打印 mpsys、mpstate、logcat 的输出,也是用于分析错误输出比较多
打印日志后重定向到一个文件中
安装应用,覆盖安装是使用 -r 选项
注意:有些adb版本无法支持安装中文的apk
查看手机应用包名
查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数
卸载应用,后面跟的参数是应用的包名,请区别于 apk 文件名
'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录
将 Android 设备上的文件或者文件夹复制到本地
adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log
推送本地文件至 Android 设备
获取连接到的手机的序列号
获取设备的连接状态
等待设备连接成功
该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。
其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。
Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。
如何在手机中执行Shell命令?
每次都加上adb shell来进行命令的发送与执行
先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。
使一个apk处于禁用状态,相当于卸载了:
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:adb shell su disable com.UCMobile/.main.UCMobile
同时我们在手机上发现,UC浏览器的图标不见了
让一个apk从禁用状态恢复过来
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:
adb shell su enable com.UCMobile/.main.UCMobile
同时我们从手机上发现,UC浏览器的图标又出现了。
查看一个apk所在的路径
adb shell pm path com.UCMobile
查看手机中装的所有的包
屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4
录屏设置时长10s,命名为demo.mp4
注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示
解决方法:
安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕
scrcpy -s device --render-expired-frames -Nr ./demo.pm4
--render-expired-frames:尽可能最大帧率
-N:不在PC端展示
-r:录制mp4/mkv文件
关闭设备请求,开启设备
设备关机以及重启
pm(package manager)可以获取一些安装到Android设备上的app的信息
pm list packages 用法:list packages [ options] filter
获取所有的应用的包名
列出系统应用
列出第三方应用
查看它们的关联文件
adb shell pm list package -f
查看软件包的安装来源
pm mp 包名 很多mp信息
安装应用
apk如果在电脑用 adb install
如果在Android设备上用 adb shell pm install
卸载应用,同adb uninstall ,后跟包名
清除应用数据
am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)
启动一个Activity
获取到package和launch_activity
AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity
这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;
启动华为系统相机
打开音乐播放器
播放指定音乐:
先停止目标应用,再启动
等待应用完成启动
启动网页(android.intent.action.VIEW具体参考Android官网)
结束应用
input
模拟输入,向获得焦点的EditText控件输入内容
返回主界面
发送一个点击操作的指令,参数是<x> <y>坐标
从左往右滑动屏幕, /从 100 100 经历300毫秒滑动到 200 200
长按操作,在 100 100 位置长按 1000毫秒
② adb 常用命令
1、adb shell am force-stop 后跟包名,结束应用
2、adb install +包名 adb安装apk (覆盖安装是使用 -r 选项)
3、adb uninstall +包名 adb卸载apk
adb uninstall -k cnblogs.apk 卸载app但保留数据和缓存文件
4、adb reboot 重启Android设备
5、adb devices 获取连接的设备列表及设备状态
6、adb push (PC到Android设备)
例:adb push E:\0713\ellip_factroy__debug.apk storage/self/primary
7、adb pull(Android设备到PC)
例:adb pull /storage/self/primary/EL_v3.0.0.6_release.apk E:\0713
8、adb shell pm list package 列出所有的应用的包名 (-s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源)
9、input : 向 Android 设备发送按键
1)adb shell input keyevent + 按键事件 发送按键事件 例如:adb shell input keyevent KEYCODE_HOME 模拟按下Home键
2)3 adb shell input tap +触摸事件的位置 , 对屏幕发送一个触摸事件 例如:点击屏幕上坐标为 500 500 的位置(adb shell input tap 500 500)
3)adb shell input swipe 滑动事件 例如:从右往左滑动屏幕 (adb shell input swipe 800 600 100 600)
10、screencap 截图命令 adb shell screencap -p /sdcard/qq/1.png
11、screenrecord 录屏命令 adb shell screenrecord /sdcard/qq/1.mp4,执行命令后操作手机,ctrl + c 结束录制
12、clear 清除应用数据 adb shell pm clear com.
13、复制、删除 、查看文件、新建文件夹
adb shell进入Android Linux命令中,
复制cp: cp -f /sdcard/qq/1.png /sdcard/aa
删除文件rm:rm /sdcard/qq/1.png
删除文件夹rm -r:rm -r /sdcard/qq
查看文件cat:cat /sdcard/qq/1.txt
新建文件夹:mkdir /sdcard/cc
adb shell mkdir -m 777 /sdcard/cc 创建文件夹cc并给文件夹赋予读写执行的权限
adb shell mkdir -p/sdcard/Download/Demo/test1,如果Demo目录不存在,执行该条命令会创建Demo目录和其子目录test1
新建文件:touch /sdcard/cc/1.txt
移动文件:adb shell mv /sdcard/Download/test1.log /sdcard/Download/Demo/
重命名:adb shell mv /sdcard/Download/Demo/test1.log /sdcard/Download/Demo/test.lg
14、adb logcat > D:\log.txt 将日志打印到电脑上
15、获取手机内部存储信息: adb shell df /data
获取sdcard存储信息:adb shell df /storage/sdcard
③ adb命令和monkey总结
移动动测测试试基基础础
adb常常用用命命令令总总结结
1. adb / adb -help 使用帮助
2. adb devices 查看连接到电脑的设备
3. adb install example.apk 安装程序
4. adb -s emulator-5554 install example.apk 安装程序到指定的设备上(模拟器)
5. adb pull <remote> <local> 将设备上文件保存到电脑上
6. adb push <local> <remote> 将本地的文件上传到设备上
7. adb start-server 重启adb服务
8. adb kill-server 杀掉adb服务
9. adb shell 进入命令行交互模式,进入之后可以像在linux输入shell命令一样来操作手机设备(android本来就是基于linux的)
10. adb logcat <信息显示优先级参数> 显示日志信息 优先级从低到高顺序排
11.adb shell cat /proc/cpuinfo 查看手机CPU,
12.adb shell ps 查看进程信息
Monkey命令实战
1.Monkey是什么?
Monkey是Android中的一个命令行工具,可以运行在模拟器或者实际设备中
向系统发送伪随机的用户事件流(按键输入、触摸屏输入、手势输入等)
实现对正在开发的应用程序进行测试
Monkey测试之一种为了测试软件的稳定性、健壮性的快速有效的方式
2.Monkey的特征
测试对象仅为应用程序包,有一定的局限性(不能对源码进行测试)
Monkey测试使用的事件流数据是随机的,不能进行自定义
可以对MonkeyTest对象,事件数量,类型、频率等进行设置
3. Monkey使用
adb shell monkey [options]
adb shell monkey -p 包名 -v 500
-p 指定测试程序包名
-v 显示默认程度的信息
500 事件数设定为500
例如: adb shell monkey -p com.android.calculator2 -v 500
4. Monkey命命令令结结果果分分析析
1. 找monkey里面那个出错的地方
2. 查看monkey里面出错前的一些事件动作,并手动执行该动作
3. 若以上步骤还不能找出,使用之前执行的monkey命令再执行一遍,seed值要一样(seed值一样,发送的伪随机事件流也一样)
4. 注意第一个switch以及其他信息
seed值和,不同event类型比例
5.Monkey测试的目的
1. ANR问题:在日志中搜索“ANR”
2. 崩溃的问题:在日志中搜索“Exception”
3. ANR:Application Not Responding,在Android中,如果应该程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应
用程序无响应对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”应用。 好的程序应该能流畅运行,不能出现ANR问题
Monkey命令进阶
1.运行时机
产品功能稳定之后进行
2. monkey更更复复杂杂的的命命令令
adb shell monkey -p packagename -v -v -- throttle 600 88
-v :代表整个Monkey运行的次数,多个 -v 可以定制Monkey报告的等级
--throttle 600 : 每个操作都间隔时间600ms
88 :执行的事件数
adb shell monkey -p packagename -v -v --pct-touch 50 --pct-trackball 30 --throttle 600 88
adb shell monkey -p packagename -v -v --pct-touch 50 --pct-trackball 30 -s 1234 --throttle 600 88
--pct-touch :设置在整个过程中点击操作所占的百分比
--pct-trackball: 设置滚轮在所用操作中的百分比
--ignore-crashes:崩溃之后继续测试,重新启动程序
--ignore-timeouts:遇到超时,也继续执行
-v:
命令行的每一个-v将增加反馈信息的级别
Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息
Level 1提供较为详细的测试信息,如逐个发送到Activity的事件
Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity
更多monkey命令:http://xqtesting.blog.51cto.com/4626073/1430654
实测命令(经常用到的,可以参考):
adb shell monkey -p com.xx.xxx(包名)--throttle 500 --ignore-crashes --igonre-timeouts --ignore-security-exceptions --igonre-native-crashes --
monitor-native-crashes -v -v -v 1000000 >> D:\monkeyScreenLog.log
说明:忽略crashes、timeout等是为了出问题是monkey继续运行下去,希望能抓取更多的出错信息
3.可可以以练练习习使使用用的的apk包名
com.android.calculator2
com.android.browser
com.android.music
com.android.email
com.android.contacts
monkey也可以进行压力测试。
可靠性测试
稳定性测试:长时间使用软件不会出现无响应
monkey:安卓系统常用稳定性和压力测试工具
语法:monkey -p 包名 --throttle 数值(间隔时间,单位ms) -v 数值(操作次数)
monkey -p com.emicro.emicrophone --throttle 500 -v 300
百分比事件
0:点击事件 参数--pct-touch
1:滑动事件 --pct-motion
2:缩放事件 --pct-pinchzoom
3:轨迹球事件 --pct-trackball
4:屏幕旋转 --pct-rotation
5:基本导航事件 --pct-nav
6:主要导航事件 --pct-majornav
7:系统按键事件 --pct-syskeys
8:activity启动事件 --pct-appswitch
9:键盘唤出隐藏事件 --pct-flip
10:其他事件 --pct-anyevent
异常测试 :断电,断网,异常退出。。。
adb 调试桥
adb devices 检查设备是否连接
adb install apk文件路径文件名
adb uninstall 包名 卸载
aapt d badging apk文件路径文件名
adb shell 进入安卓系统
④ Android手机软重启adb命令是什么
运行设备的shell(命令行)。
管理模拟器或设备的端口映射。
计算机和设备之间上传/下载文件。
将本地apk软件安装至模拟器或android设备。
ADB一个 客户端-服务器端 程序, 其中客户端是用来操作的电脑,服务器端是android设备。
1、 查看设备 *adbdevices。这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示。
2、 安装软件:adbinstall <apk文件路径>。
这个命令将指定的apk文件安装到设备上。
3、 卸载软件
adbuninstall <软件名>。
adbuninstall -k <软件名>。
如果加 -k 参数,为卸载软件但是保留配置和缓存文件。
⑤ Android常用的ADB命令
重启:adb reboot
推文件:adb push E:\xxx.txt storage/sdcard
拉文件:adb push storage/sdcard .
将日志保存到电脑文件: adb logcat > xxx. xxx电脑文本地址
清除指定应用的数据和缓存:adb shell pm clear 例:adb shell pm clear com.yzl.test
查看日志缓冲区大小:adb shell logcat-g
设置日志缓冲区大小:adb logcat-G10M
打开蓝牙:adb shell svc bluetooth enable
关闭蓝牙:adb shell svc bluetooth disable
查询蓝牙是否打开:adb shell settingsgetglobalbluetooth_on
获取蓝牙Mac地址:adb shell settingsgetsecure bluetooth_address
获取某个包名的安装路径:adb shell pm path com.xx.xx
查看所有存活的进程:adb shell ps
过滤关键字查看adb shell ps|findstr xxx
强制安装版本号更低的apk:adb install -r -d "C:\xx.apk"
对指定应用进行500次模拟触摸事件:adb shell monkey -p com.yzl.test -v 500
查看某个apk的应用信息、版本信息:adb shell mpsys package com.yzl.test
查看已安装应用列表:adb shell pm list package或adb shell pm list packages-s