FLEX (Flipboard Explorer) 是一系列集成在APP内部的用于iOS调试的工具集,以工具栏的形式显示在应用中,通过它,可以查看并修改几乎所有的APP运行状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g3gyNkjz-1598274646340)(https://user-images.githubusercontent.com/8371943/70185687-e842c800-16af-11ea-8ef9-9e071380a462.gif)]

强大的调试能力

  • 查看、修改View的层次关系。
  • 查看对象的属性和实例变量。
  • 动态修改属性和实例变量。
  • 动态调用实例和类方法。
  • 观察详细的网络请求历史记录,包括时间、报头和完整响应。
  • 添加自定义的模拟器快捷键。
  • 查看系统日志消息(例如从NSLog)。
  • 动态访问堆上的对象。
  • 访问APP沙盒中的文件系统。
  • 浏览文件系统中的SQLite/Realm数据库。
  • 在模拟器中使用控制键、shift键和command键触发3D触摸。
  • 探索APP和链接系统框架中的所有类(公共和私有)。
  • 快速访问一些常用的对象,比如 [UIApplication sharedApplication] 、App Delegate、Root View Controller等。
  • 动态查看、修改 NSUserDefaults 存储的值。

和其它调试工具不同,FLEX完全运行在你的APP中,所以不需要连接到LLDB/Xcode或者远程调试的服务端,在模拟器和真机上都运行的很好。

用法

简单方法

// Objective-C
[[FLEXManager sharedManager] showExplorer];
// Swift
FLEXManager.shared.showExplorer()

完整方法

#if DEBUG
#import "FLEXManager.h"
#endif...- (void)handleSixFingerQuadrupleTap:(UITapGestureRecognizer *)tapRecognizer
{
#if DEBUGif (tapRecognizer.state == UIGestureRecognizerStateRecognized) {// This could also live in a handler for a keyboard shortcut, debug menu item, etc.[[FLEXManager sharedManager] showExplorer];}
#endif
}

功能示例

修改视图

点击 views ,从工具栏下面弹出界面,显示视图的详细信息,并能修改属性值和调用方法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IcKW07h6-1598274646347)(https://user-images.githubusercontent.com/8371943/70271816-c5c2b480-176c-11ea-8bf4-2c5a755bc392.gif)]

网络记录

启用后,网络调试允许你查看所有使用NSURLConnection或NSURLSession发出的请求。并且你可以调整要缓存的响应体的类型以及响应缓存的最大大小限制。你可以选择在应用程序启动时自动启用网络调试。此设置会在启动时持久化。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3rdtzXtk-1598274646349)(https://user-images.githubusercontent.com/8371943/70271876-e5f27380-176c-11ea-98ef-24170205b706.gif)]

查看堆栈上的对象

FLEX会查询所有malloc活动分配的内存块,并搜索那些看起来像对象的内存块。你可以从这里看到一切:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jz37esC3-1598274646351)(https://user-images.githubusercontent.com/8371943/70271850-d83cee00-176c-11ea-9750-ee3a479c6769.gif)]

通过地址访问

你可以通过任意的一个地址来访问该地址的对象,如果地址指向有效的对象,你可以直接打开它。如果FLEX不确定这个地址是否指向有效的对象,它会警告并拒绝访问该指针。但是,你仍可以通过"Unsafe Explore"来访问它。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xmh9BbM5-1598274646353)(https://user-images.githubusercontent.com/8371943/70271798-bb081f80-176c-11ea-806d-9d74ac293641.gif)]

模拟键盘快捷键

默认的键盘快捷键允许您激活FLEX工具,使用方向键滚动,以及使用 ESC 键关闭模式。你也可以添加自定义键盘快捷方式通过 -[FLEXManager registerSimulatorShortcutWithKey:modifiers:action:description] 这个方法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-drsvho5n-1598274646355)(https://user-images.githubusercontent.com/8371943/70272984-d3793980-176e-11ea-89a2-66d187d71b4c.png)]

文件浏览

查看APP沙盒内的文件系统,包括文件大小、图片预览、以友好的方式显示json和plist文件。你可以重命名和删除文件和文件夹,也可以将文本和图片文件拷贝和剪贴板中,并且通过 “share” 来共享任意文件,以方便你在其他应用来打开这些文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MbkmhSok-1598274646356)(https://user-images.githubusercontent.com/8371943/70271831-d115e000-176c-11ea-8078-ada291f980f3.gif)]

SQLite浏览器

SQLite数据库文件(以 .db 或者 .sqlite为后缀为结尾的文件 ),或者
Realm数据库文件都可以使用FLEX来浏览。数据库浏览器允许你查看所有表,并通过点击每列的表头进行排序。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-azOY5JoG-1598274646357)(https://user-images.githubusercontent.com/8371943/70271881-ea1e9100-176c-11ea-9a42-01618311c869.gif)]

在模拟器中模拟3D触摸

使用 CMD、CTRL 和 shift 键的组合,您可以在模拟器中模拟不同级别的3D触摸压力。每个键贡献最大力的1/3。注意,你需要稍微移动触摸来获得压力更新。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-149bL55w-1598274646358)(https://cloud.githubusercontent.com/assets/1422245/11786615/5d4ef96c-a23c-11e5-975e-67275341e439.gif)]

探索系统库资源

深挖框架所有公共的和私有的类。如果需要了解有关类的更多信息,可以创建类的实例并研究其默认状态。如果知道要查找的类是哪个类,还可以输入类名直接跳转到该类。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nvg04jtc-1598274646359)(https://user-images.githubusercontent.com/8371943/70271868-dffc9280-176c-11ea-8704-a0c05b75cc5f.gif)]

编辑NSUserDefaults

FLEX允许修改NSUserDefaults的strings, numbers, arrays, and dictionaries,及其它们的组合,输入格式为JSON;如果使用其它数据作为key,如NSDate,则是只读的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CUi8y85F-1598274646360)(https://user-images.githubusercontent.com/8371943/70271889-edb21800-176c-11ea-92b4-71e07d2b6ce7.gif)]

探索其它APP

代码注入留给大家去摸索了。

iOS调试神器--FLEX相关推荐

  1. iOS debug神器

    推荐两款iOS 在手机端debug 工具, 可以查看日志,抓包(https你懂的!),UI控件查看,调试等.DoraemonKit , 啄木鸟(阿里巴巴开源),Flex(开源),iOSer debug ...

  2. web移动端调试神器Eruda

    在Web开发过程中,对html页面进行开发和调试的时候都会用到浏览器提供的调试工具,小编我最常用的就是Chrome浏览器自带的开发者工具了,可以很方便的对JS代码进行断点调试,log也很方便.但是在移 ...

  3. html5页面调试工具,web移动端调试神器Eruda

    在Web开发过程中,对html页面进行开发和调试的时候都会用到浏览器提供的调试工具,小编我最常用的就是Chrome浏览器自带的开发者工具了,可以很方便的对JS代码进行断点调试,log也很方便.但是在移 ...

  4. Xamarin.iOS调试提示需要iOS SDK

    Xamarin.iOS调试提示需要iOS SDK 错误信息:The version of Xamarin.iOS requires th iOS 9.3 SDK (shipped with Xcode ...

  5. python 如何边改代码边调试_Python 代码调试神器:PySnooper

    给大家推荐本我自己写的电子书<PyCharm中文指南>,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来.有兴趣的可以看它的在线文档: http://pycharm.i ...

  6. json.tojsonstring 导致cpu飙高_阿里调试神器立功了!进程导致Kubernetes节点CPU飙高的排查与解决...

    来源:https://www.cnblogs.com/maxzhang1985/p/12673160.html 一.发现问题 在一次系统上线后,我们发现某几个节点在长时间运行后会出现CPU持续飙升的问 ...

  7. Vue调试神器vue-devtools - 插件下载安装

    文章目录 Google如何安装调试Vue的神器`vue-devtools` ? 安装介绍: demo实例 - 演示代码: 相关文章链接: 1. https://github.com/vuejs/vue ...

  8. 微信公众号(移动端网页)必备的调试神器

    1.移动端调试神器vConsole 由于在移动端无法打开控制台,所以想办法打印调试console的数据一直苦恼.之前用的是chrome的inspect调试,但是只能使用移动版的chrome查看数据,兼 ...

  9. 嵌入式调试神器-虚拟示波器之JScope

    调试神器-虚拟示波器之JScope 在进行嵌入式开发过程中,需要查看某些实时变化的变量,以MDK为例我们通常都是进入DEBUG模式下去肉眼观察,这种方式不太人性化,也比较容易错失掉许多细节.为此我介绍 ...

最新文章

  1. Spring事务传播性与隔离级别
  2. hdu 5492(矩阵模型的变形)
  3. python总结函数图像_PIL使用小结(crop和paste函数)
  4. 北师大c语言2019在线作业,华东石油《C语言》2019年春季学期在线作业(二)辅导答案...
  5. vue-methods三种调用的形势
  6. 计算机编程语言vf,2016年计算机二级VF语言程序设计考试大纲
  7. Source Insight 3.X 插件支持utf8,完美解决中文乱码,另附优美的配置文件一份
  8. 2021年UI设计风格新风向新趋势,赶紧收藏!
  9. 初探三维计算机视觉(三维重建) —— 相机模型 + 双目系统 + 点云模型
  10. 创建自己的个人网站(一)
  11. 单耳蓝牙耳机怎么连接_蓝牙耳机怎么连接
  12. 重写规则(Rewrite Rules)在IIS和Linux服务器的配置区别
  13. LeetCode-Python-274. H指数
  14. 关于flask入门教程-ajax+echarts实现矩形树图
  15. 细说C++11中ratio编译期分数(一)
  16. 冬令营第二天(1.19)
  17. 数据结构 栈 括弧匹配检验
  18. scale与zoom的差异
  19. Hudson-GIT-MAVEN 项目热部署
  20. Kuboardv3与监控套件安装

热门文章

  1. 蓝桥-砝码称重【第十二届】【省赛】【B组】
  2. 2011年十大微博热点之一:一句话赚取2.3亿元
  3. python利用pandas对两张excel表合并(一)
  4. recv函数和send函数
  5. h5域名及微信快借贷款金融类APP下载链接域名在微信内显示已停止访问或无法打开的原因及解决方案
  6. 魔百盒,Ubuntu,armv7安装傻妞,
  7. “21天好习惯”第一期-第10天
  8. AlphaSSL通配符SSL证书详细教程
  9. 微信公众号采集教程、附详细分析过程
  10. Python多线程爬虫教你如何快速下载表情包,告别斗图斗不赢的烦恼!