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:
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?
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
Verwenden Sie das Suchwerkzeug, um Assets.car-Dateien in Ihrem .app-Bundle wie folgt zu finden: finden . -name 'Assets.car'
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
Ü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.
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.
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:
Wenn Sie nun Ihr Bild erneut prüfen, sollte es folgendermaßen aussehen:
Ersetzen Sie jetzt Ihre vorherigen Bilder und versuchen Sie es erneut. Dies hat für mich funktioniert, ich hoffe, das hilft Ihnen.
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
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
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. "
weil es zu 8bit sRGB geändert werden muss
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.
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.
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
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
Wenn Sie das Problem vorübergehend lösen müssen, erhöhen Sie das Mindestentwicklungsziel auf iOS 9.0. Dieses Problem wird behoben.
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
Konnte mit den ff-Schritten aufgelöst werden:
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
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)