Требования
- Система 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 выполняется успешно, но стандартные этапы сборки не выполняются, проверьте, не заданы ли неправильно какие-либо локальные переменные окружения.