it-swarm.com.de

Assets.car kann keine 16-Bit- oder P3-Assets enthalten, wenn die App iOS 8 oder früher unterstützt?

Hat jemand diesen Fehler beim Hochladen auf iTunesConnect festgestellt? Beim Hochladen von Dateien wird nach "Bestätigen von Assets mit dem iTunes Store" der folgende Fehler angezeigt:

 enter image description here

Ich arbeite mit xCode8 und binde eine benutzerdefinierte Sticker-App in eine vorhandene iOS-Anwendung ein. Ich habe vorübergehend Aufkleber-Assets entfernt und Apple-Beispielnachrichtensymbole hinzugefügt, um zu testen, ob meine Aufkleber-Assets das Problem verursacht haben. Beim Überprüfen erhalte ich jedoch dieselbe Fehlermeldung. Irgendwelche Gedanken? 

35
James Peyton

Kurz: In Ihrem Bundle gibt es Bilder, die ein nicht unterstütztes Format haben . Sie können entweder das Format dieser Bilder anpassen oder die Mindest-iOS-Version Ihres Ziels erhöhen. Denken Sie daran, dass das letztere nur ein Hotfix ist und wahrscheinlich nicht das, was Sie tun möchten, da dies Ihre potenzielle Benutzerbasis aufgrund eines sehr lösbaren Problems verringern würde.

Teil 1 erklärt, wie Sie herausfinden können, welche Bilder die beleidigenden sind.

Teil 2 zeigt, wie Sie das Bildformat so anpassen, dass iTunesConnect damit zufrieden ist. Wenn Sie nur eine Handvoll Bilder haben, können Sie mit Teil 2 fortfahren und diese manuell überprüfen.

Teil 1: Identifizieren Sie die störenden Bilder:

Das Apple Developer Forum hat einen Thread zu diesem Thema: https://forums.developer.Apple.com/thread/60919

Die akzeptierte Lösung lautet wie folgt:

Fehlerbehebung "ERROR ITMS-90682: Invalid Bundle - Der Asset-Katalog unter" Payload/XXXXX/Assets.car "kann keine 16-Bit- oder P3-Assets enthalten, wenn die App iOS 8 oder eine frühere Version unterstützt."

Bei Xcode 8 GM tritt dieser Fehler auf, wenn Sie 16-Bit- oder P3-Assets in eine App einreichen, die auf iOS-Releases vor iOS 9.3 ausgerichtet ist. Wenn für Ihre App eine breite Farbfunktionalität erforderlich ist, müssen Sie Ihr Implementierungsziel auf iOS 9.3 oder höher ändern. Wenn Ihre App keine Wide-Color-Funktionalität erfordert und Sie sie auf älteren iOS-Versionen bereitstellen möchten, sollten Sie alle 16-Bit- oder P3-Assets durch 8-Bit-sRGB-Assets ersetzen.

Sie können 16-Bit- oder P3-Assets finden, indem Sie "assetutil" im Asset-Katalog ausführen, der in der Fehlermeldung von iTunes Connect genannt wird. Die folgenden Schritte beschreiben den Prozess: 1. Erstellen Sie eine inspizierbare .ipa-Datei. Wählen Sie im Xcode Organizer (Xcode-> Window-> Organizer) ein zu inspizierendes Archiv aus, klicken Sie auf "Exportieren ..." und wählen Sie "Exportieren für Unternehmen oder Ad-hoc-Bereitstellung". Dadurch wird eine lokale Kopie von Xcode Organizer erstellt. ipa-Datei für Ihre App . 2. Suchen Sie diese .ipa-Datei und ändern Sie die Erweiterung in .Zip . 3. Erweitern Sie die .Zip-Datei. Dadurch wird ein Payload-Ordner mit Ihrem .app-Paket ..__ erzeugt. 4. Öffnen Sie ein Terminal und wechseln Sie in das Arbeitsverzeichnis zur obersten Ebene Ihres .app-Bundles Cd-Pfad/zu/Payload/your.app

  1. Verwenden Sie das Suchwerkzeug, um Assets.car-Dateien in Ihrem .app-Bundle wie folgt zu finden: finden . -name 'Assets.car'

  2. Verwenden Sie das Assetutil-Tool, um 16-Bit- oder P3-Assets in jedem Assets.car Ihrer Anwendung zu finden, wie in der folgenden Abbildung gezeigt. : Sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car> /tmp/Assets.json

  3. Überprüfen Sie die resultierende Datei /tmp/Assets.json und suchen Sie nach Inhalten, die "DisplayGamut" enthalten: "P3" und den zugehörigen "Namen". Dies ist der Name Ihres Imagesets, das ein oder mehrere 16-Bit- oder P3-Assets enthält.

  4. Ersetzen Sie diese Assets durch 8-Bit/sRGB-Assets, und erstellen Sie anschließend Ihre App neu.

