Zum Hauptinhalt springen

Cross-Compiling für iOS

Diese Seite dient als kurze Einführung in den Aufbau von V8 für iOS-Ziele.

Anforderungen

  • Ein macOS (OS X) Host-Rechner mit installiertem Xcode.
  • Ein 64-Bit-Ziel-iOS-Gerät (ältere 32-Bit-iOS-Geräte werden nicht unterstützt).
  • V8 v7.5 oder neuer.
  • jitless ist eine strenge Anforderung für iOS (Stand Dezember 2020). Bitte verwenden Sie daher die Flags '--expose_gc --jitless'

Ersteinrichtung

Befolgen Sie die Anweisungen zum Erstellen von V8.

Holen Sie zusätzliche Tools für die iOS-Cross-Kompilierung, indem Sie target_os in Ihrer .gclient-Konfigurationsdatei hinzufügen, die sich im übergeordneten Verzeichnis des v8-Quellverzeichnisses befindet:

# [... andere Inhalte von .gclient, wie die Variable 'solutions' ...]
target_os = ['ios']

Nach der Aktualisierung von .gclient führen Sie gclient sync aus, um die zusätzlichen Tools herunterzuladen.

Manueller Aufbau

Dieser Abschnitt zeigt, wie eine monolithische V8-Version für die Verwendung auf einem physischen iOS-Gerät oder dem Xcode-iOS-Simulator erstellt wird. Das Ergebnis des Aufbaus ist eine Datei libv8_monolith.a, die alle V8-Bibliotheken sowie den V8-Snapshot enthält.

Richten Sie die GN-Build-Dateien ein, indem Sie gn args out/release-ios ausführen und die folgenden Schlüssel einfügen:

ios_deployment_target = 10
is_component_build = false
is_debug = false
target_cpu = "arm64" # "x64" für einen Simulator-Build.
target_os = "ios"
use_custom_libcxx = false # Verwenden Sie Xcode's libcxx.
v8_enable_i18n_support = false # Produziert eine kleinere Binärdatei.
v8_monolithic = true # Aktivieren Sie das v8_monolith-Ziel.
v8_use_external_startup_data = false # Der Snapshot ist in der Binärdatei enthalten.
v8_enable_pointer_compression = false # Nicht auf iOS unterstützt.

Baue jetzt:

ninja -C out/release-ios v8_monolith

Fügen Sie schließlich die generierte Datei libv8_monolith.a als statische Bibliothek zu Ihrem Xcode-Projekt hinzu. Weitere Dokumentation zur Einbettung von V8 in Ihre Anwendung finden Sie unter Erste Schritte mit der Einbettung von V8.