解释:ADB中客户端就是用户操作的位置属于我们常见的客户端;守护进程就是在手机or模拟器中的后台;服务器就相当于一个中间件,类似于代理一样,server服务器用于客户端和守护进程的通信中转站
adb环境搭建
#查看帮助手册
adb -help
#检测链接到电脑的安卓设备
adb devices
1.真实手机
2.模拟器
使用mumu模拟器
adb connect 127.0.0.1:7555
127.0.0.1表示本地模拟器,7555表示mumu的端口
3.设备检测
#查看设备是否连接
adb devices
如果ACK,说明有进程占用了端口号,假设是5037,则通过
netstat -nao|findstr "5037"
找到对应的pid,通过taskkill杀死,
如果杀不掉则通过
tasklist |findstr "pid号"
找到是谁
#安卓类似于一个Linux系统,进去手机的路径
adb shell
#这里之后可以使用linux命令查找系统环境
#切换手机目录sdcard文件
cd sdcard
#退出,必须通过exit退出命令模式
exit
pull 和 push 命令可令你复制任意的目录和文件到一个模拟器/设备实例的任何位置。
1.把文件放入手机模拟器
#注意:电脑路径在前
adb push 原路径(电脑) 目标路径(手机)
2.把文件从模拟器中剪切出来
adb push 原路径(手机) 目标路径(电脑)
adb pull /sdcard/myscte.png d:\TesterT\doc
命令报错汇总:
No such file or directory:看一下文件顺序是否有误,是不是把电脑和手机目录位置写错了
Read-only file system:权限问题,参考:http://www.111cn.net/sj/android/44496.htm
# 打印日志输出成文档,>表示重定向文件
adb logcat -v time>D:\logCrash.txt
adb logcat >D:\logCrash.txt
# ctrl+c终止当前日志获取
# 鼠标拖动文件到命令行就可以显示当前文件的路径
1.安装APP
#路径可以拖动进入
adb install [apk的路径]
#
adb install -r [路径]
2.卸载APP
adb uninstall +(app包名)
# 包名是手机上唯一的标识的,可以用包名把app卸载
3.查询APP的包名
手机上每一个APP都有唯一的包名,每个APP的界面有很多,对应就是ACTIVITY,输入命令前,先在模拟器打开APP,然后打开对应的页面
# 查找包名
adb shell dumpsys activity top|findstr "ACTIVITY"
#显示内容:
ACTIVITY com.ss.android.article.news/.activity.MainActivity 24b53301 pid=1821
# 格式:
ACTIVICY 包名/Activity名 24b53301 pid=1821
这个wifi链接并不是完全抛弃USB线,而是在之前会通过USB链接手机,然后才可以使用wifi调试
adb connect
adb disconnect
如何通过远程wifi的方式去操作手机:
1.手机,电脑处于同一网段
2.把手机链接上电脑,通过adb devices可以链接上手机
3.通过adb tcpip 5555确定双端通信端口号
4.拔掉USB线,通过adb connect 手机ip地址,不需要端口号,
#查看设备状态
adb get-state
1.
adb shell pm list package
adb zhell pm list package -s
#获取对应apk的包和对应的包名
adb shell pm list package -f
#启动APP
adb shell am start -n com.ss.android.article.news/.activity.MainActivity
adb shell am start -n 包名/activity
2.根据手机data获取包名
#进入shell命令行中
adb shell
#切换到目录
ls data/data
3.获取当前页面的包名
adb shell dumpsys activity | find "mFocusedActivity"
adb shell screencap -p /手机路径/图片名称
#查看是否存在内存泄漏情况-堆空间没有被回收
adb shell dumpsys meminfo 包名
#查看是否存在内存泄漏情况
adb shell dumpsys cpuinfo 包名
如果内存一直处于攀升状态,就说明会有内存泄漏
adb reboot
压力稳定性介绍,模拟用户触摸屏幕,滑动,按键(音量,电源,home等)等操作来对设备上程序进行压力测试,检测程序多久的时间会发生异常。
参考:http://note.youdao.com/noteshare?id=fb20bebd594d2187d5be11b092a0a87e&sub=DBBA6590E6B04EC5B112ACCF226D4E1F
#自动开始测试此次数
adb shell monkey (+命令参数) 次数
#查看帮助手册
adb shell monkey -help/-h
# 在命令行窗口打印执行日志
adb shell monkey -p com.tencent.mm –v -v -v 1000
# 加上seed命令表示执行顺序和一致,用户问题的复现
adb shell monkey -p com.tencent.mm –v -v -v -s 450 1000
# 加上延时参数以免操作太快
adb shell monkey -p com.tencent.mm –v -v -v -s 450 --throttle 500 1000
#加上忽略crash
adb shell monkey -p com.tencent.mm –v -v -v -s 450 --throttle 500 --ignore-crashes --ignore-timeouts 100000
查询了Monkey的源码发现这个异常报错情况:
catch(NumberFormatException e){
System.err.println(*Error:Count is not a number*);
}
参考:https://wenku.baidu.com/view/c3e6a160856a561253d36f4f.htm
解决方式:手动输入,不要复制粘贴,cmd,命令行中复制粘贴会转换成字符串格式,
当执行了monkey之后想要终止monkey使用ctrl+c是不可以的,所以需要进入到adb shell的环境,ps检测当前正在运行的进程monkey,通过进程号以及kill命令杀死进程
当然在由于Monkey的局限性,在很多时候无法对特定的业务逻辑进行稳定性测试这个时候就需要