Assets.car не может содержать 16-разрядные или P3-активы, если приложение поддерживает iOS 8 или ранее? - программирование
Подтвердить что ты не робот

Assets.car не может содержать 16-разрядные или P3-активы, если приложение поддерживает iOS 8 или ранее?

Кто-нибудь сталкивался с этой ошибкой при загрузке в iTunesConnect. Загружаемая прецессия попадает в "Проверка активов в магазине iTunes", я получаю следующую ошибку:

введите описание изображения здесь

Я работаю с xCode8, внедряя пользовательское приложение наклейки в существующее приложение iOS. Я временно удалил активы наклейки и включил значки писем яблока, чтобы проверить, были ли это мои активы наклейки, которые вызывали проблему, однако при проверке я получаю ту же ошибку. Есть предположения?

4b9b3361

Ответ 1

Короче: В вашем комплекте есть картинки, которые имеют не поддерживаемый формат. Вы можете либо отрегулировать формат этих изображений, либо увеличить минимальную версию iOS своей цели. Имейте в виду, что последний является только исправлением и, вероятно, не тем, что вы хотите сделать, потому что это уменьшит вашу потенциальную базу пользователей из-за очень разрешимой проблемы.

Часть 1 объяснит, как определить, какие изображения являются оскорбительными.

Часть 2 показывает, как настроить формат изображения, чтобы iTunesConnect был доволен этим. Если у вас есть только несколько изображений, вы можете перейти к части 2 и проверить их вручную.

Часть 1: Определите нарушающие изображения:

В Apple Developer Forum есть тема: https://forums.developer.apple.com/thread/60919

Принятое решение выглядит следующим образом:

Как разрешить "ERROR ITMS-90682: Недействительный пакет". Каталог активов в разделе "Полезная нагрузка /XXXXX/Assets.car" не может содержать 16-разрядные или P3-активы, если приложение поддерживает iOS 8 или ранее.

С Xcode 8 GM эта ошибка возникнет, если вы включите 16-разрядные или P3-активы в приложение, настроенное для iOS-версий ранее, чем iOS 9.3. Если для вашего приложения требуется широкая цветовая функциональность, вы должны изменить свой целевой уровень развертывания на iOS 9.3 или новее. Если ваше приложение не требует широкой цветовой функциональности, и вы хотите развернуть его на более ранних версиях iOS, вы должны заменить все 16-разрядные или P3-активы 8-разрядными ресурсами sRGB.

Вы можете найти 16-разрядные или P3-активы, запустив "assetutil" в каталоге активов, указанном в сообщении об ошибке из iTunes Connect. Следующие шаги описывают процесс: 1. Создайте файл Inspectable.ipa. В Xcode Organizer (Xcode- > Window- > Organizer) выберите архив для проверки, нажмите "Экспортировать..." и выберите "Экспорт для Enterprise или Ad-Hoc Deployment". Это создаст локальную копию файла .ipa для вашего приложения. 2. Найдите этот файл .ipa и измените его расширение на .zip. 3. Разверните .zip файл. Это создаст папку Payload, содержащую ваш пакет .app. 4. Откройте терминал и измените рабочий каталог на верхний уровень вашего пакета .app cd path/to/Полезная нагрузка /your.app

  1. Используйте инструмент поиска, чтобы найти файлы Assets.car в вашем пакете .app, как показано ниже: найти. -name 'Assets.car'

  2. Используйте инструмент assetutil для поиска любых 16-разрядных или P3-активов в каждом Assets.car, которое имеет ваше приложение, как показано ниже.: sudo xcrun --sdk iphoneos assetutil --info/path/to/a/Assets.car > /tmp/Assets.json

  3. Изучите полученный /tmp/Assets.json и найдите любое содержимое, содержащее "DisplayGamut": "P3" и связанное с ним "Имя". Это будет имя вашего набора изображений, содержащего один или более 16-разрядных или P3-активов.

  4. Замените эти активы 8-разрядными/sRGB-ресурсами, а затем перестройте свое приложение.

