开源 | App 开发神仙工具:帮你抓 Bug

栏目: IT技术 · 发布时间: 5年前

开源 | App 开发神仙工具:帮你抓 Bug

阿里妹导读: 本文分享 优酷开源的 iOS 开发提效工具 啄幕鸟 抓包、验埋点、视觉走查都很方便,离案也可随时定位问题,可帮助大家提高发现问题的效率。 产品、测试、运营、UED 及开发人员皆宜

文末福利: 《15 分钟打造你自己的小程序》电 子书下载

一  背景

客户端日常开发中经常遇到各种低效痛点,比如开发 UI 界面时,开发、设计同学走查 UI 基本靠眼,不易于发现问题;设计同学想修改一个 UI 元素,除非是原开发者,其他同学不知道相关的 UI 类和 UI 布局,定位代码费时费力;再如出现 bug 时无法在 bug 现场获取数据定位问题,debug 依赖电脑联调,缺少独立便捷的 debug 工具。

对此优酷开发了啄幕鸟 iOS 提效 工具 平台,在端上整合各种高效 debug 工具,不依赖电脑联调,直接获取 App 运行时数据,快速定位问题,提高开发测试效率。

啄幕鸟项目现已开源,欢迎接入,共建共享。

二  啄幕鸟简介

啄幕鸟,即手机屏幕上的啄木鸟,森林里的啄木鸟抓虫子,优酷的啄幕鸟抓 bug。

啄幕鸟提效工具平台集合了 UI 检查、对象查看、方法监听、po 命令执行、JSON 抓包等十多个开发工具,不依赖电脑联调,直接获取运行时数据,快速定位 bug,简便易用,零侵入、零依赖、易接入、易扩展。

开源 | App 开发神仙工具:帮你抓 Bug

啄幕鸟架构图

开源 | App 开发神仙工具:帮你抓 Bug

啄幕鸟界面截图

1  啄幕鸟架构

啄幕鸟使用插件化架构,每个工具作为插件接入到啄幕鸟基础服务当中,各个插件相互独立,同时支持外部插件注册、定制等,啄幕鸟还提供了一些通用功能模块,如系统分享面板、屏幕日志等,方便各插件使用。

2  基础服务

基础服务包括生命周期管理,插件加载、注册、运行,资源管理,本地化等基础能力。

3  公共模块

啄幕鸟公共模块包括分享面板、图文预览、屏幕折线图、屏幕日志四部分,随着工具开发,越来越多的通用能力会总结到公共模块中。

1)分享面板封装了系统分享功能,方便各个工具导出信息,啄幕鸟中的文本、图片皆支持分享面板导出。

2)图文预览用以全屏查看文本、图片。

3)屏幕折线图方便插件直观的显示数据,啄幕鸟中性能插件使用了屏幕折线图显示性能数据。

4)屏幕日志模块方便各插件在 App 内显示日志、接受用户输入,屏幕日志界面大小可调,支持日志显示、用户输入、搜索、正则表达式过滤等功能,系统信息工具直接使用了屏幕日志显示信息:

开源 | App 开发神仙工具:帮你抓 Bug

系统信 息插件中直接使用了屏幕日志显示信息

三  主要工具介绍

1  UI 检查工具

UI 检查包含控件拾取和测距条两个工具,控件拾取会根据手指在屏幕上的点击坐标,递归遍历 View 层级,获取包含触点坐标的最靠前的 UI 控件,并显示控件的类名、 frame、字体、图片 URL 等信息,方便地获取、导出运行时数据;测距条工具会在屏幕上添加大小、位置可控的 View 作为测量标尺,作为控件拾取的补充,对于某些不能通过控件拾取查看的大小间距,如行间距等,可以使用测距条测量。

开源 | App 开发神仙工具:帮你抓 Bug

控件拾取、测距条截图

2  In-App-Debug 工具

iOS 开发主要使用 LLDB 的断点、指令等进行 Debug,依赖电脑联调,In-App-Debug 即不依赖电脑,使用 App 内的 debug 工具获取运行时数据,帮助定位问题,啄幕鸟提供了多种查看运行时数据的方式:对象查看、方法监听、po 命令和 JSON 抓包,帮助在 bug 现场定位问题,In-App-Debug 工具都利用了 objective-C 的运行时特性,将运行时特性工具化,形成一能力多功能的开发工具,如方法监听既可以用于定位 bug,也可以监听网络方法抓取网络数据,其他工具也都有多种用途,可以极大提高 debug 效率。

1)对象查看

App 中所有的对象通过继承、代理、属性等关系,可以看作一个或多个连通图。从一个对象开始,可以利用运行时特性获取连通图里任一个对象的属性、成员变量,获取运行时数据,以定位问题。双击控件拾取的信息区即可打开对象查看,对象查看会显示拾取对象的属性、成员变量列表,点击对象即可查看它的属性,层层查找即可查看到每一个相关的对象,并可以通过命令读取对象 key-path-value、执行 po 命令等。

开源 | App 开发神仙工具:帮你抓 Bug

查看某 UILabel 对象、使用 k 命令获取圆角值

开源 | App 开发神仙工具:帮你抓 Bug

UI 检查、对象查看 Demo

2)方法监听

对象查看提供了获取 App 静态数据的方式,而方法监听提供了获取动态数据的方式,输入监听命令即可监听任意 OC 方法的调用,输出调用参数和返回值,用以查看代码逻辑是否正常执行,关键方法是否调用,监听网络方法以在 App 内抓包等。

开源 | App 开发神仙工具:帮你抓 Bug

监听设置自动息屏方法并显示日志 

开源 | App 开发神仙工具:帮你抓 Bug

方法监听 Demo

