为 iOS 交叉编译
此页面简要介绍了为 iOS 目标构建 V8 的方法。
要求 #
- 安装了 Xcode 的 macOS (OS X) 主机。
- 64 位目标 iOS 设备(不支持旧版 32 位 iOS 设备)。
- V8 v7.5 或更高版本。
- jitless 是 iOS 的硬性要求(截至 2020 年 12 月)。因此,请使用标志“--expose_gc --jitless”
初始设置 #
遵循 构建 V8 的说明。
通过在 v8
源目录的父目录中找到的 .gclient
配置文件中添加 target_os
,获取 iOS 交叉编译所需的额外工具。
# [... other contents of .gclient such as the 'solutions' variable ...]
target_os = ['ios']
更新 .gclient
后,运行 gclient sync
下载额外的工具。
手动构建 #
本节介绍如何构建一个单片 V8 版本,用于物理 iOS 设备或 Xcode iOS 模拟器。此构建的输出是一个 libv8_monolith.a
文件,其中包含所有 V8 库以及 V8 快照。
通过运行 gn args out/release-ios
并插入以下键来设置 GN 构建文件
ios_deployment_target = 10
is_component_build = false
is_debug = false
target_cpu = "arm64" # "x64" for a simulator build.
target_os = "ios"
use_custom_libcxx = false # Use Xcode's libcxx.
v8_enable_i18n_support = false # Produces a smaller binary.
v8_monolithic = true # Enable the v8_monolith target.
v8_use_external_startup_data = false # The snaphot is included in the binary.
v8_enable_pointer_compression = false # Unsupported on iOS.
现在构建
ninja -C out/release-ios v8_monolith
最后,将生成的 libv8_monolith.a
文件作为静态库添加到您的 Xcode 项目中。有关在应用程序中嵌入 V8 的更多文档,请参阅 V8 嵌入入门。