Xcode 9 不再将 xcassets 复制到包目标中

Xcode 9 no longer copies xcassets into bundle target

我更新到 Xcode 9,现在当我构建我的包目标时,它不再包含 xcasset 图像资源。

设置:

  1. xcasset 与目标相关联

  2. xcasset 包含在包目标的构建阶段的 "Copy Bundle Resources" 中。

结果

捆绑产品中没有 xcassets 中的图像。

在装有 Xcode 8 的另一台机器上,我可以构建相同的包目标并且存在 TestCatalog 中的图像。

注意:TestImage.png(存在于任何 xcassets 之外)按预期包含在 Xcode9 中。这让我认为问题与 xcassets 的包含方式有关。

感谢您的帮助。

一切正常! Assets.car其实就是你的资产目录,你的图片就在里面。

如果 Xcode 之前将图像从资产目录中拉出并将它们放在框架的顶层,那是错误的行为!资产目录图像应该被编译成资产目录的编译版本(.car 文件)。而这正是现在正在发生的事情。并且没有理由不在编译过程中重命名资产目录(因为无论如何都无法在代码中通过名称直接引用资产目录)。

您可以通过阅读编译期间生成的报告来确认那是发生了什么。但是,您不会在屏幕截图中包含它。我会给你看。这是我的项目,与您的相似:

这里是报告的相关部分:

如您所见,最后几行,MyFrameworkAssets.xcassets 已编译到名为 /MyCoolFramework.framework/Assets.car 的资产目录中,与您的项目完全一样。

所以我认为问题仅仅是您正在尝试查看此 "from the outside"(即使用终端)。真正知道这是否有效的方法是让你的框架代码引用一个图像并显示它,而且你似乎没有这样的代码。您还可以下载 AssetCatalogTinkerer 并查看 assets.car 文件。你会看到你的图片在那里!