Chromium Chronicle #28:iOS 版 Chrome 使用入门

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

2022 年,iOS 版 Chrome 将迎来 10 周年。 Chrome 是最常用的 iOS 应用之一,目前在美国 App Store 中排名第二。

iOS 版 Chrome 具备用户喜爱的所有 Chrome 强大功能,包括同步、翻译、无痕模式、密码管理工具、自动填充等等。 iOS 版 Chrome 还集成了原生 iOS 功能,例如多窗口和设备级密码自动填充。

不过,有一个主要因素使得 iOS 版 Chrome 与所有其他 Chrome 平台实现方式截然不同。

iOS 版 Chrome 不使用 Blink。

根据 Apple 的 App Store 规则,iOS 版 Chrome 必须使用 iOS 平台 API 来提取和呈现 Web 内容。因此,iOS 版 Chrome 使用 WebKit、Nitro 和 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 与其他平台上的 Chrome 之间的其他重要区别包括:

  • iOS 应用必须为单进程应用,因此 iOS 版 Chrome 无法 fork()
  • iOS 版 Chrome 是用 Objective-C++(混合使用 C++ 和 Objective-C)以及一些 Swift 编写的。
  • 您可以在 iOS 设备上直接编译和运行 iOS 版 Chrome,还可以在 Apple 提供的功能相当强大的设备模拟器中进行许多功能开发。

iOS 版 Chrome 使用入门

您需要有:

  • 一台运行 macOS 11.3 或更高版本的 64 位 macOS 计算机。支持 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 样式指南。请参阅 Apple 的开发者文档,详细了解 Swift、xCode 和其他特定于 iOS 的资源。

如果您通常是 iOS 开发者且刚开始接触 Chromium,请参阅有关重要抽象和数据结构的文档