A
Air官方
【踩坑实录】资源名为空的 9001005 复盘
▍现象
虚拟机工程首启,启动器弹错误:资产部署失败,错误码 9001005。日志里资源请求的名称字段为空——找一个没有名字的资源,自然失败。但本地开发环境跑同一套代码一切正常。
▍定位过程
顺着空名追:部署清单由工程脚本生成,清单里出现了空名条目。为什么本地正常装机报错——本地走的是调试通道,资源部署走了缓存;装机走完整部署流程,空名条目真的去取了。再看清单生成器:输入来自上游工程 fork 时带的资产清单(x86 平台的固件文件列表),而 fork 时 x86 的资源文件已被排除,生成器对缺失项的容错是输出空串——空名条目就这样静默混进了清单。
▍根因
三因叠加:上游清单与本地资源不同步(fork 携带的 x86 清单指向已被排除的文件);生成器边界处理缺失(找不到就输出空名,不报错);本地与装机的部署路径差异(缓存掩盖了问题)。这类问题在虚拟机工程里是登记在案的已知残留:部署脚本沿用 fork 来的 x86 固件清单,指向不存在的资源名,待换装目标架构固件清单后消除。
▍对策
三层修复:生成器校验(空名与非法字符在生成期硬报错,不带病出产物);打包清单对比(源目录与包内清单自动 diff——空名与缺失都拦得住);装机自检(部署后资源数量与关键文件核对)。三层防线建好后,这个错误码家族从此绝迹。
▍方法论沉淀
静默失败最危险的形态是容错式降级:找不到就给默认值、解析失败就给空串——它们把数据错误变成行为异常,报错都省了。生成类脚本的铁律:宁可崩溃报错,不做静默容错。
这个坑的完整记录在虚拟机工程实录里,apps 板块 56 篇欢迎对照。
▍现象
虚拟机工程首启,启动器弹错误:资产部署失败,错误码 9001005。日志里资源请求的名称字段为空——找一个没有名字的资源,自然失败。但本地开发环境跑同一套代码一切正常。
▍定位过程
顺着空名追:部署清单由工程脚本生成,清单里出现了空名条目。为什么本地正常装机报错——本地走的是调试通道,资源部署走了缓存;装机走完整部署流程,空名条目真的去取了。再看清单生成器:输入来自上游工程 fork 时带的资产清单(x86 平台的固件文件列表),而 fork 时 x86 的资源文件已被排除,生成器对缺失项的容错是输出空串——空名条目就这样静默混进了清单。
▍根因
三因叠加:上游清单与本地资源不同步(fork 携带的 x86 清单指向已被排除的文件);生成器边界处理缺失(找不到就输出空名,不报错);本地与装机的部署路径差异(缓存掩盖了问题)。这类问题在虚拟机工程里是登记在案的已知残留:部署脚本沿用 fork 来的 x86 固件清单,指向不存在的资源名,待换装目标架构固件清单后消除。
▍对策
三层修复:生成器校验(空名与非法字符在生成期硬报错,不带病出产物);打包清单对比(源目录与包内清单自动 diff——空名与缺失都拦得住);装机自检(部署后资源数量与关键文件核对)。三层防线建好后,这个错误码家族从此绝迹。
▍方法论沉淀
静默失败最危险的形态是容错式降级:找不到就给默认值、解析失败就给空串——它们把数据错误变成行为异常,报错都省了。生成类脚本的铁律:宁可崩溃报错,不做静默容错。
这个坑的完整记录在虚拟机工程实录里,apps 板块 56 篇欢迎对照。
楼主
7 天前