Unity-编译构建Android的问题记录

报错:AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout

报错信息解读:

  • aapt2:这是 Android Asset Packaging Tool 2 的缩写,是 Android 开发中用于处理资源文件的工具。
  • 4.1.2-6503028:这是 aapt2 的版本号,表示使用的具体版本。其中:
    • 4.1.2 是主版本号,表示主要的功能更新和修复。
    • 6503028 是构建号或修订号,用于标识该版本的具体构建或修订。
  • osx:表示该 aapt2 版本是为 macOS 操作系统编译的。
  • Daemon #0:表示这是 aapt2 的第一个守护进程实例。在多进程环境中,守护进程用于处理并发任务。
  • Failed to shutdown within timeout:表示 aapt2 守护进程在关闭时超时,未能在规定的时间内完成关闭操作。

原因分析

在 Unity 中遇到这个问题,可能的原因是

  1. noCompress 数组过大
    • aaptOptions.noCompress 数组包含超过 255 个条目时,AAPT2 需要处理大量的免压缩资源。这不仅会增加编译时间,还可能导致 AAPT2 进程消耗过多资源,从而无法在规定时间内完成工作,导致超时错误。
  2. 资源管理不当
    • 如果项目中包含了大量不需要压缩的资源文件,可能会导致 AAPT2 在处理这些文件时遇到性能瓶颈。

那么对应的解决方法就可能有以下:

  1. 优化 noCompress 配置

    • 审查和精简列表:检查 aaptOptions.noCompress 中的条目,确保只包含确实需要免压缩的资源类型或文件。例如,通常只需要对特定的文件类型(如 .xml.png 等)设置免压缩,而不是对所有文件都进行设置。
    • 合并相似条目:如果有多个文件类型需要免压缩,可以尝试合并这些条目,减少数组的长度。
    android {
        aaptOptions {
            noCompress 'xml', 'png', 'jpg' // 仅列出需要免压缩的类型
        }
    }
    
  2. 使用通配符或模式匹配

    • 如果有大量类似的文件需要免压缩,可以使用通配符或模式匹配来简化配置,减少条目数量。
    android {
        aaptOptions {
            noCompress '**/*.xml', '**/*.png' // 使用通配符匹配多个文件
        }
    }
    

最终处理方法

Unity默认设置为

aaptOptions {
        noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
    }

这里可以先检查下配置是否符合预期。
在符合预期的前提下,我们可以看到StreamingAssets中的文件会被全部放到数组,这个比较容易让数组过长,导致编译过慢。可能就要取消按文件夹忽略,而是跟前面几项一样,按类型忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值