Teil 2: Anpassen des Farbprofils der Bilder für die Wiedergabe von Nice mit iTunesConnect

Öffnen Sie die "Informationen" der fehlerhaften Datei (CMD + I) . Überprüfen Sie Ihr Farbprofil.

 Color profile that was not accepted

Ich weiß nicht, welche Profile genau in Ordnung sind und welche nicht, aber mein "Adobe RGB (1998)" wurde definitiv abgelehnt Also habe ich "Color Synch Utility" (mit OSX) verwendet. (Rechtsklick auf das Bild, öffnen mit ...)

Jetzt haben Sie unten die Möglichkeit, ein anderes Farbprofil zuzuordnen:  Assigning a different color profile with Color Synch Utility

Wenn Sie nun Ihr Bild erneut prüfen, sollte es folgendermaßen aussehen:  Color profile after converting

Ersetzen Sie jetzt Ihre vorherigen Bilder und versuchen Sie es erneut. Dies hat für mich funktioniert, ich hoffe, das hilft Ihnen.

36
fancy

Dank der @ fancy-Antwort habe ich verstanden, dass das Problem im Bildbereich "space" lag, der einen RGB-Wert von 16bit hat. Es muss in 8bit sRGB geändert werden. Ich muss iOS7-Clients unterstützen, daher kann ich das Implementierungsziel nicht einfach auf 9.3 ändern.

Was ich getan habe: 1) Ich verwendete ein einfaches Skript (siehe unten), um rekursiv alle * .png-Bilder zu finden und die Eigenschaften zu ändern . Der Anwendungslader hat keinen Fehler angezeigt. 

#!/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

Inspiriert von Ignacio konnte ich alle AdobeRGB1998-Bilder mit den folgenden Skripts in sRGB -Dateien konvertieren

Install imagemagick

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

Bilder suchen und in sRGB-Profil konvertieren

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" \
"{}"  \;

Wenn Sie AdobeRGB1988.icc nicht auf Ihrem Mac haben

Sie können es hier herunterladen. AdobeRGB1998 https://www.Adobe.com/support/downloads/iccprofiles/iccprofiles_mac.htmlhttps://www.Adobe.com/digitalimag/adobergb.html

8
Jibeex

Ich habe versucht, mit dem Implementierungsziel iOS 8.2 zu arbeiten, das für mich funktioniert hat . Wie von Apple "Sie müssen das Zielbetriebssystem auf 8.2 zurückstellen. Hier gab es mehrere Probleme. Das ist das, was Sie sehen Assets.car, das mit einem Bereitstellungsziel von 8.3 oder 8.4 generiert wurde, enthält fälschlicherweise einen Schlüssel, der die iTC-Validierung auslöst. Dies hat nichts mit Erweiterungen zu tun, die möglicherweise in der übergeordneten App vorhanden sind oder nicht (wo ein separates Problem auftrat).

Da iOS 10 jedoch bald in Betrieb genommen wird, empfehlen wir Ihnen, Ihr Implementierungsziel auf 9.x zu verschieben. "

4
Chahal
  1. Suchen Sie in Ihrem Bestandskatalog Symbole mit dem Attribut Adobe RGB (1998).
  2. Ersetzen Sie es durch das Symbol mit dem Attribut sRGB IEC61966-2.1

weil es zu 8bit sRGB geändert werden muss

1

Wenn Sie die Bilder in ihrer Antwort als fantastisch erklärt haben, können Sie mit der Vorschau-App das Farbprofil ändern (in der Vorschau-App wählen Sie Extras -> Profil zuweisen ...) aus "Adobe RGB (1998)" ( oder was auch immer Ihr Profilbild ist) zu "sRGB IEC61966-2.1" ... dann müssen Sie nur die geänderten Bilder in Ihr Projekt importieren und neu erstellen.

