Пропуск этапа сборки CompressResources для приложений Xcode iPhone - PullRequest
11 голосов
/ 07 октября 2008

Можно ли настроить проект iPhone Xcode, чтобы пропустить шаг сборки CompressResources?

В частности, я хочу пропустить этап, когда он запускает pngcrush для всех моих файлов .png, многие из которых не выдерживают опыта в форме, которую моё приложение может прочитать.

Редактировать: используемая версия pngcrush создает файлы png, которые содержат нестандартный «обязательный, частный» чанк, который явно предотвращает декодирование. Я изменил свой png-ридер для обработки этих файлов, но мне все равно хотелось бы пропустить этот шаг для каждого проекта. Один из других побочных эффектов pngcrush заключается в том, что он не сохраняет значение цвета прозрачных пикселей, поэтому текстуры в альфа-краях показывают окаймление на меньших уровнях mip.

Формат iphone png описан здесь: https://web.archive.org/web/20110519164905/http://modmyi.com/wiki/index.php/Iphone_PNG_images. Короче говоря,

  • Пропустить блок CgBI
  • Пропустить заголовки zlib
  • Поменять порядок каналов BGR на RGB

Редактировать: Похоже, он также умножает альфа, поэтому:

  • Разделить на альфа

Ответы [ 5 ]

10 голосов
/ 23 октября 2008

Вы можете добавить «IPHONE_OPTIMIZE_OPTIONS = -skip-PNGs» в настройки своего проекта, чтобы предотвратить искажение png, но будьте осторожны с этим, вам может потребоваться оптимизировать значок и Default.png отдельно, тогда.

8 голосов
/ 07 октября 2008

Сценарий iphoneos-optimize преобразует файлы PNG в нестандартный формат, оптимизированный для отображения на iPhone. Сценарий преобразует любые файлы с расширением png, которые он находит в вашем комплекте приложений.

У меня была похожая проблема, и я решил ее, дав своему файлу расширение _png (то есть с префиксом подчеркивания). iphoneos-optimize проигнорировал его и оставил обычный файл PNG. Если вы можете справиться с этим, возможно, это намного безопаснее, чем копаться в скриптах сборки.

5 голосов
/ 21 октября 2011
  • Открыть настройки сборки
  • В разделе "упаковка" выберите Сжать PNG файлы
  • Выберите "НЕТ"
3 голосов
/ 07 октября 2008

Если вы посмотрите на выходные данные сборки, то увидите, что на шаге CompressResources запускается сценарий /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/iphoneos-optimize. Похоже, что это всего лишь скрипт оболочки, который запускает pngcrush и компилирует списки в двоичный формат. Возможно, вы могли бы изменить этот скрипт, чтобы не запускать pngcrush.

Обратите внимание, что кто-то в этой теме заметил, что если он не запускал файл значков через pngcrush, он не появлялся на телефоне.

Интересно, что версия pngcrush в каталоге скрипта имеет аргумент -iphone. Кто-нибудь знает, является ли это стандартным или что-то вроде Apple просто поставляется с их сборкой?

1 голос
/ 22 марта 2009

Это может быть еще одна проблема, все вместе. Во многих случаях проблема связана с именованием и может быть решена очень легко.

прочитайте это: http://cocoapi.wordpress.com/2009/03/22/iphone-images-not-appearing-in-real-iphone-this-is-why/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...