使用xcode6.4在El Capitan上构建的应用程序中,Yosemite上的图像资源(xcassets)无法正确显示

Tro*_*ond 9 xcasset osx-yosemite osx-elcapitan xcode6.4

当我使用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(DEBUG):CSIGenerator使用'LZFSE'压缩coreui版本(362.000000)

可能是LZFSE压缩混乱使Yosemite无法正确解压缩,如果是这样,有没有办法覆盖它?

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

任何建议都非常欢迎.

更新: 当应用程序在Yosemite上运行时,这些消息将输出到控制台:

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中正确显示.

dma*_*ach 7

背景资料:

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

当您安装其他模拟器时,这些模拟器将在Xcode版本之间共享,并且其配置文件存储在 /Library/Developer/CoreSimulator/Profiles/Runtimes

因此,当您从Xcode 7.1安装iOS模拟器9.0时,9.0模拟器配置文件将被放入共享位置.如果你从Xcode 7.1安装iOS模拟器8.4,它也会放在这里,因为Xcode 7.1不知道有一个隐藏在Xcode 6.4内的iOS模拟器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模拟器.


Man*_*oid 0

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