web-dev-qa-db-fra.com

Assets.car ne peut pas contenir d'actifs 16 bits ou P3 si l'application prend en charge iOS 8 ou une version antérieure.

Quelqu'un at-il rencontré cette erreur lors du téléchargement sur iTunesConnect? Le processus de téléchargement arrive à "Vérification des actifs avec iTunes store", le message d'erreur suivant s'affiche:

 enter image description here

Je travaille avec xCode8, en intégrant une application d'autocollant personnalisé dans une application iOS existante. J'ai temporairement supprimé les ressources d'autocollants et inclus des icônes de message d'exemple Apple pour vérifier si ce sont mes ressources d'autocollants qui étaient à l'origine du problème. Toutefois, lors de la validation, je reçois la même erreur. Des pensées? 

35
James Peyton

En bref: Votre lot contient des images dont le format n'est pas pris en charge. Vous pouvez ajuster le format de ces images ou augmenter la version iOS minimale de votre cible. Gardez à l'esprit que ce dernier n'est qu'un correctif et probablement pas ce que vous voulez faire, car cela réduirait votre base d'utilisateurs potentiels en raison d'un problème très soluble.

Partie 1 expliquera comment déterminer les images incriminées.

Partie 2 vous montre comment régler le format d'image pour qu'iTunesConnect en soit satisfait. Si vous ne possédez qu'une poignée d'images, vous pouvez passer à la partie 2 et les vérifier manuellement.

Partie 1: Identifiez les images incriminées:

Le Forum des développeurs Apple contient un fil conducteur à ce sujet: https://forums.developer.Apple.com/thread/60919

La solution acceptée est la suivante:

Comment résoudre "ERREUR ITMS-90682: Bundle non valide - Le catalogue d'actifs de 'Payload/XXXXX/Assets.car' ne peut pas contenir d'actifs 16 bits ou P3 si l'application prend en charge iOS 8 ou une version antérieure."

Avec Xcode 8 GM, cette erreur se produira si vous incluez des actifs 16 bits ou P3 dans une soumission d'application ciblant les versions iOS antérieures à iOS 9.3. Si votre application nécessite une fonctionnalité couleur étendue, vous devez modifier votre cible de déploiement sur iOS 9.3 ou version ultérieure. Si votre application ne nécessite pas une fonctionnalité couleur étendue et que vous souhaitez la déployer dans des versions iOS plus anciennes, vous devez remplacer tous les actifs 16 bits ou P3 par des actifs sRGB 8 bits.

Vous pouvez rechercher des actifs 16 bits ou P3 en exécutant «assetutil» sur le catalogue d'actifs nommé dans le message d'erreur d'iTunes Connect. Les étapes suivantes décrivent le processus: 1. Créez un fichier .ipa inspectable. Dans l'organiseur Xcode (Xcode-> Fenêtre-> Organiseur), sélectionnez une archive à inspecter, cliquez sur "Exporter ...", puis choisissez "Exporter pour le déploiement en entreprise ou ad hoc". Cela créera une copie locale du fichier. Fichier ipa pour votre application . 2. Localisez ce fichier .ipa et changez son extension en .Zip . 3. Développez le fichier .Zip afin de générer un dossier Payload contenant votre lot .app . 4. Ouvrez un terminal et modifiez le répertoire de travail au niveau supérieur de votre ensemble .app Cd chemin/à/Payload/your.app

  1. Utilisez l'outil de recherche pour localiser les fichiers Assets.car dans votre lot .app comme indiqué ci-dessous: trouver . -name 'Assets.car'

  2. Utilisez l'outil assetutil pour rechercher des actifs 16 bits ou P3, dans chaque fichier Assets.car de votre application, comme indiqué ci-dessous. : Sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car> /tmp/Assets.json

  3. Examinez le fichier /tmp/Assets.json obtenu et recherchez tout contenu contenant «DisplayGamut»: «P3» et son «nom» associé. Ce sera le nom de votre jeu d'images contenant un ou plusieurs actifs 16 bits ou P3.

  4. Remplacez ces actifs par des actifs 8 bits/sRGB, puis reconstruisez votre application.

