Pular para o conteúdo principal

Cross-compilação para iOS

Esta página serve como uma breve introdução à construção do V8 para alvos iOS.

Requisitos​

  • Um computador host macOS (OS X) com Xcode instalado.
  • Um dispositivo iOS alvo de 64 bits (dispositivos iOS legados de 32 bits não são suportados).
  • V8 v7.5 ou mais recente.
  • jitless é um requisito rígido para iOS (a partir de Dez. 2020). Portanto, use as flags '--expose_gc --jitless'

Configuração inicial​

Siga as instruções para compilar o V8.

Busque ferramentas adicionais necessárias para cross-compilação para iOS adicionando target_os no seu arquivo de configuração .gclient, localizado no diretório pai do diretório de origem do v8:

# [... outros conteúdos de .gclient como a variável 'solutions' ...]
target_os = ['ios']

Após atualizar o .gclient, execute gclient sync para baixar as ferramentas adicionais.

Compilação manual​

Esta seção mostra como compilar uma versão monolítica do V8 para uso em um dispositivo físico iOS ou no simulador iOS do Xcode. O resultado dessa compilação é um arquivo libv8_monolith.a que contém todas as bibliotecas do V8, bem como o snapshot do V8.

Configure os arquivos de compilação GN executando gn args out/release-ios e inserindo as seguintes chaves:

ios_deployment_target = 10
is_component_build = false
is_debug = false
target_cpu = "arm64" # "x64" para uma compilação de simulador.
target_os = "ios"
use_custom_libcxx = false # Use a libcxx do Xcode.
v8_enable_i18n_support = false # Produz um binário menor.
v8_monolithic = true # Ativa o alvo v8_monolith.
v8_use_external_startup_data = false # O snapshot está incluído no binário.
v8_enable_pointer_compression = false # Não é suportado no iOS.

Agora compile:

ninja -C out/release-ios v8_monolith

Por fim, adicione o arquivo libv8_monolith.a gerado ao seu projeto Xcode como uma biblioteca estática. Para mais documentação sobre como integrar o V8 em sua aplicação, veja Introdução à integração do V8.