Saltar al contenido principal

Compilación cruzada para iOS

Esta página sirve como una breve introducción para construir V8 para objetivos iOS.

Requisitos​

  • Una máquina con macOS (OS X) con Xcode instalado.
  • Un dispositivo iOS de 64 bits (los dispositivos iOS de 32 bits no son compatibles).
  • V8 v7.5 o una versión más reciente.
  • jitless es un requisito fundamental para iOS (desde diciembre de 2020). Por lo tanto, por favor, utilice las banderas '--expose_gc --jitless'

Configuración inicial​

Siga las instrucciones para construir V8.

Obtenga herramientas adicionales necesarias para la compilación cruzada de iOS agregando target_os en su archivo de configuración .gclient, ubicado en el directorio padre del directorio fuente de v8:

# [... otros contenidos de .gclient como la variable 'solutions' ...]
target_os = ['ios']

Después de actualizar .gclient, ejecute gclient sync para descargar las herramientas adicionales.

Construcción manual​

Esta sección muestra cómo construir una versión monolítica de V8 para su uso en un dispositivo iOS físico o en el simulador de iOS de Xcode. El resultado de esta compilación es un archivo libv8_monolith.a que contiene todas las bibliotecas de V8 y el snapshot de V8.

Configure los archivos de construcción GN ejecutando gn args out/release-ios e insertando las siguientes claves:

ios_deployment_target = 10
is_component_build = false
is_debug = false
target_cpu = "arm64" # "x64" para una compilación en el simulador.
target_os = "ios"
use_custom_libcxx = false # Usa la libcxx de Xcode.
v8_enable_i18n_support = false # Produce un binario más pequeño.
v8_monolithic = true # Activa el objetivo v8_monolith.
v8_use_external_startup_data = false # El snapshot está incluido en el binario.
v8_enable_pointer_compression = false # No es compatible con iOS.

Ahora construya:

ninja -C out/release-ios v8_monolith

Finalmente, agregue el archivo generado libv8_monolith.a a su proyecto de Xcode como una biblioteca estática. Para más documentación sobre cómo integrar V8 en su aplicación, consulte Primeros pasos para integrar V8.