看看资产编译器的输出看起来很好,但我怀疑有两个输出可能是相关的,但我很不确定:
2015-10-02 12:26:53.569 ibtoold[28899:273288] NSFileCoordinator is doing nothing.
2015-10-02 12:26:54.906 ibtoold[28899:276436] CoreUI(DEBUG): CSIGenerator using ‘LZFSE’ Compression coreui version (362.000000)
可能是LZFSE压缩混乱使Yosemite无法正确解压缩,如果是这样,有没有办法覆盖它?
在El Capitan上运行应用程序时没有问题.
任何建议都非常欢迎.
更新:
当应用程序在Yosemite上运行时,这些消息将输出到控制台:
02.10.15 22.31.59,914 AppName[452]: -[CUIThemeRendition newImageFromCSIDataSlice:ofBitmap: usingColorspace:] Unsupported pixel format in CSI got 36864
02.10.15 22.31.59,914 AppName[452]: Unable to create unsliced image from csi bitmap data.
看来他们在Xcode beta 3 here中对iOS7有这个问题
但现在突然再次出现似乎很奇怪,我的目标是OS X.
更新:
所以我升级到了Xcode7,整个问题都消失了.所有图像和图标现在都可以在El Capitan和Yosemite中正确显示.
解决方法
每个版本的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模拟器.