Создание J2ObjC

Требования

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

Настройка Mac

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

Создайте форк проекта J2ObjC

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

Вилка

Выберите имя своей учетной записи 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. Обычно это каталог Homebrew по умолчанию /usr/local . Добавьте в файл .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» и «simulator») не собираются по умолчанию. Вы можете собрать 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 выполняется успешно, но стандартные этапы сборки не выполняются, проверьте, не заданы ли неправильно какие-либо локальные переменные окружения.