Reynard:基於 Gecko 的 iOS 13+ 網頁瀏覽器

Reynard:基於 Gecko 的 iOS 13+ 網頁瀏覽器

Reynard 是一款針對 iOS 13 及以上版本的實驗性網頁瀏覽器,它使用 Gecko 引擎——與桌面版與 Android 版 Firefox 相同的引擎——取代 Apple 強制使用的 WebKit。這讓使用較舊 iOS 版本的使用者能夠存取本來會因為系統內建的舊版 WebKit 而無法載入的現代網站。

為舊設備支援而繞過 WebKit

Apple 要求所有 iOS 瀏覽器必須使用 WebKit 引擎。由於 WebKit 隨作業系統捆綁,使用較舊 iOS 版本的裝置無法在不升級作業系統的情況下取得引擎更新。這導致舊設備被迫使用缺乏現代 ECMAScript 功能且未修補漏洞的古老 WebKit 版本。

透過實作 Gecko,Reynard 提供一個與作業系統無關、保持最新的渲染引擎。這使舊設備能正確渲染現代網頁,包括 GitHub、ChatGPT、Apple.com 等網站,這些網站在 iOS 14 的 Safari 上常常會崩潰或顯示錯誤。

安裝與側載方式

由於 Reynard 使用非標準引擎,無法透過官方 App Store 發行,必須側載。安裝方式取決於 iOS 版本與裝置狀態:

TrollStore(iOS 14 - 16.6.1,17.0)

TrollStore 是建議的最佳體驗方式,使用 Reynard-TrollStore.tipa 版本。此方式提供自動 JIT(即時編譯)啟用、卓越效能以及自動應用程式更新。

AltStore 或 SideStore(iOS 17.0.1+)

在較新 iOS 版本且無法使用 TrollStore 時,使用者可側載 Reynard.ipa 版本。安裝時務必勾選 Keep App Extensions(保留應用程式擴充功能)選項,因為瀏覽器依賴這些擴充功能才能運作。

已越獄裝置(iOS 13)

在 iOS 13 的已越獄裝置上,使用者可透過 Filza File Manager 搭配 AppSync Unified 側載 Reynard-Jailbroken.ipa 版本,該方式同樣支援自動 JIT 與提升效能。

不支援的方式: LiveContainer 以及使用發行憑證簽署的側載方式皆明確不支援。

技術實作與開發

專案創建者 AbuAssar 開發 Reynard,測試在不使用 BrowserEngineKit 框架的情況下,Gecko 是否能在 iOS 上運行,從而支援較舊的 iOS 版本。此專案結合了多個社群工具與私有 API 以處理記憶體與 JIT 啟用:

  • JIT 與記憶體處理: 參考 Amethyst-iOS、dolphin-ios、MeloNX 等專案的私有 API 使用與 JIT 記憶體管理。
  • 應用程式擴充功能: 使用 LiveContainer 處理應用程式擴充功能與 NSExtension。
  • JIT 啟用: 透過 StikDebug、idevice 與 TrollStore 的配對機制實現 JIT 啟用。
  • 引擎整合: 基於 Mozilla Bugzilla(Bug 1882872)中已有的 Gecko 在 iOS 上的整合工作。

社群見解與法規背景

使用者討論中凸顯了第三方瀏覽器引擎與 Apple 生態系之間的廣泛衝突。雖然歐盟、英國與日本等司法管轄區正迫使 Apple 允許第三方引擎,但使用者指出 Apple 的回應往往是「惡意合規」,設下種種障礙阻礙測試與發佈。

"Apple is being forced by different jurisdictions (EU, UK, Japan) to allow third-party browser engines... Apple has been maliciously compliant, putting up roadblocks to testing and distribution."

批評者與熱衷者認為,對於已過時的裝置而言,像 Reynard 這樣的專案相當重要,因為它避免了因渲染引擎過舊且不再由 Apple 修補而導致的設備過時問題。

Sources