Voraussetzungen
- Apple Mac OS X-System
- Die aktuelle Version von Xcode
- JDK 17 installiert
- Apache Maven
- (Empfohlen, aber nicht erforderlich) Google Protocol Buffer-Quelle
Mac-Einrichtung
- Installieren Sie die Xcode-Befehlszeilentools mit dem folgenden Befehl:
sudo xcode-select --install
- Zum
.bash_profile
hinzufügen:
export JAVA_HOME=`/usr/libexec/java_home -v 17`
- Wenn Maven nicht installiert ist (versuchen Sie es mit
mvn -version
in einem Terminal), verwenden Sie Homebrew:
brew install maven
Fork des J2ObjC-Projekts erstellen
So forken Sie das J2ObjC-Projekt: Öffnen Sie die Hauptseite und klicken Sie auf die Schaltfläche „Fork“:
Wählen Sie den Namen Ihres GitHub-Kontos aus. Die Fork wird in wenigen Sekunden erstellt.
Klonen Sie als Nächstes eine Kopie Ihrer Verzweigung auf Ihr lokales System, um sie zu entwickeln. Klicken Sie zuerst auf die Schaltfläche [Clone or download] (Klonen oder herunterladen) und dann auf die Schaltfläche „In die Zwischenablage kopieren“:
Klonen Sie das Repository dann in ein lokales Verzeichnis:
git clone (Command-V) # Paste the copied URL
protobuf und abseil installieren
Sie müssen protobuf C++ installiert haben, bevor Sie J2ObjC erstellen können.
So installieren Sie das binäre Protobuf-Paket mit Homebrew:
brew install protobuf
Für den Protobuf C++-Build ist jetzt die Abseil-Bibliothek erforderlich. Installieren Sie sie also auch:
brew install abseil
Sie müssen PROTOBUF_ROOT_DIR
auf das Stammverzeichnis festlegen, in dem protobuf installiert ist.
Normalerweise ist das der Homebrew-Standard /usr/local
. Fügen Sie Folgendes zu .bash_profile
hinzu:
export PROTOBUF_ROOT_DIR=/usr/local # or your custom Homebrew dir
Führen Sie zur Überprüfung $PROTOBUF_ROOT_DIR/bin/protoc --version
aus.
J2ObjC erstellen
Wenn Sie einen Build über die Befehlszeile in einem Terminalfenster erstellen 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 Folgendes aus, um über die Befehlszeile in einem Terminalfenster zu testen:
# 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 Maximalwert hängt von der Geschwindigkeit Ihres Systems ab. Wir empfehlen, mit -j4
zu beginnen.
Erhöhen Sie die Zahl, um die Build-Zeiten zu verkürzen, wenn Ihr System dies zulässt. Verringern Sie sie, wenn „make“ mit Systemfehlern fehlschlägt.
32-Bit-iOS-Architekturen erstellen
Die 32-Bit-iOS-Architekturen („iphone“ und „simulator“) werden nicht standardmäßig erstellt. Sie können j2objc damit erstellen, indem Sie sie zuerst in der Umgebungsvariable J2OBJC_ARCHS angeben:
$ export J2OBJC_ARCHS="iphone simulator"
$ make -j8 all_dist
Wenn Sie eine Teilmenge der unterstützten Architekturen angeben, können Sie lokale Builds in der Regel beschleunigen, indem Sie nur die Architekturen angeben, die Ihre App benötigt.
Wenn Sie beispielsweise nur die 64-Bit-iOS-Version („iphone64“) und den zugehörigen Simulator („simulator64“) erstellen möchten, definieren Sie J2OBJC_ARCHS="iphone64 simulator64"
, bevor Sie „make“ ausführen.
Vollständige Bereitstellung erstellen
Obwohl das j2objc-Team aufgrund der Dateigrößenbeschränkungen keine vorgefertigten Distributionen mehr auf GitHub veröffentlicht, kann das Skript „build everything in one step“ (alles in einem Schritt erstellen) weiterhin verwendet werden:
$ scripts/build_distribution.sh HEAD-<current-date> $PROTOBUF_ROOT_DIR
Die Ausführung dieses Skripts dauert lange, da jede Architektur für jedes j2objc-Paket erstellt wird. Sie ist jedoch sehr nützlich, wenn es allgemeine Build-Fehler gibt, da sie nur mit der Mindestanzahl an Umgebungsvariablen erstellt wird. Wenn das build_distribution-Skript erfolgreich ausgeführt wird, die normalen Build-Schritte jedoch nicht, prüfen Sie, ob lokale Umgebungsvariablen falsch festgelegt sind.