这里每天分享一个 iOS 的新知识,快来关注我吧
前言
这周写 iOS 项目正好把数据库和日志模块重构了一轮,翻 GitHub 挖到几个压箱底的库和工具,整理出来给你们参考。
开发库推荐
GRDB.swift —— Swift 圈的 SQLite 之王
GitHub:groue/GRDB.swift[1]
一提到 iOS 本地数据库,大部分人条件反射就是 Realm、Core Data。但说真的,GRDB 是被严重低估的一个。我自己好几个项目都在用,那种"Swift 原生 API 用着爽,想写 SQL 也随时能写"的感觉,没别的库比得上。
它专门为 App 开发做的 SQLite 工具包,支持数据库观察、SQL 构建器、类型安全的记录映射,Combine 和 async/await 也都能配着用。举个例子:
如果本地数据结构稍微复杂点,又不想被 Core Data 那套 API 折磨,选它准没错。
Star 8.5k+,维护活跃,属于"用过就回不去"那种。
CocoaLumberjack —— 日志框架里的老前辈
GitHub:CocoaLumberjack/CocoaLumberjack[2]
这个就不用我多说了吧,iOS 圈子基本人手一份。快速、简单、灵活的日志框架,macOS、iOS、tvOS、watchOS、visionOS 全都支持。
跟 print 和 NSLog 一比,优势就出来了:异步写入不卡主线程、多输出目标(控制台、文件、你自己搞的都行)、日志分级、按天滚动文件……用起来大概长这个样子:
只要项目稍微正经点,日志系统我都建议直接上它。特别是要收线上日志的场景,文件输出配着简直是标准动作。
Star 13.3k+,本周还在更,闭眼选就行。
Amplitude-iOS —— 用户行为分析 SDK
GitHub:amplitude/Amplitude-iOS[3]
要做用户行为分析的话,Amplitude 是绕不开的一个选项。这是它家官方的 iOS/tvOS/macOS 原生 SDK,接入就几行代码的事。
比起自己搭一套埋点,Amplitude 好就好在开箱即用,后台那套可视化分析还挺能打。漏斗、留存、事件流啥的都不用自己写。
中小团队想快速搭个数据分析体系,用它省事多了。
Star 300+,官方 SDK 星数不算高但很稳。不过要提醒一下:这个仓库最近 4 个月没新提交了,官方现在主推的是新一代 amplitude-swift。新项目直接上新的,老仓库更多是给已经集成过的人维护用。
TrustKit —— SSL Pinning 一把梭
GitHub:datatheorem/TrustKit[4]
做金融、支付类 App 的同学,对 SSL Pinning(证书固定)肯定不陌生,用来防中间人攻击的那套东西。自己撸这块逻辑真的很容易翻车,TrustKit 就是来帮你把这些脏活干了的。
iOS、macOS、tvOS、watchOS 都支持,配置也简单,一个字典就完事:
对安全要求高的项目——尤其是碰用户敏感数据的——直接用它就完了。
Star 2.1k+,维护活跃,本周还有更新。
iOS Snapshot Test Case —— UI 快照测试神器
GitHub:uber/ios-snapshot-test-case[5]
Uber 家的 UI 快照测试框架。做过 UI 回归测试的都知道,手动截图一张张比对简直是噩梦,这库就是来救命的。
原理挺朴素:第一次跑测试存一张参考图,之后每次都渲染当前 UI 去和参考图比,像素级有差异就 fail。
组件库、设计系统类的项目特别适合,每次改动都能保证视觉不出岔子。
Star 1.8k+。不过得提一嘴,这仓库最近 8 个月没提交了,维护有点慢,Uber 内部估计换方案了。新项目慎选,老项目维护用还行。
开发工具推荐
SwiftLint —— Swift 代码规范的定海神针
GitHub:realm/SwiftLint[6]
这个工具,iOS/Swift 开发必备,没有之一。团队里代码风格不统一,简直是灾难现场,SwiftLint 就是那个让所有人老老实实听话的裁判。
基于 Swift AST 做静态分析,内置几百条规则,命名、行长度、强制解包警告、复杂结构检查全都覆盖了。塞进 Xcode 的 Build Phase,编译时自动跑:
再配一份 .swiftlint.yml,团队规范直接落地,新人来了照着改就完事。项目大小无所谓,都能用。
Star 19.6k+,本周还在更,Realm 官方出品,品质有保障。
vphone-cli —— Lakr233 出品的命令行小工具
GitHub:Lakr233/vphone-cli[7]
Lakr233 大佬这回又整活了。Swift 写的命令行工具,Apple 生态里挺有意思的一个项目。Lakr233 出品基本就等于质量保证,之前那些独立小工具都挺惊艳的。
具体功能就不剧透了,感兴趣直接去仓库看 README,作者的项目一向文档清晰、上手快。Swift 写 CLI 其实挺有搞头——性能好、类型安全,可读性甩 Shell 脚本几条街。
想学 Swift 命令行开发的、或者喜欢折腾工具链的,都可以看看。
Star 7.5k+,本周还在更,维护活跃。
LiveContainer —— 不安装就能跑 iOS 应用
GitHub:LiveContainer/LiveContainer[8]
这项目就有点意思了——不实际安装,直接跑 iOS 应用。听着像黑魔法,但它真做到了。原理是搞了个容器 App 来加载并运行别的 IPA,绕开系统的一些限制。
对开发者来说,最大用处是测试和调试,比如想快速试一下别人的 IPA、或者绕开企业证书那烦人的 7 天限制,都能派上用场。当然涉及签名、越狱环境什么的,具体用法得自己摸索。
搞逆向、做工具的、或者就是纯粹想折腾 iOS 内部机制的技术控,可以看看。
Star 10.6k+,本周还在更,热度很高。
OmniWM —— macOS 平铺窗口管理器
GitHub:BarutSRB/OmniWM[9]
用惯了 Linux 上的 Niri、Hyprland 那种平铺 WM,一到 macOS 是不是觉得窗口管理原始得不行?OmniWM 就是来解决这个痛点的——Swift 原生写的 macOS 平铺窗口管理器。
对比 yabai、Amethyst 那些老家伙,OmniWM 定位更现代,灵感来自 Niri 和 Hyprland,追求流畅的动画和更符合直觉的交互。而且作者做了签名和公证,企业环境也能放心用。
追求键盘流、多屏高效办公的人,别错过。
Star 2.3k+,本周还在提交,维护得很好。
remux —— iOS 上的原生 tmux 客户端
GitHub:h3nock/remux[10]
作为一个经常 SSH 到服务器的开发者,在 iPad 上舒服地用 tmux 一直是我的刚需。remux 就是这么个东西——SwiftUI 写的原生 iOS tmux 客户端。
它不是那种普通的终端模拟器,而是深度集成了 tmux 的会话管理,能直接连远程服务器上的 tmux 工作区。配上 iPad 键盘和分屏,出门在外简直是移动办公神器。SwiftUI 的界面也挺现代化。
经常在 iPad 上做远程开发、运维、写代码的,值得试试。
Star 400+,本周还在更,作者维护挺勤快的。
最后
这些你用过几个?评论区聊聊你压箱底的好东西~
参考资料
这里每天分享一个 iOS 的新知识,快来关注我吧
夜雨聆风