Создание J2ObjC

Требования

  • Система Apple Mac OS X
  • Последняя версия Xcode
  • JDK JDK 11 установлен
  • Апач Мавен
  • (Рекомендуется, но не обязательно) Источник буфера протокола Google

Настройка Mac

  • Установите инструменты командной строки Xcode, выполнив:
sudo xcode-select --install
  • Добавьте в свой .bash_profile :
export JAVA_HOME=`/usr/libexec/java_home -v 11`
  • Если Maven не установлен (попробуйте mvn -version в терминале), используйте Homebrew:
brew install maven

Создайте вилку проекта J2ObjC.

Чтобы создать форк проекта J2ObjC, откройте его главную страницу и нажмите кнопку «Разветвить»:

Вилка

Выберите имя своей учетной записи GitHub, и форк будет создан через несколько секунд.

Затем клонируйте копию своего форка в локальную систему для разработки. Сначала нажмите кнопку [Клонировать или загрузить], затем нажмите кнопку «Копировать в буфер обмена»:

Клонировать

Затем клонируйте в локальный каталог:

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

Установите protobuf и спуститесь на спуск

Прежде чем вы сможете собрать J2ObjC, вам необходимо установить protobuf C++.

Чтобы установить двоичный пакет protobuf, используйте Homebrew:

brew install protobuf

Сборка Protobuf C++ теперь зависит от библиотеки Abseil, поэтому установите и ее:

brew install abseil

Вам необходимо установить PROTOBUF_ROOT_DIR в корень, где установлен protobuf. Обычно это /usr/local по умолчанию для Homebrew. Добавьте следующее в свой .bash_profile :

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

Чтобы проверить, запустите $PROTOBUF_ROOT_DIR/bin/protoc --version .

Здание J2ObjC

Чтобы выполнить сборку из командной строки в окне терминала, запустите:

# 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

Чтобы протестировать из командной строки в окне терминала, запустите:

# Run translator and library unit tests
make test

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

Очистка сборки

# Remove all files generated by the build
make clean

Параллельные сборки

Сборка J2ObjC поддерживает параллельные сборки, которые указываются с помощью флага -j<n> , где n — максимальное количество одновременных задач. Максимум зависит от скорости вашей системы; мы предлагаем начать с -j4 . Увеличьте это число, чтобы сократить время сборки, если ваша система может справиться с этим, и уменьшите его, если make завершится сбоем из-за системных ошибок.

Создание 32-битной архитектуры iOS

32-битные архитектуры iOS («iphone» и «симулятор») не создаются по умолчанию. Вы можете собрать j2objc с их помощью, сначала указав их в переменной среды J2OBJC_ARCHS:

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

Указание подмножества поддерживаемых архитектур обычно можно использовать для ускорения локальных сборок, указав только те архитектуры, которые нужны вашему приложению. Например, чтобы собрать только 64-разрядную версию iOS («iphone64») и связанный с ней симулятор («simulator64»), определите J2OBJC_ARCHS="iphone64 simulator64" перед запуском make.

Сборка полного дистрибутива

Хотя команда j2objc больше не публикует готовые дистрибутивы на GitHub из-за ограничений размера файла, сценарий «собрать все за один шаг» все равно можно использовать:

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

Выполнение этого сценария занимает много времени, поскольку создается каждая архитектура для каждого пакета j2objc. Однако это очень полезно в случае общих сбоев сборки, поскольку она строится только с минимальным набором переменных среды. Если сценарий build_distribution завершается успешно, а обычные этапы сборки — нет, проверьте, установлены ли какие-либо локальные переменные среды неправильно.