Chromium Chronicle #28:開始使用 iOS 版 Chrome

第 28 集:由 Mark Cogan 在法國巴黎 (2022 年 1 月)
上一集

2022 年,Chrome iOS 版將於 2022 年慶祝 10 週年。 Chrome 是最普遍使用的 iOS 應用程式之一,也是美國 App Store 的第 2 大公用應用程式。

iOS 版 Chrome 提供使用者喜愛的所有 Chrome 優質功能,包括同步、翻譯、無痕模式、密碼管理工具和自動填入等等。iOS 版 Chrome 也已經和 iOS 原生功能整合,例如多視窗模式和裝置層級密碼自動填入功能。

不過,iOS 版 Chrome 與所有其他 Chrome 平台的實作方式之間,有一項主要差異。

iOS 版 Chrome 不會使用閃爍模式。

根據 Apple 的 App Store 規則,iOS 版 Chrome 必須使用 iOS 平台的 API 來擷取及顯示網頁內容。因此,iOS 版 Chrome 會使用 WebKit、Nonic 和 CFNetwork,其他 Chrome 平台則使用 Blink、V8 和 //net。因此,iOS 應用程式可使用有限的 API 與網頁內容互動,而許多使用 //content API 的 Chrome 功能都是透過 JavaScript 插入的方式在 iOS 版 Chrome 中實作。

//components 中的跨平台功能可以盡可能跨所有平台共用程式碼,同時保持 //content 依附元件各自獨立:

ls components/some_component

content/        # code with dependencies on //content.
core/           # cross-platform code with no //content dependencies.
ios/            # iOS implementation using JavaScript injection.

iOS 版 Chrome 和其他平台的其他重要差異包括:

  • iOS 應用程式必須採用單一程序,因此 iOS 版 Chrome 無法fork()
  • iOS 版 Chrome 是以 Objective-C++ 寫成 (結合 C++ 和 Objective-C),並有部分 Swift。
  • 雖然您可以直接在 iOS 裝置上編譯和執行 Chrome 上的 Chrome,但您也可使用 Apple 提供的功能強大裝置的模擬器,完成許多功能開發工作。

在 iOS 裝置上開始使用 Chrome

你需要:

  • 搭載 macOS 11.3 以上版本的 macOS 電腦 64 位元。支援 Apple Silicon。
  • Xcode,也就是 Apple 平台的 IDE,13.0 以上版本。
  • 目前的 JDK 版本。

詳情請參閱建構操作說明

擷取來源的方法與其他平台類似:

mkdir ${HOME}/chromium-ios
cd ${HOME}/chromium-ios
fetch ios

之後,您就可以從指令列 (或 Xcode) 開始建構:

autoninja -C out/Debug-iphonesimulator chrome

進一步瞭解 iOS 版 Chrome 的功能開發

建議您參閱 Chromium 樣式指南。如要進一步瞭解 Swift、xCode 和其他 iOS 專屬資源,請參閱 Apple 開發人員說明文件

如果你通常是 iOS 開發人員,而且還不熟悉 Chromium,請參閱重要抽象層和資料結構說明文件