adb相关命令
如果运行过程中还没大概logcat某个APK就挂掉了,弹出已停止运行,我们可以用这个命令查看关键错误信息: logcat *:e , 这样只是会过滤出前面带有E的错误信息。
adb logcat *:e
同理
V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)
<meta charset="utf-8">
adb命令安装
adb devices 显示所有设备
adb uninstall 包名 卸载
adb install 路径/文件名.apk
关闭某个应用
adb shell am force-stop com.xx.loveguider
首页冷启动时间
adb shell am start -W -n com.zhenai.loveguider/com.zhenai.loveguider.activites.MainActivity
Monkey命令参考
一个完整的Monkey 命令
adb shell monkey -p com.zhenai.loveguider -s 8888 --throttle 300 --pct-touch 30 --pct-appswitch 20 --pct-motion 30 --ignore-crashes --ignore-timeouts --monitor-native-crashes --ignore-security-exceptions -v -v -v 1000
指定伪随机数生成器的seed值8888, ,每个事件间隔300ms 触摸事件占30%,activity之间的切换20%,滑动事件30%
忽略crash和超时,监视本地程序崩溃,
如何分析monkey日志?
1、 ANR问题:在日志中搜索“ANR” 2、 崩溃问题:在日志中搜索“CRASH”或者Exception
如何重现BUG?
1、 找到是monkey里面的哪个地方出错
2、 查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样
事件选项
-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5
--pct-motion <percent> (滑动事件)
--pct-appswitch <percent> (activity之间的切换)
--pct-trackball <percent> (轨迹球事件)
--pct-nav <percent> (导航事件 up/down/left/right)
--pct-majornav <percent> (主要导航事件 back key 、 menu key)
--pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
--pct-anyevent <percent>(任意事件)
关闭Monkey
- adb shell "ps | grep monkey"
返回来的第一个数字,即是monkey的进程号 - .kill 命令结束进程
adb shell kill [刚才查到的进程号]
导出ANR后的trace文件
adb pull data/anr/traces.txt 导出到当前目录
adb pull data/anr/traces.txt E:\AndroidTool 导出到E:\AndroidTool目录
推某个文件到手机上
adb pull data/anr/traces.txt ./mytraces.txt
查看所有进程列表,Process Status
adb shell ps
也可以跟findstr结合搜索 过滤 带有tencent的
adb shell ps | findstr tencent
查看package_name程序进程
adb shell ps|grep <package_name>
Gradle常用命令
这里注意是./gradlew, ./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在GradleLearn/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。
理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。
./gradlew -v 版本号
./gradlew clean 清除GradleLearn/app目录下的build文件夹
./gradlew build 检查依赖并编译打包
这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如
./gradlew assembleDebug 编译并打Debug包
./gradlew assembleRelease 编译并打Release的包
除此之外,assemble还可以和productFlavors结合使用
./gradlew installRelease Release模式打包并安装
./gradlew uninstallRelease 卸载Release模式包
./gradlew app:dependencies 查看依赖树
androidStudio打印依赖树
./gradlew :app:dependencies --configuration compile (Mac)
gradle :app:dependencies (window)