1
jankoesp

verwenden Sie diesen Befehl, um Imagemagick zu installieren

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

führen Sie nun die folgenden Schritte aus, um die im Projekt verwendeten 16 Tiefenelemente zu überprüfen:

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

Ich habe die störenden Bilder mit den @ fancy-Schritten gefunden, aber ich konnte das Farbprofil meiner Bilder mit den obigen Lösungen nicht ändern. 

Ich habe es mit ColorSync und Preview versucht, und ich konnte das Farbprofil der Bilder nicht ändern.

Schließlich konnte ich das Farbprofil mit dem Befehl convert ändern.

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

Danach wurde das entsprechende Farbprofil (sRGB ...) unter Finder> Datei> Informationen anzeigen angezeigt. Schließlich konnte ich meine App mit dem Application Loader hochladen.

Wenn Sie diese Methode ausprobieren möchten:

1) Laden Sie ImageMagick mit Brew herunter:

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

2) Laden Sie die Farbprofile herunter:

3) Führen Sie den folgenden Befehl aus:

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

Tun Sie auch Folgendes als eine Ergänzung zu dem, was ich früher geschrieben habe

Dieser Schritt wird für alle Fotos angewendet Alle oder alle Fotos in der Vorschau-App öffnen. __ Klicken Sie auf Werkzeuge> Größe anpassen> Stellen Sie dpi auf 72 ein
Und Tools> Profil zuweisen> Wählen Sie dann Generisches RGB-Profil aus

0

Wenn Sie das Problem vorübergehend lösen müssen, erhöhen Sie das Mindestentwicklungsziel auf iOS 9.0. Dieses Problem wird behoben.

0
Masroor

Sammle eine Kopie aller Png´s für einen Ordner 

Für Bsp. Benennen Sie das Ordnerbild und legen Sie es auf dem Desktop ab

Gehen Sie dann zum Terminal und ändern Sie das Verzeichnis in den Ordner, in den Sie die Fotos verschoben haben

cD-Desktop/Bild

Führen Sie das aus

sips -g all * .png> print.txt

Sie finden eine Datei namens Print.txt, die im Ordner erstellt wurde (im Bild).

Öffne es und suche darin 

bitsPerSample: 

Wenn Sie feststellen, dass die nächste Nummer anders als 8 ist, dann haben Sie das falsche Bild 

Dieses Bild (oder Bilder) in der Vorschau-App öffnen, dann in dasselbe Format exportieren und sicherstellen, dass die 8-Bit-Farbtiefe ausgewählt wird (Hinweis: Wenn Sie mehrere Bilder auswählen, wird die Farbtiefenauswahl nicht angezeigt, aber es funktioniert immer noch.)

Kopieren Sie die neuen Bilder und ersetzen Sie sie durch die alten. 

Tun Sie auch Folgendes als eine Ergänzung zu dem, was ich früher geschrieben habe

Dieser Schritt wird für alle Fotos angewendet Alle oder alle Fotos in der Vorschau-App öffnen. __ Klicken Sie auf Extras> Größe anpassen> Dann setzen Sie dpi auf 72. Und anschließend Extras> Profil zuweisen> und wählen Sie Generisches RGB-Profil aus

Das ist alles

0

Konnte mit den ff-Schritten aufgelöst werden:

  1. Überprüfen Sie alle meine Assets und stellen Sie mit @fancy answer sicher, dass kein P3 vorhanden ist.
  2. Sehen Sie sich die Xcode-Elemente manuell für den Nicht-RGB-Farbraum an.
  3. Legen Sie das Implementierungsziel von 8.3 auf 8.2 fest
0
Teffi

Fixierung durch einen Befehl über das 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

Meine Antwort ist einfach: Finden Sie 16-Bit-Farbbilder und konvertieren Sie sie in 8-Bit-Tiefenfarbenbilder. Wenn es nicht 16-Bit ist, wird es nicht erneut konvertiert, da sips -m ... nicht idempotent ist. Das konvertierte Bild wird also erneut geändert, wenn es in derselben Bilddatei erneut ausgeführt wird.

# 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)

Speichern Sie die Datei als Bash-Shell-Datei wie folgt

#/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