升级Unity2022LTS+Vuforia10.17.0后构建遇Gradle解析数组越界错误
解决Unity 2022 LTS + Vuforia 10.17.0构建时GradlePropertiesParser触发的IndexOutOfRangeException
以下是几个针对性的解决方案,按优先级尝试:
1. 彻底检查并修复gradle.properties文件格式
- 用纯文本编辑器(如Notepad++、VS Code)打开项目根目录的
gradle.properties,切换到"显示所有字符"模式,删除所有不可见的特殊字符(比如全角空格、非标准换行符) - 逐行验证每个属性的格式必须是
key=value,没有多余的等号、缺失的分隔符,也不要有空白行之外的空内容行 - 保存时选择UTF-8 无BOM编码
2. 修复Vuforia的GradlePropertiesParser边界检查逻辑
Vuforia 10.17.0的解析器可能未处理无效行导致索引越界,手动修改插件代码:
- 找到项目中
Assets/Vuforia/Editor/Utils/GradlePropertiesParser.cs文件 - 定位到解析行的代码块,添加数组长度检查:
修改为:// 原存在问题的解析逻辑示例 foreach (var line in lines) { var trimmedLine = line.Trim(); if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.StartsWith("#")) continue; var parts = trimmedLine.Split('='); var key = parts[0].Trim(); var value = parts[1].Trim(); // 此处可能触发IndexOutOfRangeException // 后续处理逻辑 }foreach (var line in lines) { var trimmedLine = line.Trim(); if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.StartsWith("#")) continue; var parts = trimmedLine.Split('='); if (parts.Length < 2) // 添加边界检查,跳过无效行 continue; var key = parts[0].Trim(); var value = parts[1].Trim(); // 后续处理逻辑 } - 保存文件后,重启Unity并重新构建
3. 重置Vuforia配置并重新生成gradle.properties
- 打开Unity编辑器,导航到
Window > Vuforia Configuration - 点击窗口底部的
Reset Configuration按钮,清空现有Vuforia配置 - 删除项目根目录下的
gradle.properties文件 - 在
File > Build Settings中,先切换到其他平台(如iOS),再切回Android,让Unity自动重新生成标准的gradle.properties文件 - 再次尝试构建
4. 临时规避方案
- 如果上述方法都无效,尝试降级到Vuforia 10.16.x版本,该版本未报告此解析器bug
- 或者在Unity的
Player Settings > Publishing Settings中,取消勾选Custom Gradle Properties选项,使用Unity默认的gradle配置进行构建
内容的提问来源于stack exchange,提问作者LuisJa
相关产品推荐
相关产品推荐

