iOS - несоответствие pngcrush

Кажется, у меня возникают проблемы с репликацией iOS png оптимизаций, которые делает xcode. Наше приложение позволяет пользователям обновлять контент через сервер ресурсов, сравнивая контрольные суммы файлов, хранящихся в пакете, с файлами на сервере. Перед загрузкой любых png-файлов на сервер они подвергаются сценарию iphoneos-optimize в каталоге разработчика xcode ( сообщение о переполнении стека). Проблема в том, что контрольная сумма, выполняемая (как сервером, так и устройством) в png, дает разные результаты.

Стоит отметить, что это тестируется на устройстве, а не на симуляторе (который не разрушает pngs). Кроме того, видимые результаты одинаковы, это просто контрольная сумма, которая отличается.

2 ответа

Решение

Я создал тест, в котором я загрузил пакет.png с устройства на наш сервер, чтобы мы могли более тщательно проанализировать изображение. Когда я открыл файл.png, я действительно смог увидеть изображение, из которого можно предположить, что оно не было искажено процессом сборки XCode (так как он переставляет байты и т. Д.). Затем я отключил сжатие png в настройках сборки в XCode и попытался снова. Изображение, отправленное на сервер на этот раз, было pngcrussed, и контрольная сумма файла соответствовала изображению, которое я раздавил вручную. Это предполагает, что настройка сборки для XCode 3.2.6 может быть обратной. Затем я проверил на компьютере коллеги, работающем под XCode 3.2.5, и настройки работали как положено; получение сжатого изображения, когда был установлен флаг сжатия.

Я попытался поискать в Google проблему, но не смог найти никаких сообщений об ошибках / проблемах на эту тему. Однако данные свидетельствуют о том, что это проблема XCode. Было бы хорошо получить подтверждение по этому поводу от другой стороны.

Я предполагаю, что вы используете контрольные суммы, чтобы убедиться, что у вас нет дубликатов.

Глядя на варианты pngcrushКажется, что фактический результат процедуры не предсказуем. Так как pngcrush называется Xcode, мы не знаем, какие параметры он использует.

Мой совет - просто найти другую схему для уникальной идентификации активов. Это может быть схема именования, вы можете работать с URL-адресами сервера или их комбинацией.

Другие вопросы по тегам