Часть 2: отрегулируйте цветовой профиль изображений, чтобы хорошо играть с iTunesConnect

Откройте "Информация" файла-нарушителя (CMD + I). Проверьте свой цветовой профиль.

Цветовой профиль, который не был принят

Я не знаю, какие профили точны, а какие нет, но мой "Adobe RGB (1998)", безусловно, получил отказ. Поэтому я использовал "Color Synch Utility" (поставляется с OSX). (Щелкните правой кнопкой мыши по изображению, откройте его...)

Теперь у вас есть возможность назначить другой цветной профиль: Назначение другого цветового профиля с помощью утилиты Color Synch

Теперь, если вы снова осмотрите свое изображение, оно должно выглядеть так: Цветовой профиль после преобразования

Теперь замените предыдущие изображения и повторите попытку. Это сработало для меня, я надеюсь, что это поможет вам.

Ответ 2

Благодаря @fancy ответу я понял, что проблема была в изображении "пространство", которое имеет значение RGB 16 бит. Его необходимо изменить на 8 бит sRGB. Я должен поддерживать клиентов iOS7, поэтому я не могу просто изменить цель развертывания до 9.3.

Так что я сделал: 1) Я использовал простой script (см. Ниже), чтобы рекурсивно найти все *.png изображения и изменить свойство. 2) Затем я перестрою файл .ipa. Приложение Loader не обнаружило ошибок.

#!/bin/sh

files=`find . -name "*.png"`

for i in ${files[@]}; do
    SOURCE_FILE=${i}
    DESTINATION_FILE=$SOURCE_FILE
    sips \
    --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' \
    "$SOURCE_FILE" \
    --out "$DESTINATION_FILE"
done

exit 0

Ответ 3

Вдохновленный Ignacio, я смог преобразовать все изображения AdobeRGB1998 в sRGB изображения со следующими сценариями

Установить imagemagick

brew update
brew install imagemagick --with-little-cms --with-little-cms2

Найти изображения и преобразовать их в профиль sRGB

cd path>to>Images.xcassets>folder
find . -name '*.png' -exec convert "{}" \
-profile    "/System/Library/ColorSync/Profiles/AdobeRGB1998.icc" \
-profile "/System/Library/ColorSync/Profiles/sRGB Profile.icc" \
"{}"  \;

Если у вас нет AdobeRGB1988.icc на вашем Mac

Рассмотрите возможность загрузки здесь AdobeRGB1998 https://www.adobe.com/support/downloads/iccprofiles/iccprofiles_mac.html https://www.adobe.com/digitalimag/adobergb.html

Ответ 4

Пробовал с целью развертывания iOS 8.2 работал у меня. Согласно Apple "Вам нужно будет переместить целевую ОС на 8.2. Здесь было несколько проблем. Тот, который вы видите, это то, что Assets.car, сгенерированный с целью развертывания 8.3 или 8.4, неверно включает в себя ключ, который срабатывает проверка iTC. Это не связано с расширениями, которые могут или не могут существовать в родительском приложении (там, где была отдельная проблема).

Сказав, что с выходом iOS 10 в ближайшее время наша рекомендация будет заключаться в том, чтобы переместить вашу цель развертывания на 9.x. "

Ответ 5

Я нашел оскорбительные образы с шагами @fancy, но я не смог изменить профиль цвета моих изображений с помощью вышеупомянутых решений.

Я пробовал с помощью ColorSync, Preview, и мне не удалось изменить цветной профиль нарушающих изображений.

Наконец, я смог изменить профиль цвета, используя команду convert.

convert my_image.png -profile /path/to/AdobeRGB1998.icc -profile /path/to/sRGB_v4_ICC_preference_displayclass.icc my_image.png

После этого соответствующий профиль цвета (sRGB...) был показан в Finder > File > Get Info и, наконец, я смог загрузить свое приложение с помощью Application Loader.

Если вы хотите попробовать этот метод:

