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“:
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 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.