Как настроить 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+) но все равно получаю сбои сборки.
Я ищу решение, которое:
- позволяет мне сохранить несколько версий Java (я использую JENV)
- не связывается с символическими ссылками в моей настройке Java
- позволяет мне использовать мою установку 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.