9

当我使用 Xcode6.4 在 El Capitan 上构建我的应用程序时(Xcode7 现在不是选项),所有图像/图标(AppIcon 除外)都不会显示,或者看起来是乱码。

查看资产编译器的输出看起来不错,但我怀疑有两个输出可能相关,但我还不确定:

2015-10-02 12:26:53.569 ibtoold[28899:273288] NSFileCoordinator 什么都不做。

2015-10-02 12:26:54.906 ibtoold[28899:276436] CoreUI(调试):CSIGenerator 使用“LZFSE”压缩 coreui 版本(362.000000)

会不会是 LZFSE 压缩搞砸了,导致 Yosemite 无法正确解压,如果是这样,有没有办法覆盖它?

当应用程序在 El Capitan 上运行时没有问题。

任何建议都非常受欢迎。

更新: 当应用程序在优胜美地上运行时,这些消息会输出到控制台:

02.10.15 22.31.59,914 AppName[452]:-[CUIThemeRendition newImageFromCSIDataSlice:ofBitmap: usingColorspace:] CSI 中不支持的像素格式得到 36864

02.10.15 22.31.59,914 AppName[452]:无法从 csi 位图数据创建未切片图像。

似乎他们在 Xcode beta 3 中的 iOS7 遇到了这个问题

但是现在突然又出现了,好像很奇怪,我的目标是OS X。

更新: 所以我已经升级到 Xcode7,整个问题就消失了。所有图像和图标现在都可以在 El Capitan 和 Yosemite 中正确显示。

4

4 回答 4

7

背景资料:

每个版本的 Xcode 都内置了一个模拟器。Xcode 6.4 有 iOS 模拟器 8.4。Xcode 7.1 有 iOS Simulator 9.1 等。这些模拟器的配置文件存储在Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/CoreSimulator/Profiles/Runtimes

当您安装额外的模拟器时,它们会在 Xcode 版本之间共享,并且它们的配置文件存储在/Library/Developer/CoreSimulator/Profiles/Runtimes

因此,当您从 Xcode 7.1 安装 iOS Simulator 9.0 时,9.0 模拟器配置文件会放在共享位置。如果您从 Xcode 7.1 安装 iOS Simulator 8.4,它也会放在这里,因为 Xcode 7.1 不知道在 Xcode 6.4 中隐藏了 iOS Simulator 8.4 的副本。

所以似乎正在发生的是(对于 Xcode 6.4):

  • 当您调用 actool 创建资产目录时,它会启动 ibtoold
  • ibtoold 通过 XPC 服务 (com.apple.coresimulator) 调用并在模拟器服务之上运行 IBCocoaTouchImageCatalogTool 实例
  • IBCocoaTouchImageCatalogTool 遍历了所有模拟器运行时,/Library/Developer/CoreSimulator/Profiles/Runtimes并且显然使用了它可以找到的最新版本。为什么它这样做对我来说并不是很清楚,但是没有多少旋钮摆弄会导致它做任何其他事情。

因此,如果您安装了 Xcode 7.1.1,并下载了 9.0 模拟器,您将破坏您的 Xcode 6.4 安装,因为 9.0 模拟器将其运行时安装在共享模拟器运行时区域中,而 Xcode 6.4 在某些情况下会选择并使用它。这显然会导致 actool 破坏它正在导入的任何 png。在我的实验中,导入 jpgs 很好。其他有趣的副作用包括尝试在 Xcode 6.4 中编辑 Storyboard 会导致 Xcode 6.4 崩溃。

因此,如果您需要同时安装 Xcode 7.x 和 Xcode 6.4,请不要从 Xcode 7 安装中安装任何 iOS 9.x 模拟器。

于 2015-12-03T18:45:27.307 回答
4

遵循(部分)@drmaclach 的建议,我遵循了这些步骤并摆脱了那些讨厌的-[CUIThemeRendition ...]错误(我使用的是 Xcode 6.4 和 Mac OS X 10.11.1)

  • 在 Xcode 中,转到 Window -> Projects,找到您的项目,然后按“Derived Data”的“Delete”按钮
  • 退出 Xcode 和 iOS 模拟器
  • 删除iOS 9.0.simruntime/Library/Developer/CoreSimulator/Profiles/Runtimes
  • 在 Xcode 中重新打开项目并在按住选项键时在 Project 下执行 Clean Build Folder
于 2015-12-07T00:47:32.330 回答
0

尝试将 .png 转换为 .jpg,我的 .png 也不会显示,但 .jpg 是可见的。或者不要将它们放入 Images.xcassets 中。

于 2015-10-07T14:56:38.287 回答
0

安装 XCode6.4 后我遇到了同样的问题。我通过将所有图像转换为 .jpg 用于 .xcassets 目录来解决它。

于 2015-11-02T11:13:13.443 回答