【问题标题】:Skipping the 'CompressResources' build step for Xcode iPhone apps跳过 Xcode iPhone 应用程序的“CompressResources”构建步骤
【发布时间】:2008-10-07 03:45:37
【问题描述】:

是否可以将 iPhone Xcode 项目设置为跳过“CompressResources”构建步骤?

具体来说,我想跳过它在我的所有 .png 文件上运行 pngcrush 的阶段,其中许多文件无法以我的应用程序可以读取的形式存在。

编辑:使用的 pngcrush 版本创建的 png 文件包含非标准的“强制、私有”块,该块明确阻止解码。我已经修改了我的 png 阅读器来处理这些文件,但我仍然想要跳过这一步的每个项目的方法。 pngcrush 的其他副作用之一是它不保存透明像素的颜色值,因此 alpha-ed 纹理在较小的 mip 级别显示边缘。

这里描述了 iphone png 格式:https://web.archive.org/web/20110519164905/http://modmyi.com/wiki/index.php/Iphone_PNG_images。总之,

  • 跳过 CgBI 块
  • 跳过 zlib 标头
  • 将 BGR 交换为 RGB 通道顺序

编辑:它似乎也预乘了 alpha,所以:

  • 除以 alpha

【问题讨论】:

  • 如果有人对 Xcode 为何尝试优化 PNG 以及它究竟做了什么感兴趣,Jeff Lamarche 写了一个很棒的解释。除了解释为什么字节交换和预乘 alpha 通道有帮助之外,他还谈到了当您使用除 PNG 之外的其他图像格式时会发生什么。 iphonedevelopment.blogspot.com/2008/10/…
  • 在我的测试中,我发现预乘发生在 Core Graphics 加载函数中。在 Xcode 中禁用压缩没有任何效果。
  • 我已经用 archive.org 的链接更新了 wiki 的链接,但请注意,它显然也可以在 wiki.onakasuita.org/pukiwiki/?PNG 获得日文版

标签: iphone xcode image resources


【解决方案1】:

您可以将“IPHONE_OPTIMIZE_OPTIONS=-skip-PNGs”添加到您的项目设置中以防止 png 损坏,但要小心,您可能需要分别优化图标和 Default.png。

【讨论】:

    【解决方案2】:

    iphoneos-optimize 脚本将 PNG 文件转换为针对 iPhone 上的显示进行了优化的非标准格式。该脚本将转换它在您的应用程序包中找到的任何具有 png 扩展名的文件。

    我有一个类似的问题,并通过为我的文件提供扩展名 _png(即,前缀下划线)来解决它。 iphoneos-optimize 忽略了它,并留下了一个常规的 PNG 文件。如果你能用这种方式处理它,它可能比使用构建脚本更安全。

    【讨论】:

    • 非常感谢!请注意,当我尝试这个时,我仍然在模拟器中看到(轻微的)渐变条带(我试图解决的问题),但在手机上却没有。
    【解决方案3】:
    • 打开构建设置
    • 在“打包”下选择压缩 PNG 文件
    • 选择“否”

    【讨论】:

      【解决方案4】:

      如果您查看构建输出,您会看到 CompressResources 步骤运行脚本 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/iphoneos-optimize。这似乎只是一个运行 pngcrush 并将 plist 编译为二进制格式的 shell 脚本。您可能可以修改此脚本以不运行 pngcrush。

      请注意,this thread 中的某个人注意到,如果他们没有通过 pngcrush 运行他们的图标文件,它就不会出现在手机上。

      有趣的是,脚本目录中的 pngcrush 版本有一个 -iphone 参数。任何人都知道这是标准的还是 Apple 只是在他们的构建中附带的东西?

      【讨论】:

      • iPhone 使用一种非标准的 PNG 格式,该格式已针对硬件上的更快显示进行了优化。网络上有一对脚本会“取消优化”从 iPhone 应用程序恢复的 PNG。
      【解决方案5】:

      这可能是另一个问题。在许多情况下,问题与命名有关,可以很容易地解决。

      阅读: http://cocoapi.wordpress.com/2009/03/22/iphone-images-not-appearing-in-real-iphone-this-is-why/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-19
        • 2013-09-22
        • 2021-06-10
        • 2011-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        相关资源
        最近更新 更多