Unity 2020.2.6f1构建Android时aaptOptions noCompress属性定义错误
Unity 2020.2.6f1 构建Android版本aaptOptions报错解决步骤
报错触发逻辑
UnityException: mainTemplate.gradle文件使用了旧版aaptOptions noCompress属性定义,未包含unityStreamingAssets常量定义的文件类型。
该报错是Unity 2020.2版本对mainTemplate.gradle的占位符规则新增了强制校验:当aaptOptions块下的noCompress配置使用旧的逗号分隔单值传入写法时,Unity会判定该配置未匹配unityStreamingAssets常量对应的文件类型规则,触发异常;如果配置格式不符合Unity要求的占位符规范,构建流程会自动回写旧版不兼容的Gradle配置,这也是你手动修改文件后内容被覆盖的核心原因。
你当前看到的mainTemplate.gradle中的aaptOptions段noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**,就是Unity检测到配置不合法后自动回写的旧格式内容。
分步解决操作
- 修正mainTemplate.gradle的aaptOptions格式
定位到项目Assets/Plugins/Android/路径下的mainTemplate.gradle文件,将原有aaptOptions块替换为如下符合Unity 2020.2版本规范的内容:
注意不要手动替换aaptOptions { noCompress = ['.unity3d', '.ress', '.resource', '.obb']**STREAMING_ASSETS** ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" }**STREAMING_ASSETS**占位符,也不要手动添加+ unityStreamingAssets.tokenize(', ')这类旧版本拼接代码,Unity会自动通过占位符完成对应文件类型的注入,手动修改占位符内容会触发校验失败,导致配置被强制回写。 - 排查第三方插件的内置配置覆盖逻辑
你当前引入的Facebook、GameAnalytics、Adjust三类插件的旧版本,普遍存在内嵌的Gradle模板逻辑:构建阶段会检测mainTemplate.gradle的aaptOptions配置,自动将其回写为旧版单值逗号分隔的写法。这类逻辑通常写在插件自带的Editor配置类中,不属于项目自定义的预/后构建流程脚本,所以普通的BuildPipeline排查无法发现。
需要逐一定位这三类插件的Editor配置类,删除其预设的旧版aaptOptions回写逻辑,确保插件不会在构建流程中篡改你设置的Gradle配置。 - 调整Android Resolver的修补规则
不要直接禁用Android Resolver的Gradle修补功能,需要在Resolver的设置面板中,找到mainTemplate.gradle对应的修补规则,删除预设的旧版aaptOptions写入逻辑,使其和你手动设置的数组格式配置保持一致,避免Resolver在构建阶段自动覆盖配置。 - 清缓存验证
完成所有配置调整后,删除项目目录下Library/AndroidIl2cppBuildCache、Library/Bee缓存目录,重启Unity后重新执行Android构建流程,确认无报错触发即可。
内容的提问来源于stack exchange,提问作者Cumali Şahin
相关产品推荐
相关产品推荐

