第 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,请参阅有关重要抽象和数据结构的文档。