工具Swift
iOSDevelopmentTools
在 app 内置的控制台中查看网络请求、日志和设备状态,敏感信息会被遮蔽
4星标数最新版本: v2.0.0 · 更新时间: 2026年10月15日
支持平台:iOS 17macOS 14
许可证: MIT
一个面向 iOS 17+ 和 macOS 14+、无依赖的 Swift package,记录 app 通过 URLSession 发出的请求、保存日志消息并收集设备报告,并在一个 SwiftUI 控制台中展示这三类信息;该控制台可通过摇一摇、按钮或窗口打开。密码、token、cookie 和 API key 在存储前就会被替换,请求可以导出为 cURL 命令或 HAR 文件。它面向调试和测试构建,并按 Swift 6 严格并发编写。
功能特性
- 一行代码即可记录:NetworkCapture.start() 会记录 URLSession.shared,以及之后由 default 或 ephemeral configuration 创建的每一个 session;响应原样传递给 app
- 存储前进行遮蔽:无论字段名的拼写方式如何,敏感名称对应的 header、query、form、multipart 和 JSON 值都会被替换;无法检查的结构化 body 会被隐去
- 存储有边界:默认最多保存 500 个请求、每个 body 最多 256 KiB,日志消息存放在环形缓冲区中,超过 4 MiB 的上传以流式处理而非整体复制
- 可将任意请求导出为对 shell 安全的 curl 命令,也可将任意请求列表导出为 HTTP Archive(HAR 1.2)
- LogStore 保存带级别和分类的日志消息,同时写入统一日志系统;DeviceSnapshot 报告版本号、操作系统、机型、内存占用、热状态和调试器状态
- SwiftUI 控制台包含 Network、Logs 和 Device 三个标签,支持搜索、筛选和分享菜单;可通过摇一摇(iOS)、按钮或在 macOS 窗口中打开
- 148 个 Swift Testing 测试;请求从 app 的 session 经过抓取流程到达一个 stub 服务器,测试会检查服务器收到了什么、app 收到了什么,以及被存储下来的是什么
- 包含 4 篇文章的 DocC catalog,以及面向 iOS 和 macOS 的 DevToolsDemo 示例 app
快速开始
swift
1@main2struct MyApp: App {3 init() {4 #if DEBUG5 NetworkCapture.start()6 #endif7 }8 9 var body: some Scene {10 WindowGroup {11 ContentView()12 #if DEBUG13 .devToolsConsoleOnShake()14 #endif15 }16 }17}安装
Xcode (File › Add Package Dependencies…)
text
1https://github.com/muhittincamdali/iOSDevelopmentTools.gitSwift Package Manager
swift
1.package(url: "https://github.com/muhittincamdali/iOSDevelopmentTools.git", from: "2.0.0")截图

![在控制台中打开的一个登录请求:Authorization header 和 JSON body 中的密码都显示为 [REDACTED]](/_next/image/?url=%2Fopen-source%2Fiosdevelopmenttools%2Frequest-light.png&w=3840&q=75)


时间线
仓库开放,包含 network、storage、analytics、debug 和 utility 模块
打上 v1.0.0 标签:一个基于 Alamofire 构建的网络客户端,加上分五个模块实现的 storage、analytics 和 logging manager
简化:1.0.0 的模块被移除,替换为占位代码
v2.0.0:从零重建为一个应用内网络检查器、日志控制台和设备报告,加入了遮蔽功能、DocC 和一个示例 app