【问题标题】:Xcode 9 no longer copies xcassets into bundle targetXcode 9 不再将 xcassets 复制到捆绑目标中
【发布时间】:2017-09-26 14:27:16
【问题描述】:

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

设置:

  1. xcasset 与目标相关联

  2. xcasset 包含在捆绑目标的构建阶段的“复制捆绑资源”中。

结果

捆绑产品中不包含 xcasset 中的图像。

在使用 Xcode 8 的不同机器上,我可以构建相同的捆绑目标,并且存在 TestCatalog 中的图像。

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

感谢您的帮助。

【问题讨论】:

    标签: xcode bundle xcode9


    【解决方案1】:

    它工作得很好! Assets.car 实际上是你的资产目录,你的图片就在里面。

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

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

    这是报告的相关部分:

    正如您在最后几行中看到的,MyFrameworkAssets.xcassets 已被编译到名为 /MyCoolFramework.framework/Assets.car 的资产目录中,与您的项目中完全相同。

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

    【讨论】:

    • 你是对的,谢谢!仅供参考:当使用带有 --minimum-deployment-target
    • “ALSO 将 xcassets 中的所有 pngs 复制到包中”因为您要求在一个非常旧的系统版本上运行,资产目录甚至还没有被发明出来!
    • 这篇文章的措辞非常具有指责性......在其中查看并只看到一个您期望有几十个文件的文件是完全合理的,并假设几十个文件没有放在那里(特别是如果他们已经很久了)。最后的括号是完全没有必要的。
    猜你喜欢
    • 2010-09-28
    • 2013-01-19
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2014-11-27
    • 1970-01-01
    相关资源
    最近更新 更多