起因

iOS开发调试过程中会需要很多工具协助,

  • 比如开发推送相关的需求时,需要用公司内部的推送平台来模拟流程发个推送,当然也有可以直接用推送的Mac开源工具,不过需要配置推送证书;
  • 测试人员如果想将App截图,需要先在手机上截图,然后传到电脑上或用IM转发给同事,不是很方便;开发人员想截图也需要用Xcode->菜单选中window->Devices and Simulators->Take Screenshot。
  • 比如使用Charles抓包mock数据,当然也可能有公司内部的mock数据平台;常用Charles mock数据时会发现随着本地mock文件增多,效率就下降了,过段时间可能因为本地mock文件名描述不够清楚,已经完全不知道这个mock文件是做什么的。
  • 比如和测试说了一下某个功能的开发写在了app本地,但是测试看不到具体key关联的值是什么,没法手动修改,如果通过流程修改可能比较麻烦
  • 当然也有工具可以集成后在app内看到相关文件和数据,在app内操作需要打开固定的界面,流程也深,感觉还是太麻烦了

总之,就是用的各种工具不够聚合,分散在各处

开发个工具解决了自己开发过程中遇到的很多痛点,当然现在还比较简陋,有兴趣的话,希望共建!

_config.yml

功能介绍

功能 说明 状态
设备信息 显示设备基本信息(设备名、系统版本、UDID 等)
应用列表 已安装用户应用列表(名称、Bundle ID、版本)
设备截屏 实时获取 iOS 设备屏幕截图
沙盒管理 浏览、创建、删除、上传、下载沙盒文件
UserDefault数据 浏览和管理 NSUserDefaults 数据
SQLite浏览器 选择数据库、浏览表数据、增删改查
编解码 Base64 / URL encode-decode 等常用编码工具
网络监控 实时监控应用网络请求,支持 Mock 数据
消息推送 向已连接应用发送自定义推送消息
日志监控 实时查看应用控制台日志
拖拽安装App 支持拖拽 .app / .ipa 安装到已连接设备

设备截屏功能待优化,按道理来说,只要连接上手机或模拟器就应该可以直接截屏了,遇到了点困难,现在只能在选择了内置MyUltronServer的app后才能截屏,截的只是app的内容,不包括手机顶部的状态栏。

网络监控和日志监控现在还有点简陋,待优化

设计决策

  1. 跨平台的实现Mac端的方式可以用Flutter,如果公司内部可能会考虑,因我暂时没考虑跨平台,部分功能需要用到Runtime拦截,且我有点懒,还是用OC实现吧;

  2. 底层实现可以选择将内置Python环境、Python库tidevice等工具,这样避免有其它的依赖性,比如安装app后运行后还要再去安装其它的库;除了包体有点大,如果是企业内部工具,也是可以接受的;当前选择了将必备的libimobiledevice静态库内置,纯原生的方式调用。


参考