迁移老文章到掘金
这个工具在早期的VKDebugConsole的基础上完全推翻重做了,核心思路都不变,只是重新整理了工具的使用方式,工具的界面呈现,工具的模块划分,模块化可扩展支持
旧文档链接 -- VKDebugConsole App黑盒控制台
App内调试工具 Github VKDevTool
允许在
进行App的调试工作,包括:
方便在黑盒测试+内部体验的环境下,发现Bug后,直接在Bug现场调试内存,分析问题
VKDevTool
文件夹拖入工程文件VKDevToolLogHeader.h
写入pch,以便开启NSLog的动态拦截记录,不导入ConsoleLog模块无法捕获NSLogVKDevToolDefine.h
中的#ifdef DEBUG
来进行自定义的编译控制,如果不修改,默认Debug模式下VKDevTool工具才有效[VKDevTool enableDebugMode];
复制代码
一行代码即可开启DevTool的功能,该功能内部有编译控制,Release版本会自动失效,无需使用者在这行代码外围在套一层#ifdef DEBUG
进行完工程配置与写入代码之后可以通过如下方式,在App内打开工程模式菜单
主菜单模块包含4个模块
VKDevTool采取模块化设计,每个模块Module都可以独立分拆分离,同时支持用户定义扩展自己的模块,图中的额外2个模块为自定义模块
DebugScript
以上是一个预览界面,上方输入的代码都是基于JSPatch的,所有JSPatch的语法规则这里都一模一样可以使用,戳这里看JSPatch如何使用 JSPatch语法
Shake Gesture
功能模拟摇一摇,依旧可以唤起子菜单包含以下几个功能
GetTarget
:自动往输入框中输入getTarget的脚本代码,执行以后print Target信息,便于后续直接调试target的任意内存数据和执行方法
Get TargetVC
:自动往输入框中输入getTargetVC的脚本代码,执行以后print Target所在的当前vc的信息,便于后续直接调试targetVC的任意内存数据和执行方法
ChangeTarget
:自动往输入框中输入切换所选target的代码,执行后,重新返回选择target界面
ClearInput
:清空输入区域
ClearOutput
:清空输出区域
Exit
:退出DebugScript
除此之外,DebugScript为JS代码添加了一个功能print()函数,可以print任意OC对象,如果对象是View,还会有额外的frame等信息输出
我们通过一个GIF动画,大体看一下调试JS代码如何使用,此处的Gif是旧的Gif,新版本的颜色样式都已经调整,加了子菜单快捷方式,但是用法完全不变
在PCH中加入了VKDevToolLogHeader.h
后,本模块会拦截所有NSLog打印日志,以及NSError生成记录,在这个界面进行列表展示
真机摇一摇 or 模拟器Command+X 可以唤起ConsoleLog模块子菜单
VKDevTool会采用NSURLProtocol的方案,拦截hook所有的http请求,一一记录起来,以列表的形式,展现在NetworkLog模块内
每个cell,都可以点击查看每一条网络请求的真实返回数据,并且支持复制到剪切板
真机摇一摇 or 模拟器Command+X 可以唤起NetworkLog模块子菜单
如果NetworkHook无效,查看是否是因为AFN sessionManager需要注册NSURLProtocol导致的
NSURLSessionConfiguration *configuration= [NSURLSessionConfiguration defaultSessionConfiguration];
NSArray *protocolArray = @[[VKURLProtocol class]];
configuration.protocolClasses = protocolArray
复制代码
VKDevTool采用YY大神开源的YYViewHierarchy3D,实现了这个页面层级模块
Shake Gesture
功能模拟摇一摇,依旧可以唤起[VKDevTool changeNetworktModuleFilter:@“xxxxx”];
复制代码
这个接口控制网络请求HookLog的过滤器,只拦截含有xxxx字符串的http网络请求,同时在DevTool内还可以通过菜单,修改网络拦截过滤器
如果全都拦截,可以省略
[VKDevTool registKeyName:@"custom module name" withExtensionFunction:^{//todo your code
}];
复制代码
VKDevTool采取模块化设计,每个模块Module都可以独立分拆分离,同时支持用户定义扩展自己的模块
这个接口用于给VKDevTool扩展主菜单模块,可以省略不写,只使用自带的4个模块。
本文发布于:2024-02-01 20:22:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679011939208.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |