当前位置: 首页 > 面试题库 >

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

严天逸
2023-03-14
问题内容

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

问题答案:

看来,为了做到这一点,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系统,这将不是问题。



 类似资料:
  • [maventest]$/system/library/java/javavirtualmachines/1.6.0.jdk/contents/home/bin/java-xmx512m-xx:maxpermsize=128m-dfile.encoding=utf-8-cp/users/shared/jenkins/home/plugins/maven-plugin/web-inf/lib/mav

  • 我正在尝试创建一个.so库,包含OpenCV C++代码。我设置了一些非常基本的东西--使用visual studio构建项目,使用“动态共享库(Android)”模板。 我从以下网址下载了Android OpenCV SDK:https://OpenCV.org/releases/ E0035#错误指令:此构造函数尚未移植到此平台文件:C:\microsoft\androidndk64\andr

  • 在模块化的Spring配置应用程序中,我们使用工厂bean跨模块边界提供bean实例。 例如,一个模块A可以通过名称name公开一个bean实例。然后,另一个模块B可以通过样式声明来使用该bean 请注意,模块具有分离的类加载器层次结构,并且A/name的实际实现类在B中可能不可见。就像在OSGI中一样(尽管这不是OSGi)。 我的目标是在 B 的编程应用程序上下文中提供 A/name。但是在尝试

  • 问题内容: 从一段时间开始,我就在开发Spring-MVC应用程序。最近,我遇到了@Scheduled方法的一些问题,并且我注意到整个配置被加载了4次。因此,@ Scheduled方法被调用了4次。 这3种不正确的配置会因NullPointerException(我在SO上被告知)而消失,并且其中一种幸存。我非常想知道如何正确配置项目,因此只加载了一种配置,而不是4种,并在此过程中了解了Sprin

  • 我的Dockerfile有点像 每次构建新映像时,都必须重新安装依赖项,这在我的区域可能会非常慢。 我想到的一种缓存已安装的软件包的方法是用以下更新的图像覆盖我的基本图像: 所以下次我用这个Dockerfile构建时,我的/base已经安装了一些包。 但这种解决方案有两个问题: 并不总是可以覆盖基本映像 随着新图像的分层,基本图像变得越来越大 那么,我可以用什么更好的解决方案来解决这个问题呢? 关