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

embedded/2025/2/5 8:08:58/

文章目录

  • 报错:AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout
    • 报错信息解读:
    • 原因分析
    • 最终处理方法

报错: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中的文件会被全部放到数组,这个比较容易让数组过长,导致编译过慢。可能就要取消按文件夹忽略,而是跟前面几项一样,按类型忽略。


http://www.ppmy.cn/embedded/159699.html

相关文章

C# OpenCV机器视觉:利用CNN实现快速模板匹配

在一个阳光灿烂的周末,阿强正瘫在沙发上,百无聊赖地换着电视频道。突然,一则新闻吸引了他的注意:某博物馆里一幅珍贵的古画离奇失踪,警方怀疑是被一伙狡猾的盗贼偷走了,现场只留下一些模糊不清的监控画面&a…

电路研究9.2.2.1——合宙Air780EP中分组域相关命令分析

之前学习AT指令:基本命令、配置命令、设备控制命令、网络服务命令、音频相关命令以后直接跳到了FTP了,因为觉得后面可能涉及不到,但是在我学习过程中,发现ATSAPBR竟然出现在了IP那里,我就返回从头再研究一下&#xff0…

【后端】Flask

长期更新,建议关注收藏点赞! 实例1 Jinja2 是 Flask 和 Django 使用的 模板引擎,它允许你在 HTML 中嵌入 Python 代码,以动态生成页面内容。Jinja2 语法类似于 Django 模板,并支持变量、条件判断、循环、过滤器等。 fr…

高阶开发基础——快速入门C++并发编程5 信号量的使用

目录 简单说说condition_variable 一个例子 简单说说condition_variable condition_varaible是mutex的一个更加高阶的使用。它用来负责简化资源的请求和使用。或者说,他让多个线程对资源的使用变得有序。 一个代表性的例子就是我们的消费生产模型。假设有两个线程…

2.7学习记录

re [WUSTCTF2020]Cr0ssfun 得到附件先查壳无壳elf64位文件,放进ida查看主调函数往下追踪,发现7部分相似的结构,给的数字看上去像是ASCII码,对照码表把7部分串联起来得到:wctf2020{cpp_nd_r3verse_re_fun} pwn rip …

4 前置技术(下):git使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 前言

深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)

深入解析“legit”的地道用法——从俚语到正式表达 一、引言 在社交媒体、科技圈甚至日常对话中,我们经常会看到或听到“legit”这个词。比如最近 Sam Altman 在 X(原 Twitter)上发的一条帖子中写道: we will obviously deliver …

从零开始的Python小项目:用Pygame制作贪吃蛇游戏

目录 1. 概述 2. 环境准备 3. 初始化游戏 4. 定义游戏参数 5. 辅助工作 6. 游戏主循环 7. 启动! 8. 后续工作 9. 完整代码 闲来无事,想自己做点游戏玩玩,之前用C写了很多游戏,但都是基于dos窗口的,太枯燥了。…