在安装具有最新版本的Android Studio(3.1)和Unity(2017.4)的新/新系统后,我一直在遇到一些构建失败的麻烦。失败诸如:CommandInvokationFailure:无法列出目标平台。请确保跨多个重复项的android sdk路径正确,因为提供的解决方案是解决方法,并且不能很好地说明根本问题以及如何在Mac上正常解决此问题。
在 Unity- >首选项->外部工具中,我已经正确设置了Android SDK路径,使其指向由Android Studio安装的路径,还已将JDK设置为指向JDK 8版本(我知道现在Android工具无法与Java 9+),但我仍然遇到构建失败。
我正在寻找以下解决方案:
看来,为了做到这一点,Android不仅要构建Unity的当前版本,还依赖于在 Preferences- > External Tools中 设置 的JDK,而且依赖/usr/libexec/java_home于Mac上命令返回的全局Java主页。因此,两者都必须指向JDK 8版本(v 9或10无效)。
/usr/libexec/java_home
因此,如果不是从系统中删除Java 9/10的选项,则必须确保/usr/libexec/java_home指向JDK 8安装。
不幸的是,此命令不会允许您设置或配置特定的JDK -它返回默认的最高版本,基于排序中提供的信息Info.plist下,Contents在每个虚拟机。
Info.plist
Contents
先决条件 :确保已通过Android Studio的SDK管理器下载了构建所需的所有模块
解决方案 :为了优雅地解决此问题,您可以转到/Library/Java/JavaVirtualMachines,找到等于或大于9(现在为9或10)的VM,并在其Contents目录中重命名Info.plist为Info.plist.off或类似名称。$JAVA_HOME指向该JDK时仍可以使用该JDK ,或者可以在脚本或配置中明确引用该JDK (例如,与jenv一起使用)。完成后,这/usr/libexec/java_home将指向JDK 8 VM,并且构建将成功。
/Library/Java/JavaVirtualMachines
Info.plist.off
$JAVA_HOME
希望一旦Google确保Android工具能够与Java的最新版本一起使用,并且Unity完全依赖于已配置的SDK,而不是随意使用系统范围/全局Java系统,这将不是问题。