Пропуск шага сборки CompressResources для приложений iPhone XCode

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

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

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

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

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

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

  • Разделить по альфа

Ответ 1

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

Ответ 2

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

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

Ответ 3

  • Открыть настройки сборки
  • В разделе "упаковка" выберите "Сжать" PNG файлы.
  • Выберите "НЕТ"

Ответ 4

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

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

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