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 来提取和呈现网页内容。因此,iOS 版 Chrome 使用的是 WebKit、Nito 和 CFNetwork,而其他 Chrome 平台使用的是 Blink、V8 和 //net。由于这个原因,以及可供 iOS 应用与网页内容交互的 API 有限,许多使用 //content API 的 Chrome 功能都是在 iOS 版 Chrome 中通过 JavaScript 注入实现的。

//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(iOS 版),但您也可以通过 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

详细了解 Chrome(iOS 版)功能开发

建议您参阅 Chromium 样式指南。如需详细了解 Swift、xCode 和其他 iOS 专用资源,请参阅 Apple 的开发者文档

如果您通常是 iOS 开发者和 Chromium 新手,请参阅关于重要抽象和数据结构的文档