Partie 2: Ajustez le profil de couleur des images pour lire Nice avec iTunesConnect

Ouvrez les "Informations" du fichier incriminé (CMD + I) . Vérifiez votre profil de couleur.

 Color profile that was not accepted

Je ne sais pas exactement quels sont les profils qui conviennent et ceux qui ne le sont pas, mais mon "Adobe RGB (1998)" a certainement été rejeté . J'ai donc utilisé "Color Synch Utility" (fourni avec OSX). (Clic droit sur l'image, ouvrir avec ...)

En bas, vous avez la possibilité d’attribuer un profil de couleur différent:  Assigning a different color profile with Color Synch Utility

Maintenant, si vous inspectez à nouveau votre image, elle devrait ressembler à ceci:  Color profile after converting

Maintenant, remplacez vos images précédentes et essayez à nouveau… .. Cela a fonctionné pour moi, j'espère que cela vous aidera.

36
fancy

Grâce à @fancy reponse, j’ai bien compris que ce problème relevait de la propriété "space" de la propriété d´image qui présente une valeur RVB 16 bits. Il doit être changé en sRGB 8 bits. Je dois prendre en charge les clients iOS7, donc je ne peux pas simplement changer la cible de déploiement en 9.3.

Donc ce que j'ai fait: 1) J'ai utilisé un script simple (voir ci-dessous) pour rechercher récursivement toutes les images * .png et changer de propriété . 2) Ensuite, j'ai reconstruit le fichier .ipa. Application Loader n'a pas montré d'erreur. 

#!/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
24
Roman Figurin

Inspiré par Ignacio, j'ai pu convertir toutes les images AdobeRGB1998 en images sRGB à l'aide des scripts suivants

Installer imagemagick

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

Rechercher des images et les convertir en profil 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" \
"{}"  \;

Si vous n'avez pas AdobeRGB1988.icc sur votre mac

Pensez à le télécharger ici AdobeRGB1998 https://www.Adobe.com/support/downloads/iccprofiles/iccprofiles_mac.htmlhttps://www.Adobe.com/digitalimag/adobergb.html

8
Jibeex

J’ai essayé avec la cible de déploiement, iOS 8.2 a fonctionné pour moi… __. Selon Apple "Vous devrez déplacer le système d’exploitation cible à la version 8.2. Plusieurs problèmes sont en jeu ici. Assets.car généré avec une cible de déploiement de 8.3 ou 8.4 inclut de manière incorrecte une clé qui interrompt la validation iTC, sans lien avec des extensions pouvant ou non exister dans l'application parent (en cas de problème distinct).

Cela dit, avec la mise en service prochaine d’iOS 10, nous vous recommandons de déplacer votre cible de déploiement vers la version 9.x. "

4
Chahal
  1. Trouvez dans votre catalogue d’actifs des icônes avec l’attribut Adobe RGB (1998).
  2. Remplacez-le par l'icône avec l'attribut sRGB IEC61966-2.1

car, il doit être changé en sRGB 8 bits

1
Georgy Brusnikin

Une fois que vous avez identifié les images comme expliqué dans sa réponse, vous pouvez utiliser l'application Aperçu pour modifier le profil de couleur (dans l'application Aperçu, accédez à Outils -> Attribuer un profil ...) à partir de "Adobe RGB (1998)" ( ou quelle que soit l'image de votre profil) à "sRGB IEC61966-2.1" ... il vous suffit alors d'importer les images modifiées de votre projet et de le reconstruire.

1
jankoesp

utilisez cette commande pour installer imagemagick

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

utilisez maintenant les étapes suivantes pour vérifier 16 actifs de profondeur utilisés dans le projet:

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.
1
Himanshu Mahajan

J'ai trouvé les images incriminées avec les étapes @fancy mais je ne pouvais pas modifier le profil de couleurs de mes images avec les solutions ci-dessus. 

J'ai essayé avec ColorSync, Preview et je n'ai pas pu modifier le profil de couleur des images incriminées.

Enfin, je pourrais changer le profil de couleur en utilisant la commande convert.

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

Après cela, le profil de couleur approuvé (sRGB ...) a été affiché dans Finder> Fichier> Obtenir des informations et j'ai enfin pu télécharger mon application à l'aide d'Application Loader.

Si vous voulez essayer cette méthode:

1) Téléchargez ImageMagick en utilisant une infusion:

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

