You need to enable JavaScript to run this app. Unity 2020.2.6f1构建Android时aaptOptions noCompress属性定义错误
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 16:54:08