Tworzenie J2ObjC

Wymagania

  • System Apple Mac OS X
  • Najnowsza wersja Xcode
  • Zainstalowano JDK 21
  • Apache Maven
  • (Zalecane, ale nie wymagane) Źródło bufora protokołu Google

Konfiguracja Maca

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

Utwórz fork projektu J2ObjC

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

Rozdziel

Wybierz nazwę konta GitHub, a fork zostanie utworzony w ciągu kilku sekund.

Następnie sklonuj kopię rozwidlenia do systemu lokalnego, aby rozpocząć programowanie. Najpierw kliknij [Clone or download button] (Sklonuj lub pobierz), a potem przycisk Copy to Clipboard (Skopiuj do schowka):

Klonuj

Następnie sklonuj go do katalogu lokalnego:

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

Instalowanie bibliotek protobuf i abseil

Aby skompilować J2ObjC, musisz najpierw zainstalować protobuf C++.

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

brew install protobuf

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

brew install abseil

Musisz ustawić PROTOBUF_ROOT_DIR na katalog główny, w którym zainstalowano protokół buforów. Zwykle jest to domyślna wartość 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 polecenie $PROTOBUF_ROOT_DIR/bin/protoc --version.

Kompilowanie J2ObjC

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

# 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ć połączenie z wiersza poleceń w oknie terminala, uruchom to polecenie:

# 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ą flagi -j<n>, gdzie n to maksymalna liczba równoczesnych zadań. Maksymalna wartość zależy od szybkości działania systemu. Zalecamy rozpoczęcie od -j4. Zwiększ tę liczbę, aby skrócić czas kompilacji, jeśli Twój system to umożliwia. Zmniejsz ją, jeśli kompilacja kończy się niepowodzeniem z powodu błędów systemowych.

Kompilowanie 32-bitowych architektur iOS

Architektury 32-bitowe iOS („iphone” i „simulator”) nie są domyślnie kompilowane. Aby skompilować j2objc za pomocą tych architektur, najpierw określ je w zmiennej środowiskowej J2OBJC_ARCHS:

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

Określenie podzbioru obsługiwanych architektur może zwykle przyspieszyć lokalne kompilacje, ponieważ wystarczy podać tylko te architektury, których potrzebuje aplikacja. Aby na przykład utworzyć tylko 64-bitową wersję iOS („iphone64”) i powiązany z nią symulator („simulator64”), przed uruchomieniem polecenia make zdefiniuj J2OBJC_ARCHS="iphone64 simulator64".

Tworzenie pełnej dystrybucji

Chociaż zespół j2objc nie publikuje już na GitHubie gotowych dystrybucji ze względu na ograniczenia rozmiaru plików, nadal można używać skryptu „build everything in one step” (skompiluj wszystko w jednym kroku):

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

Skrypt działa długo, ponieważ kompiluje każdą architekturę dla każdego pakietu j2objc. Jest to jednak bardzo przydatne w przypadku ogólnych błędów kompilacji, ponieważ kompilacja jest przeprowadzana tylko z minimalnym zestawem zmiennych środowiskowych. Jeśli skrypt build_distribution działa prawidłowo, ale normalne kroki kompilacji nie, sprawdź, czy zmienne środowiskowe lokalne są prawidłowo ustawione.