1、用ADB在PC端对手机进行各种操作的准备工作
一共需要三步即可。
1. step1 Enable 开发者模式
2. step2 Enable USB Debug模式
3. step3 使用数据线连接手机和PC
- Enable开发者模式对于不同型号的手机来说操作大同小异,都是找到手机系统设置的关于项,连续7次点击系统的[Build Number]即可,连续点击的过程中,系统会提示‘还差n步就打开开发者模式’。
打开开发者模式后,进入到开发者模式里,选上【启动USB Debug模式】即可。 - 当手机端开启USB Debug模式后,可以使用USB线连接手机和PC,此时:手机端会提示:是否信任当前调试设备,点击【同意】即可。
2、命令
- adb devices (查询连接到当前PC的Android设备)
- adb install xxx.apk(进入安装包的目录,安装软件)
- adb uninstall $package_name(进入安装包的目录,卸载软件)
- install和uninstall还有其他参数。
- adb install -r xxx.apk
- adb uninstall -k $package_name
在安装时,加上【-r】,如果已经安装了该软件,那么系统就会先卸载,在安装这个软件
在卸载时,加上【-k】,表示卸载时保留数据和缓冲区目录,只卸载应用程序
安装pos机的例子:
1、adb devices -查看连接状态
2、adb connect xx.xx.xx.xx:5555
3、adb install /Users/fengyanhua/Downloads/app-debug.apk
4、adb disconnect xx.xx.xx.xx:5555 -断开连接
查询POS机的日志:
5、adb -s xx.xx.xx.xx logcat
3、 查看包名的方法
1. - step1 打开软件置于顶层
2. - step1 点击UIAutomatorviewer的Device Screenshot按钮
3. - step1 查看右下方的package值
4、文件交换
adb pull remote_files local_dir 把手机上的文件拷贝到本地
adb push local_dir remote_files 把PC上的文件,发送到已经连接的Android手机上
参数含义:
remote_files: 手机端的目录或者文件路径
local_dir:本地文件的路径
e.g:
adb pull /sdcard/DICM/camera ~/Desktop/ 把手机上的某个目录全部都拷贝到PC本地上
adb push ~/Desktop/test.txt /data/local/tmp/ 把PC本地的文件传输到手机的/data/local/tmp/目录
5、其他的命令
adb version: 查看adb版本信息
adb remount: 对其设备读写进行初始化
adb kill-server: 干掉ADB进程
adb start-server:启动ADB进程
adb root:对于已经root过的手机,加载ROOT权限
adb reboot: 重启设备
adb wait-for-device:等待设备上线
adb -d serial number: 当有多台设备连接时,指定某一设备
adb connect <ip>: 通过网络使PC连接设备
6、Android系统及App日志查看
- adb logcat
- adb logcat -c 清理logcat的缓冲区
adb的日志全部都会缓存在系统的缓冲区,当我们需要对系统或者App进行Debug的时候,我们先清理一下之前缓冲区的无效log,这样可以清除一些无效的日志信息。
- adb logcat -v time *:e |grep $package_name 查看指定App的错误信息
如:adb logcat -v time *:e |grep com.koudai.weidian.buyer.internal
运行这个命令后,再操作App,我们可以通过终端的输出来获取到App在执行过程中遇到的所有Error信息。
- 日志分析
1. bugreport里面包含了各种log信息,大部分log也可以通过直接运行相关的程序来直接获得 bugreport记录android启动过程的log,以及启动后的系统状态,包括进程列表,内存信息,VM信息等等
2. Java Exception 在mian log中分析,需要注意exception的时间PID和栈
3. ANR 在log中查看system log 找到ANR关键字
- Monkey的输出日志
正常情况,如果Monkey测试顺利执行完成,在log的最后会打印出当前执行事件的次数和所花费的时间;// Monkey finished 代表执行完成
异常情况:
查阅Monkey的输出日志
1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索 “Exception”
3. 如果有空指针,搜索“NullPointerException”
4. 如果Monkey执行中断,在log最后也能看到当前执行次数
- log文件的分类
实时打印的有:logcat main,logcat radio,logcat events,tcp dump,高通平台的还有QXDM日志
状态信息的有:adb shell cat /proc/kmsg,adb shell dmesg,adb shell dumpstate,adb shell dumpsys,adb bugreport,工程模式等。
7、 查看系统都安装了那些应用
adb shell pm list packages
eg:
买家版: (com.koudai.weidian.buyer.internal)
adb shell pm list packages|grep com.koudai
8、 input命令
input命令可以用于向键盘发送一些指令。
常用命令分析:
* adb shell input text test //让键盘输入test,经测试不能支持输入中文
比如输入0,就可以使用:
adb shell input keyevent KEYCODE_0
或 adb shell input keyevent 7
* adb shell input tap 200 300 //在屏幕坐标(200,300)位置点击一下
* adb shell input swipe 200 200 1000 1000 //就是从屏幕(200,200)滑动到(1000,1000);
//在小的距离内,从(200,200)的位置滑动到(201,201)的位置,连续滑动2000毫秒,页面表现为长按的效果
* adb shell input swipe 200 200 201 201 2000
tip:机子要求是安卓4.4以上
如何定位屏幕的坐标呢?
其实在手机开发者选项,开启指针位置功能,就可以实时定位屏幕坐标了
9、am命令
* am 这个命令可以帮助我们直接启动activity、service及广播
* am start 启动应用
格式:
adb shell am start 包名/.类名
或 adb shell am start 包名/类的全名
后面跟的参数的意思分别是:
参数名 解释
-a 传入动作
-n 传入组件(package)
-t 传入类型
-d 传入数据
1.拨打一个电话:
am start -a android.intent.action.CALL -d tel:10086
2.打开一个网页:
am start -a android.intent.action.VIEW -d http://www.baidu.com
3.打开音乐播放器:
adb shell am start -n com.android.bbkmusic/.WidgetToTrackActivity
4.启动一个服务:
am startservice <服务名称>
例如:am startservice -n com.android.music/com.android.music.MediaPlaybackService
或者 am startservice -a com.smz.myservice
5.发送一个广播:
am broadcast -a <广播动作>
例如: am broadcast -a com.smz.mybroadcast
6.adb shell am monitor 监控 crash 与 ANR
7.am force-stop , 后跟包名,结束应用
值得注意的是,不同手机的相同类型应用,如相机,因为他们的package都可能是不一样的,所以要把package提取出来,再抽离为公共的方法。
10、pm命令
pm(Package Manager),这个命令主要用于获取和安装在 Android 设备上的应用信息。
■ pm list 安装包名查询
■ adb shell pm list package 列出所有应用
■ adb shell pm list package -3 列出第三方应用
■ adb shell pm list instrumentation 列出所有测试包
■ pm install 安装应用
■ pm unitall 卸载应用
■ pm clear 清除应用缓存
11、monkey命令
-p 允许的包名列表,可同时指定多个包名,每个包都需要使用“-p”参数指定。指定多个包:
adb shell monkey -p package_1 –p package_2 100
--ignore-crashes 忽视应用 crash 报错,不指定该参数时,应用出现 crash,monkey
会自动停止发送事件,指定该参数后,monkey 会在 crash 后也一直发送事件,直到所有事件发送完成。
--ignore-timeouts 忽视超时导致的错误,即ANR的错误
- Monkey 命令启动方式:
a)可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试
b)在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试
c) 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器
12、Dumpsys常用服务信息查询
Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息
adb shell dumpsys meminfo //内存 adb shell dumpsys meminfo com.koudai.weidian.buyer.internal
adb shell dumpsys cpuinfo //CPU
adb shell dumpsys gfxinfo //帧率
adb shell dumpsys display //显示
adb shell dumpsys power //电源
adb shell dumpsys batterystats //电池