1) Загрузите ImageMagick с помощью brew:

brew update
brew install imagemagick --with-little-cms --with-little-cms2

2) Загрузите цветовые профили:

3) Выполните следующую команду:

convert input_image_name.ext -profile /path/to/AdobeRGB1998.icc -profile /path/to/sRGB_v4_ICC_preference_displayclass.icc output_image_name.ext

Ответ 6

  • Найдите в своих значках каталога активов атрибут Adobe RGB (1998).
  • Замените его значком с атрибутом sRGB IEC61966-2.1

потому что его нужно изменить на 8 бит sRGB

Ответ 7

Как только вы идентифицируете изображения в качестве объяснения в своем ответе, вы можете использовать приложение "Просмотр", чтобы изменить профиль цвета (в приложении "Просмотр", перейдите в "Инструменты → " Назначить профиль... ") из" Adobe RGB (1998) ) "(или что-то вроде вашего профиля) на" sRGB IEC61966-2.1 "... тогда вам нужно импортировать измененные изображения в свой проект и перестроить его.

Ответ 8

используйте эту команду для установки imagemagick

brew update
brew install imagemagick --with-little-cms --with-little-cms2

теперь используйте следующие шаги для проверки 16-ти основных ресурсов, используемых в проекте:

1) Change the extension of .ipa to .zip. 

2) Expand the .zip file. This will produce a Payload folder containing your .app bundle. 

3) Open a terminal and change the working directory to the top level of your .app bundle cd path/to/Payload/your.app

4) find . -name "*.png" -print0 | xargs -0 identify | grep "16-bit" | awk '{print $1;}' | xargs mogrify -depth 8

  this command will show you corrupted images. Replace these images with 8 depth images.

Ответ 9

Если вам нужно решить проблему на временной основе, просто увеличьте ее минимальную цель разработки до iOS 9.0, и эта проблема будет решена.

Ответ 10

Удалось решить с помощью шагов ff:

  • Двойной проверил все мои активы и удостоверился, что нет P3, используя ответ @fancy.
  • Вручную просмотрите объекты Xcode для цветового пространства без RGB.
  • Задайте цель развертывания с 8.3 до 8.2

Ответ 11

Соберите копию всех ваших Png для папки в папке

Для примера. Назовите изображение папки и поместите его на рабочий стол

Затем перейдите в терминал и измените каталог в папку, в которую вы переместили фотографии в

cd рабочий стол/изображение

Запустить это

sips -g all *.png > print.txt

Вы найдете файл с именем Print.txt, созданный в папке (внутри изображения)

Откройте его и найдите в нем для

bitsPerSample:

Если вы обнаружите, что номер рядом с ним отличается от 8, тогда вы получили ошибочное изображение

Открыть это изображение (или изображения) В окне "Предварительный просмотр" затем экспортируйте его в один и тот же формат и убедитесь, что выбрана 8-битная цветовая глубина (обратите внимание, если вы выбрали несколько изображений, которые вы не видите. Выбор глубины цвета, но все же Работа)

Скопируйте и замените новые изображения с помощью Old Once.

Также сделайте следующее как дополнение к тому, что я написал ранее

Этот шаг применяется для всех фотографий Открыть каждый или все фотографии в приложении "Просмотр" Нажмите "Вкл." > "Настроить размер" > "После этого установите для dpi значение 72 И Tools > Assign Profile > Then Выберите Generic RGB Profile

Thats All

Ответ 12

Также сделайте следующее как дополнение к тому, что я написал ранее

Этот шаг применяется для всех фотографий Открыть каждый или все фотографии в приложении "Просмотр" Нажмите "Сервис" > "Настроить размер" > "Отметьте" на стр. 72
И Tools > Assign Profile > Then Выберите Generic RGB Profile

Ответ 13

Фиксация одной командой через терминал:

find . -type f -name '*.png' -print0 | while IFS= read -r -d '' file; do sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' "$file" --out "$file"; done