按需资源的资产目录编译错误:没有输出规范

Asset Catalog Compile Error with On-Demand Resources: has no output specification

我一直在尝试让按需资源正常工作,但我一直收到此编译错误:

/* com.apple.actool.errors */

: error: The tag combination "tagName" for "xxx.imageset/xxx@3x.png" has no output specification.

我查看了 actool man page,有一个选项:

--asset-pack-output-specifications filename

其中说:

Tells actool where to write the information about ODR resources found in the asset catalog. The emitted file will be a plist.

但我不确定在 argument/where 使用这个 plist 时应该放什么,或者即使这个选项在修复错误的正确轨道上。

我和我的同事为这个错误苦苦挣扎了一天多,只能通过擦除我们现有的本地存储库并使用包含按需资源的代码从我们的远程存储库安装一个新的克隆来修复它。

在我们的案例中,我是创建按需资源功能并为资产添加标签的人。我构建并 运行 所有这些代码,并且一切都在我的机器上本地运行良好。我将这些提交推送到我们的远程,当我的同事拉取时,他们收到了您在他们尝试构建时报告的资产目录编译错误。

我将我的构建日志与同事的构建日志进行了比较,发现我有 --asset-pack-output-specifications 标志和文件名,而他们没有,即使我们所有的生产代码都是相同的.我从来没有在开发过程中自己手动设置该标志,它是在过程中的某个时刻自动生成的,但我不知道在哪里——我什至不知道它存在,直到发生此构建失败。经过几个小时的努力,我们注意到,如果我的同事完全删除了他们的本地项目,并基本上通过安装一个新项目重新开始,然后从远程再次回购,他们突然能够构建。他们已经尝试清理和破坏他们的派生数据,但这没有用。只有完全删除存储库和项目才能完全解决问题。不知道为什么,但是一些关于擦除项目和所有相关目录并从他们自己的本地机器上全新构建自己的东西触发了启用 --asset-pack-output-specifications 标志的东西。

我刚遇到这个问题,完全反对删除我的存储库并再次克隆。

我注意到除了这个错误,我还收到一条警告,指出我有同名资产(因此被重复)。

删除重复的资产以消除警告,修复了编译错误。

希望这对某人有所帮助,因为删除存储库并再次克隆不应该是一种选择。

我刚遇到这个问题。

我可以通过删除按需资源标签并重新标记它们来解决它。

我只是通过重新启动 Xcode 然后 运行 成功解决了这个问题。错误似乎只出现一次...我不知道为什么。