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

功能介绍
| 功能 | 说明 | 状态 |
|---|---|---|
| 设备信息 | 显示设备基本信息(设备名、系统版本、UDID 等) | ✅ |
| 应用列表 | 已安装用户应用列表(名称、Bundle ID、版本) | ✅ |
| 设备截屏 | 实时获取 iOS 设备屏幕截图 | ✅ |
| 沙盒管理 | 浏览、创建、删除、上传、下载沙盒文件 | ✅ |
| UserDefault数据 | 浏览和管理 NSUserDefaults 数据 | ✅ |
| SQLite浏览器 | 选择数据库、浏览表数据、增删改查 | ✅ |
| 编解码 | Base64 / URL encode-decode 等常用编码工具 | ✅ |
| 网络监控 | 实时监控应用网络请求,支持 Mock 数据 | ✅ |
| 消息推送 | 向已连接应用发送自定义推送消息 | ✅ |
| 日志监控 | 实时查看应用控制台日志 | ✅ |
| 拖拽安装App | 支持拖拽 .app / .ipa 安装到已连接设备 |
✅ |
设备截屏功能待优化,按道理来说,只要连接上手机或模拟器就应该可以直接截屏了,遇到了点困难,现在只能在选择了内置MyUltronServer的app后才能截屏,截的只是app的内容,不包括手机顶部的状态栏。
网络监控和日志监控现在还有点简陋,待优化
设计决策
-
跨平台的实现Mac端的方式可以用Flutter,如果公司内部可能会考虑,因我暂时没考虑跨平台,部分功能需要用到Runtime拦截,
且我有点懒,还是用OC实现吧; -
底层实现可以选择将内置Python环境、Python库tidevice等工具,这样避免有其它的依赖性,比如安装app后运行后还要再去安装其它的库;除了包体有点大,如果是企业内部工具,也是可以接受的;当前选择了将必备的libimobiledevice静态库内置,纯原生的方式调用。