UE4.26打包Quest 2 Android目标报错,如何解决JDK/Gradle兼容问题
解决方案
第一步:回退Gradle到官方默认版本
你自行修改的Gradle 7.0和UE 4.26原生构建逻辑不兼容,改回默认配置即可:
打开UE_4.26\Engine\Build\Android\Java\gradle\gradle\wrapper\gradle-wrapper.properties,恢复为原始配置:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip # 注释掉你添加的Gradle7.0配置 # distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip
第二步:统一使用JDK 8
UE 4.26官方仅适配JDK 8,高版本JDK的模块化机制会触发访问权限报错,直接在Unreal的Android SDK设置中将Java路径指定为C:/Program Files/Java/jdk1.8.0_161即可,不要使用JDK 9及以上版本。
第三步:固定SDK/NDK版本配置
不要使用latest作为版本参数,避免版本匹配混乱:
- Unreal全局Android SDK设置中,SDK API Level指定为
android-30,NDK API Level指定为android-23(匹配你项目的最低支持版本) - 项目Android设置中,目标SDK版本选30,最小SDK版本保持23,Build Tools版本指定为
30.0.3
第四步:清理缓存后重新构建
之前的构建缓存会导致配置不生效,按以下顺序操作:
- 关闭Unreal编辑器,删除项目根目录下的
Intermediate、Saved、Binaries三个文件夹 - 删除
C:\Users\bluem\.gradle\caches目录下的所有内容,清除Gradle历史缓存 - 重新打开项目,在打包设置中勾选「完全重建」,再执行Android平台打包操作
报错原因说明
Unable to make field private final java.lang.String java.io.File.path accessible报错:由JDK 9及以上版本引入的模块化访问限制导致,UE 4.26的构建脚本未适配该机制,仅能在JDK 8环境下正常运行。Querying the mapped value of map(...) before task ... has completed is not supported报错:由Gradle 7.0的API变更导致,UE 4.26原生构建逻辑基于Gradle 6.1.1开发,不兼容高版本Gradle的任务执行校验规则。
内容的提问来源于stack exchange,提问作者BlueMonkMN
相关产品推荐
相关产品推荐