方法监听利用了 OC 的消息转发机制,通过 hook 监听对象消息转发的相关方法,最后可以在 ykwoodpecker_forwardInvocation 方法中收到封装了被监听方法调用参数和返回值的 NSInvocation,即可获取 target、selector 等参数数组,根据参数编码规则解析相应的参数,最后修改 NSInvocation 的 selector 为指向原方法的 ykwoodpecker_selector ,即可调用原方法获取返回值,输出日志。

开源 | App 开发神仙工具:帮你抓 Bug

使用方法监听需要输入类名、方法名、keypath 等参数,故采用了命令行进行交互,扩展性好,配合命令配置,输入也较方便。命令使用统一格式,<命令名缩写><空格><命令参数><空格><命令参数>,如监听命令 L className methodName ,KVC 取值命令 k keyPath ,调用栈查看命令 k callStack ,所有命令详见工程 README。为方便输入,命令可通过后台配置,一键输入,命令配置采用如下格式的 JSON,可在啄幕鸟初始化时指定配置 JSON 的获取地址,推荐在 https://github.com/ZimWoodpecker/WoodpeckerCmdSource  工程中建立配置,方便命令共享。

开源 | App 开发神仙工具:帮你抓 Bug

后台命令配置格式

3)po 命令

po 命令是 iOS 开发中最常用的 debug 命令,po 命令工具会解析输入字符串,获取输入的方法名、参数等,动态调用所输入命令,并显示返回信息。

开源 | App 开发神仙工具:帮你抓 Bug

App 中执行 po 命令

4)JSON 抓包

使用方法监听抓包略有不便,数据量较大时会引起卡顿,因此提供了更方便的 JSON 抓包工具,通过监听 NSJSONSerialization 的 JSON 解析方法实现抓包。

开源 | App 开发神仙工具:帮你抓 Bug

JSON 抓包工具截图

四  更多功能

随着日常使用,啄幕鸟中增加了更多功能:

  • 系统信息:查看系统名称、版本、屏幕、UA 等信息,支持添加业务方信息。

  • SandBox:查看沙盒文件,导出文件等。

  • Defaults:查看、新增、删除 User Defaults。

  • 清除数据:清除所有沙盒数据,包括 User Default。

  • UI 对比:支持将设计图导入到 App 中进行对比,并可画线、标注需修改的地方,方便 UI 走查。

  • 查看图片资源、Bundle 资源:查看 App 中的图片资源与 Bundle 目录内容。

  • Crash:查看本地 crash 日志。

  • 触点显示:显示手指触控,方面录屏时显示触控操作。

  • 性能插件:查看 CPU、内存占用率,帧率,网络流量等。

  • 其他业务方注册的插件:环境切换、埋点、实验、调试工具等。

开源 | App 开发神仙工具:帮你抓 Bug

啄幕鸟工具插件截图

五  扩展开发

啄幕鸟使用插件化架构,新插件扩展方便,部分插件也支持功能扩展。一个类只需实现插件协议方法即可注册为插件,可定制插件分组、分组显示位置、插件名称、icon、插件显示位置等,简单方便,高可定制。控件拾取、系统信息等插件也支持功能扩展,通过监听相关系统通知可以获取拾取到的 View 等事件,并显示自定义信息,具体参见工程 README。

六  快速接入

啄幕鸟推出以来深受欢迎,已成为产品、设计、开发、测试日常互怼居家旅行必备之工具,啄幕鸟不依赖优酷、阿里或其它第三方库和数据,主要功能皆通过系统 API 或 hook 方式实现,没有使用 + load / initialize 方法,不开启啄幕鸟不会执行任何代码,简单安全,零侵入,零依赖。

啄幕鸟现已开源,是 AIOSO 的子项目之一,支持 iOS 8.0 及以上,阿里巴巴集团内外使用 pod YKWoodpecker 即可接入。

Get Started:

pod  'YKWoodpecker'

一行代码打开啄幕鸟:


 

#import "YKWoodpecker.h"

// 显示啄幕鸟入口

[[YKWoodpeckerManager shareInstance] show];

更多介绍详见工程 README,Github 地址:

https://github.com/alibaba/youku-sdk-tool-woodpecker 。

开源 | App 开发神仙工具:帮你抓 Bug   福利来了  开源 | App 开发神仙工具:帮你抓 Bug  

独家下载

《15 分钟打造你自己的小程序》

开源 | App 开发神仙工具:帮你抓 Bug

《15 分钟打造你自己的小程序》独家电子 书上线啦! 零基础开发你自己的支付宝小程序,手把手教你从入门到精通的宝典。 ToDo 待办事项 小程序、个人相册小程序、云笔记小程序、运动步数小程序、花呗支付小程序,五大实践场景让你更懂云上生活~

识别下方二维码 点击文末“阅 读原文 ”查看:

开源 | App 开发神仙工具:帮你抓 Bug

你可能还喜欢

点击下方图片即可阅读

开源 | App 开发神仙工具:帮你抓 Bug

程序员:除了技术,还有什么更重要?

开源 | App 开发神仙工具:帮你抓 Bug

架构方法论:如何自底向上推导应用逻辑?

开源 | App 开发神仙工具:帮你抓 Bug

关注 「阿里技术」

把握前沿技术脉搏

戳我,下载小程序开发电子书。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Inside Larry's and Sergey's Brain

Inside Larry's and Sergey's Brain

Richard Brandt / Portfolio / 17 Sep 2009 / USD 24.95

You’ve used their products. You’ve heard about their skyrocketing wealth and “don’t be evil” business motto. But how much do you really know about Google’s founders, Larry Page and Sergey Brin? Inside......一起来看看 《Inside Larry's and Sergey's Brain》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具