Ale*_*ssa 4 android-studio unreal-engine4 virtual-reality
当我尝试从 Unreal Engine 4.7 启动 Vr 项目到 Oculus Quest 2 时,出现以下错误:
The following annotation processors are not incremental: lifecycle-compiler-2.0.0.jar (androidx.lifecycle:lifecycle-compiler:2.0.0).
LogPlayLevel: Make sure all annotation processors are incremental to improve your build speed.
LogPlayLevel: Error: Z:\app\src\main\java\com\epicgames\ue4\GameActivity.java:556: error: variable PackagedForOculusMobile is already defined in class GameActivity
LogPlayLevel: public boolean PackagedForOculusMobile = false;
LogPlayLevel: ^
LogPlayLevel: Error: Z:\app\src\main\java\com\epicgames\ue4\GameActivity.java:559: error: method AndroidThunkJava_IsOculusMobileApplication() is already defined in class GameActivity
LogPlayLevel: public boolean AndroidThunkJava_IsOculusMobileApplication()
LogPlayLevel: ^
LogPlayLevel: Error: Z:\app\src\main\java\com\epicgames\ue4\GameActivity.java:2840: error: variable hasVR is already defined in method onCreate(Bundle)
LogPlayLevel: boolean hasVR = false;
LogPlayLevel: ^
LogPlayLevel: Error: Z:\app\src\main\java\com\epicgames\ue4\GameActivity.java:2842: error: variable vrIntent is already defined in method onCreate(Bundle)
LogPlayLevel: Intent vrIntent = new Intent(Intent.ACTION_MAIN, null);
LogPlayLevel: ^
LogPlayLevel: Error: Z:\app\src\main\java\com\epicgames\ue4\GameActivity.java:2847: error: variable pkgManager is already defined in method onCreate(Bundle)
LogPlayLevel: PackageManager pkgManager = getApplicationContext().getPackageManager();
LogPlayLevel: ^
LogPlayLevel: Error: Z:\app\src\main\java\com\epicgames\ue4\GameActivity.java:3241: error: cannot find symbol
LogPlayLevel: powerManager.addThermalStatusListener(getMainExecutor(), new PowerManager.OnThermalStatusChangedListener() {
LogPlayLevel: ^
LogPlayLevel: symbol: class OnThermalStatusChangedListener
LogPlayLevel: location: class PowerManager
LogPlayLevel: Note: Some input files use or override a deprecated API.
LogPlayLevel: Note: Recompile with -Xlint:deprecation for details.
LogPlayLevel: 6 errors
LogPlayLevel: > Task :app:compileDebugJavaWithJavac FAILED
LogPlayLevel: FAILURE: Build failed with an exception.
LogPlayLevel: * What went wrong:
LogPlayLevel: Execution failed for task ':app:compileDebugJavaWithJavac'.
LogPlayLevel: > Compilation failed; see the compiler error output for details.
LogPlayLevel: * Try:
LogPlayLevel: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
LogPlayLevel: * Get more help at https://help.gradle.org
LogPlayLevel: BUILD FAILED in 21s
LogPlayLevel: 32 actionable tasks: 3 executed, 29 up-to-date
LogPlayLevel: Error: ERROR: cmd.exe failed with args /c "D:\Dokumente\Unreal Projects\VR2\Intermediate\Android\armv7\gradle\rungradle.bat" :app:assembleDebug
LogPlayLevel: (see C:\Users\...\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_4.27\Log.txt for full exception trace)
LogPlayLevel: AutomationTool exiting with ExitCode=1 (Error_Unknown)
LogPlayLevel: Completed Launch On Stage: Deploy Task, Time: 33.269529
LogPlayLevel: BUILD FAILED
PackagingResults: Error: Launch failed! Unknown Error
Run Code Online (Sandbox Code Playgroud)
我现在使用 Java 版本 8,但我也尝试过其他版本。例如,当我使用版本 15 时,我收到错误“无法初始化类 org.codehaus.groovy.reflection.ReflectionCache”。我也尝试过使用不同版本的 SDK,但似乎没有任何效果。
XCl*_*ark 10
摆脱所有独立版本的 Java JDK/JRE。仅使用 Android Studio 提供的内容。
Android Studio 附带了一个 OpenJDK/JRE 版本,足以满足大多数 Java 需求。
此外,Gradle 也是一个问题。虚幻引擎会在启动/打包您的游戏/应用程序时安装它。如果您没有“确切”的先决条件,Gradle 会在编译和启动您的项目时尝试下载它认为应该有的 SDK 和构建工具,并且无论您拥有什么 Android Studio SDK 和构建工具都会执行此操作。如果您没有正确满足先决条件,则会导致一系列错误。这太烦人了。
使用最新的虚幻引擎版本4.27.2。
它更加最新并且与 VR 项目兼容。
截至撰写本文时,有很多较新版本的 Android Studio、OpenJDK、构建工具和 SDK、NDK,但 Unreal Engine 4.27.2 需要过时的版本。这也部分是由于引擎本身安装的 Gradle 版本过时,即 6.1.1(不是当前版本 7.3.3),并且在项目的编译/启动/打包时自动安装,然后甚至尝试安装更过时的先决条件根本不起作用。
Unreal Engine 4.27.2 需要以下内容,这些内容不在文档中,也不在 Oculus/Meta Quest 文档中。为了在 Quest 2 上启动 VR 项目(它对我的设置 100% 有效,并且这是唯一对我有效的方法),请执行以下操作:
显然,请确保您已安装虚幻引擎 4.27.2。
删除所有版本的 JAVA JDK(如果存在)。
确保您仅使用 Android Studio 4.0,删除所有其他版本。
Android Studio 4.0 可以在这里找到: https: //developer.android.com/studio/archive
接受许可协议并找到所需的版本。
将 Android Studio 和 SDK 的安装路径保留为默认值。("C:\Program Files\Android\Android Studio" ; "C:\Users[YOUR_NAME]\AppData\Local\Android\Sdk"),其中 [YOUR_NAME] 替换为您的实际用户名文件夹。
设置您的环境变量。JAVA_HOME 的“用户”(顶部窗口)和“系统”(底部窗口)均为“C:\Program Files\Android\Android Studio\jre”,不带引号。(这也是您将在虚幻引擎中为“JDK”使用的路径)
在 Android Studio、SDK 管理器、SDK 平台选项卡中,您必须具有“android-29”(Android 10 Q,API 级别 29),但您可以为其他 Android 设备安装任意多个 SDK 版本。(Quest 和 Quest 2 使用 Android OS 10 Q。)
之后,单击“SDK 工具”选项卡,然后选中“显示包详细信息”框。
您必须拥有 Android SDK 构建工具版本“29.0.3”,不得使用其他版本! (虽然 Gradle 仍然可能会在启动时尝试安装 build-tools 29.0.2,但至少不会影响这次的启动,这一点很重要。)
您必须拥有 NDK 版本“r21d”,即列表中的“21.4.7075529”。
您需要“最新” Android SDK 命令行工具(版本 5.0)。
您必须拥有 CMake 版本“3.10.2.4988404”。
您必须拥有 Android SDK 平台工具。
添加 Android 模拟器,如果您有 AMD 处理器,请为其安装虚拟机管理程序驱动程序。如果您有 Intel 处理器,请安装“Intel X86 Emulator Accelerator”。
如果您计划为其他设备制作应用程序,您可能需要也可能不需要“Google Play”内容,但对于 Quest/Quest2,则不需要。
单击“应用”,让所有内容下载并完成,然后单击“完成/关闭”。
重启。
转到虚幻编辑器的安装位置。在“UE_4.27 > Engine > Extras > Android”下,执行SetupAndroid.bat 文件。它“应该”成功完成。当出现这种情况时,按任意键关闭窗口。
打开现有的虚幻项目或启动一个新项目。(为了这个答案,我们要说使用“游戏 > 虚拟现实”开始一个新的游戏,因为它具有我们开箱即用所需的大部分选项。有关设置虚拟现实的更多信息,请参阅 Oculus 文档。新的空白项目。
重要信息 - 如果您有现有项目:
在打开它之前,进入项目文件夹并删除“Intermediate”、“Saved”和“DerivedDataCache”文件夹。
然后从“C:\Users[YOUR_NAME]”中删除“.gradle”文件夹,将 [YOUR_NAME] 替换为您的实际用户名文件夹。
如果您愿意,也可以重新启动,但这不是必需的。
Android SDK 的位置:C:/Users/[YOUR_NAME]/AppData/Local/Android/Sdk
Android NDK 的位置:C:/Users/[YOUR_NAME]/AppData/Local/Android/Sdk/ndk/21.4.7075529
JAVA的位置:C:/Program Files/Android/Android Studio/jre
显然,再次将 [YOUR_NAME] 更改为您的用户名文件夹,并在将路径粘贴到字段中时注意斜杠方向:使用正斜杠“/”。
在 SDK API Level 下,使用不带引号的“android-29” 。
在 NDK API 级别下,使用不带引号的“最新” 。
另请确保“目标 API”设置为 29。
然后向下滚动到“Build”并确保选中“Support arm64”,因为 Quest 和 Quest 2 是 64 位的!
最后检查“支持 Vulkan”,因为 Android Vulkan 已完全支持并且在 Q/Q2 上运行良好!
您应该能够从这里关注官方页面上的其余文档,没有太多问题。
在视口中的“设置 > 预览渲染级别”下,选择“Android Vulkan”。当您在视口中进行操作时,这将让您或多或少地看到游戏在 Quest/Quest2 上的外观。让所有着色器编译。
最后,确保您的 Quest/Quest2 已设置为启动游戏,然后继续选择它并启动!它应该成功启动/打包。
这对我来说是两天的旅程,我经历了无数对我来说根本不起作用的解决方案。最终,我必须自己解决这个问题,所以这就是我的解决方案。我真诚地希望它能帮助别人。它对我有用,所以我要开始我的 VR 项目了!
Epic 需要选择更好的后端来编译 Android 应用程序。Gradle 是阻止许多人编译应用程序的第一大问题。我的解决方案与 Gradle 和虚幻引擎配合得很好,旧的独立 JAVA 版本已经消失了!
最后,作为一个奖励,如果你使用 Godot,你也不会遇到任何问题。只需使用相同的 Android SDK 文件夹路径(取消隐藏“AppData”文件夹)即可。
谢谢你,
X
| 归档时间: |
|
| 查看次数: |
10356 次 |
| 最近记录: |