一、Android-SDK 压缩包下载
Android-SDK 压缩包下载地址:www.android-studio.org
下载后可解压到E盘,新建SDK目录 下, adb 工具在E:\SDK\android-sdk-windows\platform-tools 中
二、配置环境变量
1、右击 计算机-属性-高级系统设置-环境变量
2、在系统变量下点击新建按钮,输入环境变量名android(自己的习惯命名),将android开发工具的路径导入
在加入下个路径的时候要加上英文的分号,注意路径一定要对
3、 在path中添加刚刚添加的环境。选择系统变量中Path,点击编辑按钮,输入刚刚建好的环境,方法和配置java一样,记住要加两个百分号,如图:
4、测试环境变量
在cmd中输入adb
(如果不配置,则需切换到 adb 所在的路径下运行,即 E:\SDK\android-sdk-windows\platform-tools)
三、连接手机
1、用手机连接电脑,打开手机-设置-开发者选项-开启 USB 调试
2、查看连接的设备:adb devices
如出现以下情况:
* daemon not running. starting it now *
ADB server didn't ACK
* failed to start daemon *
原因:
有另外一个应用占用了ADB SERVER的端口,也许是adb shell本身,结束进程中的adb.exe并重新启动adb试试。。
猜测是某个程序占用了adb端口。于是按此思路查找。
5037为adb默认端口 查看该端口情况如下:
netstat -aon|findstr "5037"
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 6540
发现6540占用了 5037端口,继续查看6540的task,发现是wandoujia .如下所示
tasklist|findstr "6540"
wandoujia_daemon.exe 6540 Console 1 4,276 K
接下来问题就好解决了,在任务管理器kill掉wandoujia_daemon.exe ,运行android程序,ok .
a.关闭豌豆荚进程
b.adb kill-server
c.adb start-server
3、使用ADB 命令安装应用包:adb install -r APK包(-r 表示卸载再安装,APK包需放在和ADB工具同级目录下)
如果安装失败提示没有权限,先获取root权限:adb root
4、卸载应用:adb uninstall 主包名
如何查看应用的主包名:
(1)没有apk,应用已经安装到手机或虚拟机中
1.logcat
.清除logcat内容,使用命令adb logcat -c
.启动logcat,使用命令adb logcat ActivityManager:I *:s
.启动要查看的程序
(2)dumpsys
启动要查看的程序;
命令行输入:adb shell dumpsys window w |findstr \/ |findstr name=
补充:使用adb shell dumpsys window | findstr mCurrentFocus 命令查看当前运行的包名和Activity更清晰一些。
(3)使用aapt
aapt是sdk自带的一个工具,在sdk\builds-tools\目录下,
2.以QQ音乐为例,命令行中切换到aapt.exe目录执行:aapt dump badging C:\Users\Administrator\Desktop\QQyinle_155.apk(apk所在目录位置)
3.运行后的结果中以下两行分别是应用包名package和入口activity名称
package: name='com.tencent.qqmusic'
launchable-activity: name='com.tencent.qqmusic.activity.AppStarterActivity'
四、通过monkey 给手机发送指令
Adb shell monkey 1000 不指定应用名给手机发送1000个随机事件
Adb shell monkey -p 包名1000 给指定包名发送1000个随机事件
如出现以下提示,则可能是主包名错误,按照上面详解先查看包名
五、monkey 常见参数含义
(01) adb shell monkey -p 包名 --ignore-crashes 1000 忽略程序崩溃, 测试过程中即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止
(02) adb shell monkey -p 包名 --ignore-timeouts 1000 忽略程序无响应, 测试过程中即使程序无响应,Monkey依然会继续发送事件直到事件数目达到1000为止
(03) -s
例:
adb shell monkey -p com.htc.Weather –s 10 100
adb shell monkey -p com.htc.Weather –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以 这个操作序列伪随机的.
(04) --throttle
例: adb shell monkey -p 包名 --throttle 3000 1000 总共1000个事件 每个事件之间延时3000毫秒
(05) --ignore-security-exceptions 通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。
例: adb shell monkey -p 包名 --ignore-security-exceptions 1000
六、导出log日志到本地
在操作app中出现异常情况可导出log日志到本地发给开发分析
Adb logcat ->d:\xxx.txt 导出到D盘根目录,名称为xxx.txt
Monkey 测试出现错误后,一般的分析步骤 看Monkey的日志 (注意第一个swith以及异常信息等)
如果用monkey设置了忽略程序崩溃或无响应,在导出的日志中搜索
崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug
程序无响应的问题: 在日志中搜索 “ANR”
Monkey 执行中断, 在log最后也能看到当前执行次数