Reynard: A real Firefox web browser for iOS 13 or later
AI 深度解读
背景
在 iOS 平台上,所有浏览器(包括 Safari 和第三方浏览器)都被迫使用 Apple 的 WebKit 渲染引擎。这是因为 Apple 要求所有 iOS 上的网页浏览器必须使用 WebKit,这一限制导致其他浏览器引擎(如 Gecko、Blink)无法原生运行。对于运行旧版 iOS 的设备,WebKit 作为系统组件无法单独更新,导致这些设备无法渲染现代网站。Reynard 项目正是针对这一痛点而生——它成功在 iOS 上使用了 Mozilla 的 Gecko 引擎(即桌面版 Firefox 和 Android 版 Firefox 使用的引擎),为老旧设备和希望摆脱 WebKit 的用户提供了一个新的选择。
核心内容
Reynard 是一个基于 Gecko 引擎的 iOS 浏览器,支持 iOS 13 及以上版本。与 iOS 上其他强制使用 WebKit 的浏览器不同,Reynard 使用与桌面和 Android 版 Firefox 相同的 Gecko 引擎。该项目主要面向因 iOS 版本过旧而无法获得 WebKit 更新的用户——由于 WebKit 与系统捆绑,这些设备无法接收引擎升级,常常无法加载现代网站。通过使用独立更新的 Gecko 引擎,Reynard 让这些网站重新可用。即便是较新 iOS 版本的用户,如果想摆脱 WebKit 限制,也可以使用 Reynard,并享受 Firefox 扩展(add-on)以及其他 Gecko 专属功能。
最新构建版本可在项目的 Releases 页面下载。目前项目仍处于早期实验阶段,存在 bug 和功能缺失。推荐的最佳使用方式是:通过 TrollStore 侧载(sideload)Reynard-TrollStore.tipa 构建,这样可以自动获得 JIT 启用、更好性能和自动应用更新。在 TrollStore 中需确保 URL Scheme Enabled 选项已开启以实现自动更新。
如果无法使用 TrollStore(尤其是在较新 iOS 版本上),可以使用 AltStore 或 SideStore 侧载 Reynard.ipa 构建。安装时必须选择“Keep App Extensions”选项,因为 Reynard 依赖其扩展正常工作,缺少扩展将无法运行。也可以点击链接将 Reynard 的 AltSource 添加到 AltStore 或 SideStore。
重要提示:
- 不支持 LiveContainer(因其自身局限)。
- 不支持使用分发证书签名的侧载方法。
- 其他侧载方法未经测试,相关问题不提供支持。
对于越狱设备,可通过 Filza File Manager 配合 AppSync Unified 侧载 Reynard-Jailbroken.ipa 构建,同样能获得自动 JIT 启用和更好性能。
已知某些网站在 iOS 14 上会崩溃或渲染异常,Reynard 的截图对比显示了这些网站在 Safari 和 Reynard 上的表现差异。Reynard 在最新版 iOS 上也能良好运行。
构建说明(仅供参考,不提供构建过程的问题支持): 需要 Xcode、Python 3、Rust 和 Cargo、ldid。通过 git clone 递归克隆仓库,然后运行脚本下载 Gecko 并应用补丁,接着构建依赖和 Gecko 引擎。最后在 Xcode 中打开 Reynard.xcodeproj 进行构建和运行。
项目最初源于好奇心——作者想看看能否在不使用 BrowserEngineKit 框架的情况下让 Gecko 运行,以便能在尽可能老旧的 iOS 版本上修改使用。成功之后,作者专注于为更好的 UIKit 集成开发引擎补丁、修复 bug,并将此项目打造成一个完整的浏览器。
作者欢迎任何形式的帮助或协作,由于作者在 iOS 应用开发和 Gecko 方面经验有限,贡献、反馈或指导都非常感谢。
项目引用了多项现有工作成果,包括 LiveContainer、StikDebug 和 idevice、TrollStore、Amethyst-iOS、dolphin-ios、DukeX、MeloNX 等,以及使用 BrowserEngineKit 将 Gecko 带到 iOS 的先前工作。
项目采用 GNU General Public License v3.0 许可,但 patches 目录包含对 Firefox Gecko 引擎的修改,因此采用 Mozilla Public License 2.0。
关键要点
- Reynard 是 iOS 上首个(已知)基于 Gecko 引擎的浏览器,支持 iOS 13+。
- 打破了 iOS 必须使用 WebKit 的限制,为老旧设备提供现代渲染能力。
- 推荐通过 TrollStore 侧载以获得 JIT、性能和自动更新;AltStore/SideStore 为备选方案。
- 安装时必须保留应用扩展(App Extensions),否则无法工作。
- 项目处于早期实验阶段,存在 bug 和功能缺失。
- 需要越狱或侧载才能使用,不支持 App Store 安装。
- 构建需要 Xcode、Python 3、Rust/Cargo、ldid,以及复杂的补丁流程。
- 项目依赖多项开源社区工作成果,作者欢迎协作。
意义与影响
Reynard 的意义在于它挑战了 Apple 对 iOS 浏览器引擎的垄断。长期以来,iOS 上所有浏览器都是 WebKit 的“壳”,苹果的规则迫使第三方浏览器无法使用自己的渲染引擎。Reynard 通过侧载和绕过 BrowserEngineKit 的方式实现了 Gecko 引擎的移植,证明了 iOS 上运行非 WebKit 引擎的可行性。这对老旧设备用户尤其重要——他们无法获得 WebKit 更新,而 Reynard 通过独立更新的 Gecko 让这些设备能正常浏览现代网页。尽管该项目处于实验阶段,稳定性有限,但它为开发者提供了探索 iOS 浏览器多样性的基础。若未来能进一步优化并可能引起对 iOS 浏览器限制政策的讨论,Reynard 将成为推动平台开放性的一个标志性项目。此外,它也为 Firefox 粉丝提供了在 iOS 上真正使用 Gecko 引擎的机会,并支持 Firefox 扩展,增强了 iOS 浏览器的可定制性。
