赞
踩
很久没更新博客了,各种原因吧。但现在我决定回归博客,继续写写文章,分享分享技术。
用过很多语言,涉及前后端,一时也不知从何讲起,往后慢慢梳理吧,慢慢把自己想分享的东西写下来,也是一种整理和记录吧。
今天先分享Android知识,分享一些常用的日志抓取和分析方法吧。本博客记录一些常用命令,用于日常开发,问题分析,log分析等。
一般在开发Android应用,比较少去关系系统日志,最多过滤一下自己应用的日志,看一下生命周期和报错日志之类的,可一旦开发的应用涉及到系统侧,日志抓取和分析就必不可少了。
工欲善其事,必先利其器。掌握这些adb命令,必能事半功倍!
logcat和bugreport是非常重要的分析工具,对于通过日志追踪问题是非常必要的。在测试人员的测试过程,会出现各种状况,页面不更新,卡顿,更新延迟,触摸不灵敏等等,这些问题都是需要根据日志文件,通过系统或者应用输出的日志,一步步跟踪,定位问题。下面就是android开发日常使用到的命令,好记性不如烂笔头,多多更新吧!
1、抓取logcat输出到文件
adb logcat > log0801.txt
//------------------------------dumpsys 服务名--------------------------------- 2、dump ams所有的信息数据 adb shell dumpsys activity > ams0801.txt 3、dump activity任务栈 adb shell dumpsys activity activities > activities.txt 4、dump services信息 adb shell dumpsys activity services 5、dump provides信息 adb shell dumpsys activity providers > providers.txt 6、dump broadcast信息 adb shell dumpsys activity broadcasts > broadcast.txt 7、dump intent信息 adb shell dumpsys activity intents > intent.txt 8、dump process信息 adb shell dumpsys activity processed > processes.txt 9、dump window信息 adb shell dumpsys window > window0801.txt 10、dump location信息 adb shell dumpsys location > location.txt 11、dump cpu使用情况信息 adb shell dumpsys cpuinfo > cpuinfo.txt 12、dump 电池信息 adb shell dumpsys battery > battery.txt 13、dump surface flinger 查看图层layer adb shell dumpsys SurfaceFlinger > surface.txt 14、dump 进程的内存信息 adb shell dumpsys meminfo com.xx.xx > meminfo.txt 15、网络信息查询 网络连接 adb shell dumpsys connectivity 网络策略 adb shell dumpsys netpolicy 网络状态adb shell dumpsys netstats 网络管理adb shell dumpsys network_management 16、查看当前任务栈 adb shell dumpsys activity | findstr mResumedActivity > resumedActivity.txt 17、查看系统支持的dump 服务 adb shell dumpsys -l adb shell service list 18、dump 具体广播的信息 // 查看广播 adb shell dumpsys activity -b| grep APPWIDGET_ENABLED -C10
//-----------------------pm 1、清空指定应用的缓存 adb shell pm clear com.xx.xx 2、查看应用安装目录 adb shell pm path com.xx.xx 3、 启用组件 adb shell pm disable/enable <PACKAGE_OR_COMPONENT> adb shell pm enable com.test/.MainActivity // 禁用组件 adb shell pm disable com.test/.MainActivity //强制卸载 testApk adb shell pm uninstall -k --user 0 com.testApk 4、查看所有已安装的软件包 adb shell pm list packages adb shell pm list packages com.test //包含com.test的软件包 5、查看所有第三方应用,非系统自带 adb shell pm list packages -3 6、查看所有被禁用的包 adb shell pm list packages -d 7、授权权限 // 给软件包授予写外部存储器的权限 pm grant com.example.app android.permission.WRITE_EXTERNAL_STORAGE 8、取消权限 // 撤回软件包读写外部存储器的权限 pm revoke com.example.app android.permission.READ_EXTERNAL_STORAGE
4、dump 界面视图信息
dump视图层级
adb shell uiautomator dump sdcard/ui-tree.xml
5、adb截图/录制视频
adb 截图 adb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png D:/desktop adb 录屏 screenrecord [options] <save_file> // 录制屏幕, 指定录制宽高为 720x1280, 比特率为 4Mbps, 录制 30 秒 screenrecord --size 720x1280 --bit-rate 4000000 --time-limit 30 /sdcard/test.mp4 options参数: --help # 输出帮助信息 --size # 录制的尺寸, 宽x高, 默认值是设备屏幕的原生分辨率(如果支持), # 如果不支持, 则使用 1280x720。 --bit-rate # 设置录制视频的比特率(bit/s), 比特率越高视频质量越高, # 但文件存储也会变大。例如设置为 4Mbps: --bit-rate 4000000 --time-limit # 设置最大录制时长(单位为秒), 默认值和最大值均为 180(3分钟) --verbose # 录制时显示日志信息
6、Activity管理器的am命令
1、 杀掉应用,并重启应用 adb shell am force-stop com.test adb shell am start -n com.test/.MainActivity // 终止进程 adb shell am kill com.test //终止所有进程 adb kill-all 2、 持续监听 app adb shell am monitor 3、启动Activity am start <intent> intent 参数: -n // component, intent 组件, 格式为: "包名/组件名", 例如 "com.test/.TestActivity" -a // action, intent 动作, 例如 "android.intent.action.VIEW" -c // category, intent 类别, 例如 "android.intent.category.BROWSABLE" -f // flags, 和 intent.setFlags(int) 方法相同 -d // data_uri, intent 数据URI, 例如 "file:///mnt/sdcard/aa.png" -t // mime_type, intent MIME类型, 例如 "image/png" -e // 和 --es 相同 --esn // 添加 null extra, 格式: --esn extra_key --es // 添加 string extra, 格式: --es extra_key string_value --ei // 添加 int extra, 格式: --ei extra_key int_value --el // 添加 long extra, 格式: --el extra_key long_value --ef // 添加 float extra, 格式: --ef extra_key float_value --ez // 添加 boolean extra, 格式: --ez extra_key boolean_value --eu // 添加 uri extra, 格式: --es extra_key uri_value // 让手机默认浏览器打开一个网页 am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d https://www.baidu.com // 打开电话拨号盘 am start -a android.intent.action.DIAL -d tel:1008611 //打电话 am start -a android.intent.action.CALL -d tel:1008611 // 打开微信, 微信(v6.7.3)的主入口 Activity 为 com.tencent.mm.ui.LauncherUI am start -n com.tencent.mm/.ui.LauncherUI // 打开微信(完整的启动 APP 命令) am start -n com.tencent.mm/.ui.LauncherUI -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 3、启动服务 adb shell am startservice -n com.test/.TestService 4、发送广播 adb shell am broadcast -a com.test.home_action
7、dump window的动画/界面转换
1、
// Tracing Window Transitions
开始前输入:
adb shell cmd window tracing start
复现后输入:
adb shell cmd window tracing stop
把文件pull出来:
adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope
2、抓surfaceflinger的状态
adb shell su root service call SurfaceFlinger 1020 i32 1
adb shell su root service call SurfaceFlinger 1020 i32 0
adb pull /data/misc/wmtrace/transaction_trace.winscope
8、调用Android系统bugreport
// adb bugreport
adb bugreport > bugreport.txt
// 高版本直接生成zip
adb bugreport
9、安装卸载apk
adb install <options> <路径>
options参数:
-r 替换安装包,保留数据
-d 允许版本降级(只限debug包)
-g 授予所有运行权限
adb uninstall <options> <packagename>
options参数:
-k 保留数据和缓存目录
10、获取device信息 getprop
getprop # 列出所有属性信息 getprop ro.product.manufacturer # 获取设备的厂商, 例如: HUAWEI getprop ro.product.brand # 获取设备的商标, 例如: HUAWEI getprop ro.product.model # 获取设备的型号, 例如: BLA-AL00 getprop ro.build.version.release # 获取设备的 Android 版本, 例如: 8.1.0 getprop ro.build.version.sdk # 获取设备的 SDK Version, 例如: 27 getprop ro.boot.serialno # 获取设备的序列号, 例如: 8FE0917B20005668 getprop ro.board.platform # 获取设备的 CUP 平台, 例如: kirin970 getprop dalvik.vm.heapstartsize # 虚拟机进程的分配的初始堆内存大小 getprop dalvik.vm.heapgrowthlimit # 虚拟机进程的堆内存增长极限大小 getprop dalvik.vm.heapsize # 虚拟机进程的堆内存大小
11、monkey脚本/自动化测试/压测
// monkey <options> <count> // 1、python脚本 python perfsense.py --monkey "monkey -p com.testapk --pct-touch 30 --throttle 1000 -s 200 --pct-syskeys 0 --ignore-crashes --ignore-timeouts -v -v -v 60000 > /sdcard/monkey.txt" --jarperf "com.testapk" -t 32000 // 2、adb 命令 adb shell "monkey -p com.testapk --ignore-crashes --monitor-native-crashes --ignore-timeouts --ignore-native-crashes --pct-motion 40 --pct-touch 45 --pct-appswitch 5 --pct-nav 5 --pct-majornav 5 --pct-syskeys 0 --pct-anyevent 0 --kill-process-after-error -s 251314251314 -v-v-v --throttle 300 600000000 2>/data/local/tmp/log.txt" adb shell monkey -p com.test --pct-syskeys -0 -v -v -v 10000 options参数: options 参数: -p <allowed_package> # 允许测试的软件包, 可以指定多个 -p 参数支持多个软件包 -c <main_category> # 主分类, 可以指定多个 -c 参数 --ignore-crashes # 忽略崩溃, 继续执行事件 --ignore-native-crashes # 忽略 native 崩溃, 继续执行事件 --ignore-timeouts # 忽略超时, 继续执行事件 --ignore-security-exceptions # 忽略安全异常, 继续执行事件 --monitor-native-crashes # 监控 native 崩溃 --kill-process-after-error # 发生错误时杀死进程 --hprof --match-description <text> --pct-touch <percent> # 触摸事件百分比, 例如指定触摸事件比例为 30%, 格式为: --pct-touch 30 --pct-motion <percent> # 手势动作事件百分比, 所有事件百分比之和不能超过 100% --pct-trackball <percent> # 轨迹事件百分比 --pct-syskeys <percent> # 系统按键事件百分比 --pct-nav <percent> # 基本导航事件百分比 --pct-majornav <percent> # 主要导航事件百分比 --pct-appswitch <percent> # APP 切换事件百分比 --pct-flip <percent> # 弹事件百分比 --pct-anyevent <percent> # 其他事件百分比 --pct-pinchzoom <percent> # 缩放(捏)事件百分比 --pct-permission <percent> # 权限事件百分比 --pkg-blacklist-file <file> # --pkg-whitelist-file <file> # --wait-dbg # 如果 adb 断开, 等待 adb 连接, 直到 adb 恢复连接后继续执行 monkey --dbg-no-events --setup scriptfile -f <scriptfile> # 指定用于测试的脚步文件, 可以指定多个 -f 参数 --port <port> -s <seed> # 产生伪随机事件的种子, 相同的 -s 产生的事件流相同, 格式(可指定多个-s): -s 1 -v # 反馈信息级别, -v 越多个, 输如的日志信息越详细, 最多支持 3 个 -v --throttle <ms> # 事件之间的间隔(单位为毫秒), 例如 200毫秒 的格式: --throttle 200 --randomize-throttle # 随机事件间隔时间 --profile-wait <ms> # --device-sleep-time <ms> # --randomize-script # --script-log # --bugreport # --periodic-bugreport # --permission-target-system #
致敬前辈,砥砺前行!
欢迎关注,留言,一起交流技术!
感谢支持!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。