J2ObjC erstellen

Voraussetzungen

  • Apple Mac OS X-System
  • Aktuelle Version von Xcode
  • JDK 11 installiert
  • Apache Maven
  • Google Protocol Buffer-Quelle (empfohlen, aber nicht erforderlich)

Mac-Einrichtung

  • Führen Sie den folgenden Befehl aus, um die Xcode-Befehlszeilentools zu installieren:
sudo xcode-select --install
  • Zum .bash_profile hinzufügen:
export JAVA_HOME=`/usr/libexec/java_home -v 11`
  • Wenn Maven nicht installiert ist (mvn -version in einem Terminal ausprobieren), verwenden Sie Homebrew:
brew install maven

Fork des J2ObjC-Projekts erstellen

Wenn Sie ein Fork des J2ObjC-Projekts erstellen möchten, öffnen Sie die Hauptseite und klicken Sie auf die Schaltfläche „Fork“:

Fork

Wählen Sie den Namen Ihres GitHub-Kontos aus. Die Fork wird dann in wenigen Sekunden erstellt.

Klonen Sie als Nächstes eine Kopie Ihrer Fork auf Ihr lokales System für die Entwicklung. Klicken Sie zuerst auf die Schaltfläche [Clone or download] (Klonen oder herunterladen) und dann auf die Schaltfläche [Copy to Clipboard] (In die Zwischenablage kopieren):

Klonen

Klonen Sie es dann in ein lokales Verzeichnis:

git clone (Command-V)  # Paste the copied URL

Protobuf und Abseil installieren

Sie benötigen protobuf C++, bevor Sie J2ObjC erstellen können.

Verwenden Sie Homebrew, um das protobuf-Binärpaket zu installieren:

brew install protobuf

Der Protobuf-C++-Build hängt jetzt von der Abseil-Bibliothek ab. Installieren Sie diese also auch:

brew install abseil

Sie müssen PROTOBUF_ROOT_DIR auf das Stammverzeichnis festlegen, in dem protobuf installiert ist. Normalerweise ist das die Homebrew-Standardeinstellung /usr/local. Fügen Sie .bash_profile Folgendes hinzu:

export PROTOBUF_ROOT_DIR=/usr/local # or your custom Homebrew dir

Führen Sie $PROTOBUF_ROOT_DIR/bin/protoc --version aus, um dies zu überprüfen.

J2ObjC erstellen

Wenn Sie einen Build über eine Befehlszeile in einem Terminalfenster ausführen möchten, führen Sie Folgendes aus:

# Build just the translator and libraries
make dist

# Build the protocol buffer compiler and runtime for J2ObjC
make protobuf_dist

# Build everything that is included in the project's
distribution bundles
make all_dist

J2ObjC testen

Führen Sie zum Testen über eine Befehlszeile in einem Terminalfenster Folgendes aus:

# Run translator and library unit tests
make test

# Run all unit tests, including for protocol buffers
make test_all

Build bereinigen

# Remove all files generated by the build
make clean

Parallele Builds

Der J2ObjC-Build unterstützt parallele Builds, die mit dem Flag -j<n> angegeben werden. Dabei ist n die maximale Anzahl gleichzeitiger Aufgaben. Der maximale Wert hängt davon ab, wie schnell Ihr System ist. Wir empfehlen, mit -j4 zu beginnen. Erhöhen Sie die Anzahl, um die Buildzeit zu verkürzen, wenn Ihr System dies verarbeiten kann, und verringern Sie sie, wenn „make“ mit Systemfehlern fehlschlägt.

32-Bit-iOS-Architekturen erstellen

Die 32-Bit-iOS-Architekturen („iphone“ und „simulator“) werden standardmäßig nicht erstellt. Sie können j2objc damit kompilieren, indem Sie sie zuerst in der Umgebungsvariablen J2OBJC_ARCHS angeben:

$ export J2OBJC_ARCHS="iphone simulator"
$ make -j8 all_dist

Wenn Sie nur die Architekturen angeben, die für Ihre App erforderlich sind, können Sie lokale Builds in der Regel beschleunigen. Wenn Sie nur die 64-Bit-iOS-Version („iphone64“) und den zugehörigen Simulator („simulator64“) erstellen möchten, definieren Sie J2OBJC_ARCHS="iphone64 simulator64" beispielsweise vor dem Ausführen von „make“.

Vollständige Verteilung erstellen

Das j2objc-Team veröffentlicht aufgrund der Dateigrößenbeschränkungen keine vorkompilierten Distributionen mehr auf GitHub. Das Script „alles in einem Schritt kompilieren“ kann jedoch weiterhin verwendet werden:

$ scripts/build_distribution.sh HEAD-<current-date> $PROTOBUF_ROOT_DIR

Die Ausführung dieses Scripts dauert lange, da für jede Architektur jedes j2objc-Pakets ein Build erstellt wird. Sie ist jedoch sehr nützlich, wenn es allgemeine Buildfehler gibt, da nur die minimale Anzahl von Umgebungsvariablen verwendet wird. Wenn das Script „build_distribution“ erfolgreich ist, die normalen Buildschritte aber nicht, prüfen Sie, ob lokale Umgebungsvariablen falsch festgelegt sind.