小编典典

如何配置Unity 2017.4以Android为目标并避免在OSX上构建失败?

java

在安装具有最新版本的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),除非通过正式安装任何缺少的模块

阅读 205

收藏
2020-11-16

共1个答案

小编典典

看来,为了做到这一点,Android不仅要构建Unity的当前版本,还依赖于在 Preferences- > External Tools
设置 的JDK,而且依赖/usr/libexec/java_home于Mac上命令返回的全局Java主页。因此,两者都必须指向JDK 8版本(v
9或10无效)。

因此,如果不是从系统中删除Java 9/10的选项,则必须确保/usr/libexec/java_home指向JDK 8安装。

不幸的是,此命令不会允许您设置或配置特定的JDK -它返回默认的最高版本,基于排序中提供的信息Info.plist下,Contents在每个虚拟机。

先决条件 :确保已通过Android Studio的SDK管理器下载了构建所需的所有模块

解决方案
:为了优雅地解决此问题,您可以转到/Library/Java/JavaVirtualMachines,找到等于或大于9(现在为9或10)的VM,并在其Contents目录中重命名Info.plistInfo.plist.off或类似名称。$JAVA_HOME指向该JDK时​​仍可以使用该JDK
,或者可以在脚本或配置中明确引用该JDK (例如,与jenv一起使用)。完成后,这/usr/libexec/java_home将指向JDK 8
VM,并且构建将成功。

希望一旦Google确保Android工具能够与Java的最新版本一起使用,并且Unity完全依赖于已配置的SDK,而不是随意使用系统范围/全局Java系统,这将不是问题。

2020-11-16