修复Unity编译时“AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout”错误

本文介绍了Unity在导出Android工程时遇到的AAPT超时问题,分析了原因并提供了解决方案。问题在于Unity导出的build.gradle文件中aaptOptions.noCompress数组可能过长,导致编译缓慢。建议修改为按文件类型忽略而不是按文件夹,例如忽略'.unity3d','.ress','.resource','.obb','.assetbundle','.bundle'等特定类型的文件。同时,检查资源是否被不必要的压缩,以优化加载速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要解决这个报错首先我们要了解AAPT是什么东西。

aapt 全称为 Android Asset Packaging Tool,即为Android资源打包工具。作为unity开发人员,一般跟Android打交道比较少,感兴趣的同学可以先去官网学习学习。

问题分析

##aapt2版本

首先4.1.2-6503028是使用appt2 sdk版本。

我们可以在maven仓库查到具体版本信息

https://maven.google.com/web/index.html?q=aapt2#com.android.tools.build:aapt2:4.1.2-6503028

##报错

这类超时问题一般在Unity在出这个问题一般都是资源出了问题。

问题解决

最简单的方式是检查Unity导出的安卓工程中的build.gradle文件中的aaptOptions.noCompress数组是否过程或超过了255,打包文件中的数组长度要求低于255长度。在我们项目开发中,ab包分得细一点就比较容易超过这个上限。即使不超过上限,也比较容易出现打包过程中的timeout问题。

Unity默认设置为

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

在输出为build.gradle文件的时候,将StreamingAssets中文件全部放到数组,就比较容易让数组过长,导致编译过慢。但是我们的ab包必须被忽略,否则游戏加载会很慢。

可以取消按文件夹下所有文件忽略,而是按类型忽略。

修改为:

aaptOptions {
        //手动忽略指定文件及.assetbundle文件或.bundle文件
        noCompress = ['.unity3d', '.ress', '.resource', '.obb', '.assetbundle','.bundle']
    }

如果你加载在Android上比IOS慢不少,也可以关注下是不是什么unity中需要的资源被Android打包再次压缩了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值