Android测试命令
由于公司开发的产品有一体机和机顶盒,所以我必须学会使用一些常用的adb命令,下面是连接调试和抓取日志的命令,工作中有帮助到我,我把这些资料整合一下
连接机顶盒
开发手机 app 应用,手机开启调试模式,用数据线连上手机,就能对手机进行 debug 开发。然而,机顶盒并没有手机的 micro usb 接口,并不能连数据线进行直接调试(据说,用 USB to USB 数据线连接机顶盒,也无法识别机顶盒),这时需要使用 adb 命令连接和调试机顶盒。打开 Android Studio 的 Terminal 或者 cmd( windows )、终端( mac ),输入 adb 出现如下结果,证明 adb命令可以正常使用,否则参照 adb 错误“ 'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件 ( windows ) 或 在 MAC OS X 安装 ADB (Android 调试桥)
( mac )开启 adb 命令。
adb 命令结果
adb 命令可用后,通过以下命令连接机顶盒:adb connect [ip]:[端口(可以不填,某些机顶盒需要填端口号)]
例如:adb connect 192.168.192.196:5114
确保电脑和机顶盒在同一个局域网(如果可以通过
ping [ip]
ping 通的话,表示在同一局域网 ),推荐机顶盒和电脑都插网线,这样速度快些。
机顶盒的端口有:5114、5555(默认)等。
如果没有提示任何错误信息,表示连接机顶盒成功,接着输入adb devices
查看连接的机顶盒的状态信息。
如果提示 xxxxx refused connect
证明还未获取机顶盒的调试权限,需要和机顶盒厂家获取调试工具、开启调试功能的方法、调试端口等(许多机顶盒的厂商都留有调试后门),也可以 root 机顶盒的系统。
某些机顶盒将遥控器上的 1237894560 按顺序按一边,可以开启调试模式。
常用adb命令
adb connect [ip]:[port]
连接机顶盒(默认端口为5555)adb devices
查看所有连接设备 名称、ip、端口已经状态( device 或 offline )adb install [apk 安装包所在路径(如:d:\a.apk)]
将对应路径的 apk 安装包安装到机顶盒adb install -r [apk 安装包所在路径(如:d:\a.apk)]
将对应路径的apk 安装包强制(覆盖)安装到机顶盒adb -s [设备名称或设备IP:端口] install [apk 安装包所在路径(如:d:/a.apk)]
当 adb 连接多个设备时,将 apk 安装到指定设备中
通过 -s [设备名称或设备 IP:端口] (例如:
adb -s 192.168.192.196:5555 d:\apk
指定 IP 为192.168.192.196
端口为5555
的设备)。其中-s 192.168.192.196:5555
要紧跟在adb
后面,**其他的 adb 命令,也可以通过这种形式对指定的设备进行操作。 **
当 adb 指令使用时,出现 more than one device and emulator 错误提示时,需要用该方式指定需操作的设备。
adb uninstall [应用包名,例如:com.example.tmall]
卸载应用(通过包名指定)adb shell
进入系统目录(通过 exit
退出)adb shell am start -n [包名]/[包名+类名]
启动指定类名的 Activity
adb shell am
的使用可以参考 Andoird开发调试时不修改Manifest直接启动任意Activity的方法 。
除了-n
之外,还有[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
等,-a
参数代表了 Activity 的 action ,-d
参数代表 Activity 的 data。
adb shell input text ****
在已经获取焦点的EditText中输入内容adb shell ps
查看当前终端中的进程信息adb shell dumpsys activity activites
查看当前终端所以前后台Acitivity的堆栈adb shell logcat > d:\log.txt
打印日志到本地文件(会打印缓存的日志,可能会有昨天等之前日志。windows下,按ctrl+c
停止日志打印)adb logcat *:D > d:\log.txt
过滤出D
级别以上的日志,打印日志到本地文件( 在 macOS 下需要给 *:W
这样以 *
作为 tag 的参数加双引号,如 adb logcat "*:W"
)
抓手机日志命令,看CRASH
adb logcat -v time -d > d:/crash.txt -d 是运行完自动停止的作用
手机APP ANR有问题,看日志
adb pull data/anr/traces.txt
Android分析调试
1.logcat命令
这个命令最简单常用,可查看帮助,我不多说,如果需要打印时间,加参数-v time
1 |
|
2.bugreport命令
这个命令也非常简单,但是在实际应用中非常有用,会有从开机之后详细的dumpsys,dumpstate和logcat信息,是一份完整的日志记录。对分析用户行为,异常信息,系统状态有很大的参考作用。一般我们会把bugreport导出到电脑上分析。
1 |
|
我再次强调,bugreport里面包含丰富的系统和用户信息,它是其他很多命令输出的结果的记录,非常有用。
3.dumpsys命令
这个查看系统信息,用的还是比较多的.
1 2 3 4 5 6 7 |
|
例如查看某个程序内存信息:
1 2 |
|
效果图如下:
里面的信息很有价值,尤其对于分析内存泄露,内存溢出都有极大的作用。
4.top命令
这个查看cpu信息太方便了。
1 |
|
我们看看效果图,其中按cpu大小列出5个进程列表。
com.tianxia.test的cpu过高,会导致手机发烫。同时利用这个信息,可以监控应用cpu的使用,以调整优化代码。
分析手机发烫
下面我们来实践一个例子,手机发烫太厉害,怎么找出问题?
首先我们写一个程序com.tianxia.test,死循环,核心代码如下:
1 2 3 4 5 6 7 8 |
|
这个应用打开后会一直获取系统时间,因为在主线程,肯定导致应用ANR,也会一直浪费系统cpu,手机发热,我们运行它。
假设我们不知道上述代码,我们来找到这个问题:
(1).找到发烫的应用。
使用top命令:
1 |
|
一看是com.tianxia.test占用85%的cpu,原来是这家伙在捣鬼。进程ID是644,这个后面我们有用。
其他可参考:
放在github上的,介绍的很全
Android ADB 命令大全(通过 ADB 命令查看 wifi 密码、MAC 地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装 APK 等)
链接: https://www.jianshu.com/p/225fef8c6e67
http://www.cnblogs.com/qianxudetianxia/archive/2012/05/14/2497073.html