Как настроить Unity 2017.4 для работы с Android и избежать сбоев сборки на OSX?

Я боролся с несколькими сбоями сборки после установки новой / новой системы с последней версией Android Studio (3.1) и Unity (2017.4). Сбои, такие как: CommandInvokationFailure: невозможно перечислить целевые платформы. Пожалуйста, убедитесь, что путь android sdk указан правильно и охватывает несколько дубликатов, так как предлагаемые решения являются обходными путями и не дают хорошего объяснения корневой проблемы и того, как изящно решить ее на Mac.

В Unity -> Настройки -> Внешние инструменты я правильно установил путь Android SDK, чтобы он указывал на тот, который установлен Android Studio, а также JDK, чтобы он указывал на версию JDK 8 (я знаю, что сейчас инструменты Android не работают с Java 9+) но все равно получаю сбои сборки.

Я ищу решение, которое:

  1. позволяет мне сохранить несколько версий Java (я использую JENV)
  2. не связывается с символическими ссылками в моей настройке Java
  3. позволяет мне использовать мою установку Android SDK (я использую установку в Android Studio) и не требует от меня возиться с ней (например, понижение версии Android Tools), за исключением официальной установки любого отсутствующего модуля

1 ответ

Решение

Похоже, что для сборки Android текущая версия Unity опирается не только на JDK, установленный в " Предпочтения" -> "Внешние инструменты", но и на глобальную домашнюю страницу Java, возвращаемую командой. /usr/libexec/java_home на Mac. Поэтому оба должны указывать на версию JDK 8 (версии 9 или 10 не будут работать).

Поэтому, если вы не можете удалить Java 9/10 из системы, вам необходимо убедиться, что /usr/libexec/java_home указывает на установку JDK 8.

К сожалению, эта команда не позволяет вам устанавливать или настраивать конкретный JDK - она ​​возвращает самую высокую версию по умолчанию на основе сортировки информации, предоставленной в Info.plist под Contents в каждой ВМ.

Предварительное условие: убедитесь, что вы загрузили все необходимые модули для вашей сборки через менеджер SDK Android Studio

Решение: чтобы исправить это, вы можете перейти на /Library/Java/JavaVirtualMachinesнайдите виртуальные машины, равные 9 или больше (сейчас или 9 или 10) и в их Contents переименование каталога Info.plist в Info.plist.off или похожие. Этот JDK все еще может быть использован, когда $JAVA_HOME указывает на это или явно указывается в скрипте или конфигурации (например, используется с jenv). После того, как вы это сделаете /usr/libexec/java_home будет указывать на виртуальную машину JDK 8, и ваша сборка будет успешной.

Надеемся, что это не будет проблемой, когда Google убедится, что инструменты Android работают с последними версиями Java, и когда Unity полностью полагается на сконфигурированный SDK, вместо того чтобы произвольно использовать общесистемную / глобальную систему Java.

Другие вопросы по тегам