Tworzenie J2ObjC

Wymagania

  • System Apple Mac OS X
  • Najnowsza wersja Xcode
  • Zainstalowana wersja JDK 11
  • Apache Maven
  • (zalecane, ale nie wymagane) Źródło Google Protocol Buffer

Konfiguracja na Macu

  • Zainstaluj narzędzia wiersza poleceń Xcode, wykonując te czynności:
sudo xcode-select --install
  • Dodaj do .bash_profile:
export JAVA_HOME=`/usr/libexec/java_home -v 11`
  • Jeśli Maven nie jest zainstalowany (spróbuj użyć mvn -version w terminalu), użyj Homebrew:
brew install maven

Tworzenie gałęzi projektu J2ObjC

Aby utworzyć fork projektu J2ObjC, otwórz jego stronę główną i kliknij przycisk Fork:

Fork

Wybierz nazwę swojego konta GitHub, a w kilka sekund utworzona zostanie kopia.

Następnie sklonuj kopię swojego forkowania do systemu lokalnego na potrzeby programowania. Najpierw kliknij [Clone or download button] (Klonuj lub pobierz), a potem kliknij przycisk Skopiuj do schowka:

Klonuj

Następnie sklonuj do katalogu lokalnego:

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

Instalowanie protobuf i abseil

Zanim skompilujesz J2ObjC, musisz zainstalować protobuf C++.

Aby zainstalować pakiet binarny protobuf, użyj Homebrew:

brew install protobuf

Kompilacja Protobuf C++ zależy teraz od biblioteki Abseil, dlatego zainstaluj ją również:

brew install abseil

Musisz ustawić wartość PROTOBUF_ROOT_DIR na katalog główny, w którym zainstalowano protobuf. Zwykle jest to domyślne ustawienie Homebrew /usr/local. Dodaj do pliku .bash_profile te informacje:

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

Aby to sprawdzić, uruchom $PROTOBUF_ROOT_DIR/bin/protoc --version.

Tworzenie J2ObjC

Aby skompilować z wiersza poleceń w oknie terminala, uruchom:

# 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

Testowanie J2ObjC

Aby przetestować wiersz poleceń w oknie terminala, uruchom:

# Run translator and library unit tests
make test

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

Czyszczenie kompilacji

# Remove all files generated by the build
make clean

Kompilacje równoległe

Kompilacja J2ObjC obsługuje kompilacje równoległe, które są określane za pomocą parametru -j<n>, gdzie n to maksymalna liczba równoczesnych zadań. Maksymalna wartość zależy od szybkości systemu. Zalecamy rozpoczęcie od -j4. Zwiększ tę liczbę, aby skrócić czas kompilacji, jeśli Twój system może ją obsłużyć, i zmniejszy ją, jeśli kompilacja zakończy się niepowodzeniem z powodu błędów systemowych.

Tworzenie 32-bitowych architektur iOS

32-bitowe architektury iOS („iPhone” i „symulator”) nie są domyślnie kompilowane. Aby skompilować j2objc, musisz najpierw określić te architektury w zmiennej środowiskowej J2OBJC_ARCHS:

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

Określanie podzbioru obsługiwanych architektur może przyspieszyć kompilację lokalną, ponieważ pozwala wskazać tylko architektury, których potrzebuje aplikacja. Aby skompilować tylko 64-bitową wersję iOS („iphone64”) i powiązany z nią symulator („simulator64”), przed uruchomieniem make zdefiniuj J2OBJC_ARCHS="iphone64 simulator64".

Tworzenie pełnej dystrybucji

Chociaż zespół j2objc nie publikuje już gotowych dystrybucji na GitHubie ze względu na ograniczenia rozmiaru pliku, nadal można używać skryptu „build everything in one step”:

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

Uruchomienie tego skryptu trwa długo, ponieważ jest kompilowana każda architektura każdego pakietu j2objc. Jest ona jednak bardzo przydatna, gdy występują ogólne błędy kompilacji, ponieważ kompilacja jest tworzona z minimalnym zestawem zmiennych środowiskowych. Jeśli skrypt build_distribution zakończy się powodzeniem, ale normalne kroki kompilacji nie, sprawdź, czy zmienne środowiska lokalnego nie są ustawione nieprawidłowo.