在开发Android应用时,通常情况下是通过USB数据线连接设备和计算机,但对于一些需要使用USB设备的应用,这种方法就碰到了麻烦,手机的USB接口已经和外接的USB设备连接,无法再连数据线,此时可以通过网络TCPIP的方法来进行。也就是然ADB 通过网络来连接设备,而无需USB数据线。
具体方法如下:
1. 使用USB数据线连接设备。
2. 在命令行输入adb tcpip 8888 ( 8888为端口号,可以自由指定)。
3. 断开 USB数据,此时可以连接你需要连接的|USB设备。
4. 再计算机命令行输入 adb connect <设备的IP地址>:8888
后面就可以使用ADB ,DDMS 来调试Android应用或显示Logcat 消息。
5. 如果需要恢复到USB数据线,可以在命令行输入adb usb。恢复成USB数据线连接方式后,需要重新用数据线连接手机,重复1~4步才能再次无线连接获取日志。
注: Android设备的IP地址可以在Settings->About Phone->Status 查到
测试时若手机设备连着adb工具,当APP发生崩溃/其他问题之后,直接抓崩溃的日志,将日志导出来发给开发
注意事项:若手机没有连着adb工具,手机app发生问题之后在5分钟内还能抓到出错日志
adb logcat -b main -v time > log.txt
注意事项:*. -b和>前是有空格的
*. 在运行以上命令的时候出现app崩溃闪退等问题,等待5s后按住Ctrl+C中断命令并获取日志
文件->首选项->外观 勾选“启用折叠/大纲”,设置200000行到1行
PS:
*.用手机测试同时抓log期间,时不时清空一下窗口是个好习惯。命令:“cls”
*.如果所给的日志不足,可以到powercmd的日志文件夹,拿对应时间点的日志,给到研发进行定位。
*. 手机里尽量只运行必要的APP程序,程序越多,日志就越多
monkey测试的原理:利用socket通讯的方式来模拟用户的按键输入、触摸屏输入、手势输入等。
monkey测试的目的:该工具可进行压力测试,更多的是一种随机测试和稳定性测试:开发人员可以结合monkey打印的日志和系统打印的日志来分析测试的结果。
一.monkey日志分析
1、程序无响应的问题:在日志中搜索“ANR”
2、崩溃问题:在日志中搜索“Exception“
看前后执行事件进行复现
如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;// Monkey finished代表执行完成。
Monkey执行中断,在log的最后也能查看到当前已执行的次数。
二、monkey内存泄露
1.内存泄露发现方法
执行monkey测试时有时会有内存泄露情况,可以进行排查
a.手机弹出out of memory对话框--基本确定有内存泄露
b.手机没有提示但是实际有内存泄露:排除方法通过logcat文件GC输出lgo信息,搜关键词GC,如果有下面四个中的一个,就可能存在内存泄露。(可以打开两个命令窗口,一个执行adb logcat,再执行monkey,待monkey结束后,ctrl+c中断log抓取)
GC_FOR_ALLOC, 因为在分配内存时内存丌够引发的
GC_EXPLICIT, 表明GC被显式请求触发的,如System.gc调用
GC_CONCURRENT, 表明GC在内存使用率达到一定的警戒值时,自动触发
GC_BEFORE_OOM, 表明在虚拟机抛出内存丌够异常OOM之前,执行最后一次回收内存垃圾
2.发现内存泄露--内存报告分析(利用hprof参数的内存快照生成内存报告)
在发现内存泄露后,可以执行相同的monkey,只需多加一个参数--hprof
adb shell monkey -p 包名 --hprof --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:\monkey.txt
如果指定了这个选项,monkey会在发送时间的前后生成app内存快照文件,一般会在手机设备的/data/misc目录下生成hprof的文件。(注: /data/misc 需要root权限,可
以在手机上安装个RE查看或通过手机助手查看)
ps:文件转换:配置monkey测试时的sdk-tools下查看是否hprof-conv命令,在命令行输入hprof-conv -help得知文件转化用法,直接转化就行,由.hprof转化成.conv格式。
转化后的文件用eclipse的Memory Analyzer tool(MAT)查看(此插件可以下载),可以点击 Reports->Leak Suspects链接来生成报告。
---------------------
作者:小鱼儿157
来源:CSDN
原文:https://blog.csdn.net/u011649536/article/details/49448107?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
adb命令:
1. adb shell
2. cd system
3. cd etc
4. ls
5. 复制文件名:media_codecs.xml
6. exit
前面步骤是为了复制文件名,也可以直接复制下面命令:
7. adb pull system/etc/media_codecs.xml f:/(自己存放的目录,下载下来的media_codecs.xml用node++打开)
8. media_codecs.xml文件里找hevc,有decoder.hevc字眼,直接复制分辨率就是硬解支持的分辨率大小
s
2.2、monkey测试准备与执行
在Monkey测试前,必须进行以下准备
Ø 手机屏幕超时设置为30分钟,防止手机进入锁屏状态。
Ø 手机开机,开启ADB模式,连接到PC(
Ø 开启系统log。(具体可依据每个机型平台决定)
Ø 先在D盘中建立文件夹,例如:monkey_log
Ø 在PC上执行 运行—>CMD,在弹出的命令窗口中,输入adb devices,检查设备是否连接
Ø 在弹出的命令窗口中,输入adb shell,进入Linux Shell
Ø 输入Ideafriend Monkey命令。如下:
|
adb shell monkey -p io.jjyang.joylite -s 100 --pct-touch 20 --pct-motion 40 --pct-trackball 40 -v-v-v --throttle 300 1000000 >D:\monkey_log\java_monkey_log.txt
|
||
参数 |
描述 |
|
|
-p应用程序包名 |
只仅针对特定包名进行测试 joylite包名: io.jjyang.joylite smartAI包名:com.ysx.overseas.total
|
|
|
-s 500 |
伪随机数生成器seed值。Seed值为500。相同的seed值再次执行monkey,将产生相同的事件序列。 |
|
|
-v -v |
日志级别为Leve1 1。将提供较为详细的日志,包括每个发送到Activity的事件信息 |
|
|
--throttle 200 |
事件之间延时200毫秒。可以控制monkey的执行速度,如果不指定该选项,monkey事件间将不会延时。 |
|
|
10000 |
执行事件数为1万次 |
|
|
|
|
||
|
|
|
|
monkey_log的文件夹下方有java_monkey_log.txt文件,打开java_monkey_log.txt,查看测试结果,进行分析
初步分析方法:
(1)、找到是monkey里面的哪个地方出现错误
(2)、查看monkey里面出错前的一些事件动作,并手动执行该动作
(3)、若以上步骤还不能找到,可以使用之前执行monkey命令,再执行一遍,注意使用的seed值要一样
测试结果分析:
(1)、ANR问题(程序无响应):在日志中搜索“ANR"(application no response)
(2)、闪退问题:在日志中搜索"crash"
(3)、异常:搜索"exception"
(4)、强制退出:搜索"force closed"
查看设备
?
1 |
adb devices |
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
注意事项:1.手机已开启开发者调试模式
2.手机已开启MTP/文件传输模式,手机驱动安装成功
查看屏幕分辨率
1 |
adb -s +当前设备状态+shell wm size |
安装软件
?
1 |
adb install [-r] [-s] |
这个命令将指定的apk文件安装到设备上.
-r 强制安装(在某些情况下可以已有些应用程序在运行或不可写,可加上此参数强制安装)
-s 将apk文件安装在SD-Card
安装APK:adb install +apk应用程序(可以将apk安装包直接拖到cmd窗口执行),出现success表明安装程序成功
卸载软件
?
1 |
adb uninstall [-k] <软件名> |
如果加 -k 参数,为卸载软件但是保留配置和缓存文件.
卸载APK:adb uninstall +程序包名(如:com.ysx.overseas.total),出现success表明卸载成功
从电脑上发送文件到设备
?
1 |
adb push <本地路径> <远程路径> |
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)
例:传送文件到手机中,如:
?
1 2 |
adb push recovery.img /sdcard/recovery.img |
将本地目录中的recovery.img文件传送手机的 SD卡中并取同样的文件名。
从设备上下载文件到电脑
?
1 |
adb pull <远程路径> <本地路径> |
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑
adb pull /sdcard/Buglist d:\androidtest\Buglist(在cmd窗口执行即可)
显示帮助信息
?
1 |
adb help |
-- 这个命令将显示帮助信息
显示ADB命令版本号
?
1 |
adb version |
启动计算机adb 服务进程
?
1 |
adb start-server |
当然你可以直接使用adb devices命令时自动开启
安装adb工具后,在PowerCmd上运行adb devices命令,出现设备的状态是offline,表示设备未连接,则解决方式如下:
以下方法请确保你的设备处于调试模式下。
方法一:
执行: #adb kill-server
#adb start-server
#adb devices
看看设备是否还是处于offline状态,如果是,请尝试方法二。
方法二:重新启动设备,开机后,
执行: #adb devices
如果设备还是offline,请尝试方法三。
方法三:重启计算机,重启设备,打开PowerCmd工具,重新连接设备,打开设备的USB连接选项,执行 #adb devices
即可连接设备,打印设备日志了。
步骤1:将android手机连接电脑,开启开发者模式,允许usb调试;
步骤2:运行logcat.bat文件,会出现cmd窗口;
步骤3:①如果手机程序已经发生过crash,5秒后关闭cmd窗口;
②如果是想重现crash,则在手机端重现后即可关闭cmd窗口。
步骤4:在logcat.bat的同级目录下会生成一份log文件,从文件中搜查FATAL关键字,便可找到崩溃代码。