2) Téléchargez les profils de couleurs:

3) Exécutez la commande suivante:

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

Faites également ce qui suit en tant qu'addition à ce que j'ai déjà signalé

Cette étape est appliquée à toutes les photos Ouvrez chaque ou toutes les photos dans l’application de prévisualisation Cliquez sur Outils> Ajuster la taille> Définissez ensuite dpi sur 72.
Et Outils> Attribuer un profil> Sélectionnez ensuite un profil RVB générique.

0
Ahmed El-Bermawy

Si vous devez résoudre le problème sur une base temporaire, augmentez simplement sa cible de développement minimale sur iOS 9.0 et ce problème sera résolu.

0
Masroor

Recueillir une copie de tous vos PNG dans un dossier 

Pour ex. Nommez l'image du dossier et placez-la sur le bureau.

Ensuite, allez au terminal et changez le répertoire dans le dossier dans lequel vous avez déplacé les photos

cd desktop/image

Lance ça

sips -g all * .png> print.txt

Vous trouverez un fichier nommé Print.txt est créé dans le dossier (image intérieure)

Ouvrez-le et recherchez-le 

bitsPerSample: 

Si vous trouvez que le nombre suivant est différent de 8, alors vous avez une image erronée 

Ouvrez cette image (ou images) dans l'application de prévisualisation, puis exportez-la dans le même format et assurez-vous de sélectionner une profondeur de couleur de 8 bits (Remarque: si vous sélectionnez plusieurs images, la sélection de la profondeur de couleur ne s'affiche pas mais elle fonctionne toujours)

Copiez et remplacez les nouvelles images par l’ancienne fois. 

Faites également ce qui suit en tant qu'addition à ce que j'ai déjà signalé

Cette étape s'applique à toutes les photos Ouvrez chaque ou toutes les photos dans l'application Aperçu Cliquez sur Outils> Ajuster la taille> Définissez ensuite ppp sur 72 Et Outils> Attribuer un profil> Puis sélectionnez Profil RVB générique.

C'est tout

0
Ahmed El-Bermawy

A été capable de résoudre en utilisant les étapes ff:

  1. Vérifiez tous mes actifs et vérifiez qu'il n'y a pas de P3 en utilisant @fancy answer.
  2. Rechercher manuellement dans les actifs Xcode pour un espace colorimétrique non-RVB.
  3. Définir la cible de déploiement de 8.3 à 8.2
0
Teffi

Fixation par une commande via terminal:

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
0
Igor

Ma réponse est simple: recherchez des images couleur 16 bits et convertissez-les en couleurs 8 bits. S'il ne s'agit pas de 16 bits, il ne sera pas converti à nouveau car sips -m ... n'est pas idempotent , ce qui signifie que l'image convertie sera modifiée à nouveau lorsqu'elle sera exécutée à nouveau sur le même fichier image.

# before run the commands, cd to the folder which includes all suspicious images.
while IFS= read -d '' -r file; do if [ $(file "$file" | grep -c '16-bit') -eq 1 ]; then sips -m '/System/Library/Colorsync/Profiles/sRGB Profile.icc' "$file"; fi done < <(find . -print0)

Soyez plus clair, enregistrez-le en tant que fichier shell bash comme suit,

#/bin/bash

# Before run the Shell script, 
# cd to the folder which includes all suspicious images

while IFS= read -d '' -r file; do 
  if [ $(file "$file" | grep -c '16-bit') -eq 1 ]; then
    sips -m '/System/Library/Colorsync/Profiles/sRGB Profile.icc' "$file"; 
  fi 
done < <(find . -print0)
0
DawnSong