如何配置Unity 2017.4以定位Android并避免在OSX上构建失败?

Ger*_*man 7 java android unity-game-engine

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

Ger*_*man 14

似乎为了安装Android,当前版本的Unity不仅依赖于在Preferences - > External Tools设置的JDK,而且还依赖/usr/libexec/java_home于Mac上命令返回的全局java home .所以两者都必须指向JDK 8版本(v 9或10不起作用).

因此,如果您不能从系统中删除Java 9/10,则必须确保/usr/libexec/java_home指向JDK 8安装.

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

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

解决方案:为了更好地修复此问题,您可以转到/Library/Java/JavaVirtualMachines,找到等于9或更大的VM(现在是9或10),并在其Contents目录中重命名Info.plistInfo.plist.off或类似.JDK仍然可以在$JAVA_HOME指向它时使用,或者在脚本或配置中显式引用(例如与jenv一起使用).执行此操作后,/usr/libexec/java_home将指向JDK 8 VM,您的构建将成功.

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