Кросс-компиляция для iOS
Эта страница служит кратким введением в процесс сборки V8 для целевых устройств iOS.
Требования
- Компьютер на базе macOS (OS X) с установленным Xcode.
- Целевое iOS-устройство с 64-битной архитектурой (устаревшие 32-битные устройства iOS не поддерживаются).
- Версия V8 7.5 или новее.
- jitless является строгим требованием для iOS (по состоянию на декабрь 2020 года). Поэтому используйте флаги '--expose_gc --jitless'
Первоначальная настройка
Следуйте инструкциям по сборке V8.
Получите дополнительные инструменты, необходимые для кросс-компиляции под iOS, добавив target_os
в ваш файл конфигурации .gclient
, который находится в родительской директории исходного каталога v8
:
# [... другие содержимое .gclient, такие как переменная 'solutions' ...]
target_os = ['ios']
После обновления .gclient
, выполните команду gclient sync
, чтобы загрузить дополнительные инструменты.
Ручная сборка
Этот раздел демонстрирует, как собрать монолитную версию V8 для использования либо на физическом устройстве iOS, либо в симуляторе Xcode для iOS. Результат этой сборки — это файл libv8_monolith.a
, который содержит все библиотеки V8, а также снимок V8.
Настройте файлы сборки GN, выполнив команду gn args out/release-ios
и вставив следующие ключи:
ios_deployment_target = 10
is_component_build = false
is_debug = false
target_cpu = "arm64" # "x64" для сборки симулятора.
target_os = "ios"
use_custom_libcxx = false # Использование libcxx из Xcode.
v8_enable_i18n_support = false # Создает меньший бинарный файл.
v8_monolithic = true # Включение целевого объекта v8_monolith.
v8_use_external_startup_data = false # Снимок включен в бинарный файл.
v8_enable_pointer_compression = false # Не поддерживается на iOS.
Теперь выполните сборку:
ninja -C out/release-ios v8_monolith
Наконец, добавьте созданный файл libv8_monolith.a
в ваш проект Xcode как статическую библиотеку. Для получения дополнительной документации о внедрении V8 в ваше приложение ознакомьтесь с Началом работы с внедрением V8.