ITunesConnectにアップロードするときに誰でもこのエラーに遭遇しますか。アップロードプロセスが「iTunesストアでアセットを検証する」に到達すると、次のエラーが表示されます。
私は既存のiOSアプリケーション内にカスタムステッカーアプリを埋め込むxCode8を使用しています。ステッカーアセットを一時的に削除し、Appleサンプルメッセージアイコンを含めて、ステッカーアセットが問題の原因であるかどうかをテストしますが、検証時に同じエラーが表示されます。
要するに:バンドルには、サポートされていない形式の写真があります。これらの画像の形式を調整するか、ターゲットの最小iOSバージョンを増やすことができます。後者は修正プログラムにすぎず、おそらくあなたがしたいことではないことに注意してください。非常に解決可能な問題のために潜在的なユーザーベースが減少するからです。
パート1では、どの写真が問題のある写真であるかを見つける方法を説明します。
パート2では、iTunesConnectが満足できるように画像形式を調整する方法を示します。画像の数が少ない場合は、パート2に進んで手動で確認できます。
パート1:問題のある画像を特定する:
Apple開発者フォーラムには次のスレッドがあります: https://forums.developer.Apple.com/thread/60919
受け入れられる解決策は次のとおりです。
解決方法「エラーITMS-90682:無効なバンドル-アプリがiOS 8以前をサポートしている場合、「Payload/XXXXX/Assets.car」のアセットカタログに16ビットまたはP3アセットを含めることはできません。」
Xcode 8 GMでは、iOS 9.3より前のiOSリリースを対象とするアプリ送信に16ビットまたはP3アセットを含めると、このエラーが発生します。アプリにワイドカラー機能が必要な場合は、展開ターゲットをiOS 9.3以降に変更する必要があります。アプリがワイドカラー機能を必要とせず、古いiOSバージョンにデプロイする場合は、すべての16ビットまたはP3アセットを8ビットsRGBアセットに置き換える必要があります。
ITunes Connectのエラーメッセージで指定されたアセットカタログで「assetutil」を実行すると、16ビットまたはP3のアセットを見つけることができます。次の手順でプロセスの概要を説明します。1.検査可能な.ipaファイルを作成します。 Xcodeオーガナイザー(Xcode-> Window-> Organizer)で、検査するアーカイブを選択し、「エクスポート...」をクリックし、「エンタープライズまたはアドホック展開用にエクスポート」を選択します。これにより、のローカルコピーが作成されます。アプリのipaファイル2.その.ipaファイルを見つけて、拡張子を.Zipに変更します3. .Zipファイルを展開しますこれにより、.appバンドルを含むペイロードフォルダーが生成されます4.ターミナルを開いて、 .appバンドルの最上位への作業ディレクトリcd path/to/Payload/your.app
以下に示すように、検索ツールを使用して、.appバンドル内のAssets.carファイルを見つけます。 -name 'Assets.car'
以下に示すように、assetutilツールを使用して、アプリケーションの各Assets.carで16ビットまたはP3アセットを見つけます。 :sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car> /tmp/Assets.json
結果の/tmp/Assets.jsonを調べて、「DisplayGamut」:「P3」とそれに関連する「Name」を含むコンテンツを探します。これは、1つ以上の16ビットまたはP3アセットを含むイメージセットの名前になります。
これらのアセットを8ビット/ sRGBアセットに置き換えてから、アプリを再構築します。
パート2:iTunesConnectでニースを再生するために画像のカラープロファイルを調整します
問題のあるファイルの「情報」を開きます(CMD + I)。カラープロファイルを確認してください。
どのプロファイルが正確で、どのプロファイルがそうでないかはわかりませんが、私の「Adobe RGB(1998)」は確かに拒否されました。そこで、「Color Synch Utility」(OSXに付属)を使用しました。 (画像を右クリックして、...で開きます)
これで、下部に別のカラープロファイルを割り当てることができます:
ここで、以前の画像を置き換えて、もう一度やり直してください。これは私のために働いた、私はこれがあなたを助けることを願っています。
@fancy answerのおかげで、問題はRGB 16ビットの値を持つ画像のプロパティ「スペース」にあることがわかりました。 8ビットsRGBに変更する必要があります。 iOS7クライアントをサポートする必要があるため、展開ターゲットを9.3に変更することはできません。
だから私がやったこと:1)単純なスクリプト(下記参照)を使用して、すべての* .png画像を再帰的に見つけ、プロパティを変更しました。 2)次に、.ipaファイルを再構築します。 Application 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
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" \
"{}" \;
MacにAdobeRGB1988.iccがない場合
こちらからダウンロードしてくださいAdobeRGB1998 https://www.Adobe.com/support/downloads/iccprofiles/iccprofiles_mac.htmlhttps://www.Adobe.com/digitalimag/adobergb.html
配備ターゲットで試してみましたiOS 8.2は私のために働きました。 Apple "「ターゲットOSを8.2に戻す必要があります。ここで複数の問題が発生しました。表示されている問題は、Assets.carがDeployment 8.3または8.4のターゲットには、iTC検証をトリップするキーが誤って含まれていますが、これは、親アプリに存在する場合と存在しない場合がある拡張機能とは無関係です(別の問題があった場合)。
そうは言っても、iOS 10がまもなく公開されるので、展開ターゲットを9.xに移動することをお勧めします。」
なぜなら、8bit sRGBに変更する必要があるからです
返信で説明されている派手な画像を特定したら、プレビューアプリを使用して、「Adobe RGB(1998)」からカラープロファイルを変更できます(プレビューアプリで、ツール->プロファイルの割り当て...に移動します)(またはあなたのプロフィール画像は何でも)「sRGB IEC61966-2.1」に...その後、あなたはあなたのプロジェクトに修正された画像をインポートして再構築するだけです。
これらのコマンドを使用して、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.
@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 ...)が[ファインダー]> [ファイル]> [情報を見る]に表示され、最終的にApplication Loaderを使用してアプリをアップロードできました。
この方法を試してみたい場合:
1)brewを使用してImageMagickをダウンロードします。
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
また、以前に投稿した内容に加えて、次のことも行います
この手順はすべての写真に適用されますプレビューアプリで各写真またはすべての写真を開きます[ツール]> [サイズの調整]をクリックし、dpiを72に設定します
ツール>プロファイルの割り当て>次に、汎用RGBプロファイルの選択
一時的に問題を解決する必要がある場合は、最低限の開発ターゲットをiOS 9.0に増やすだけで、この問題は解決されます。
フォルダー内のすべてのPngのコピーを収集します
例フォルダイメージに名前を付けてデスクトップに配置する
次に、ターミナルに移動して、写真を移動したフォルダーにディレクトリを変更します
cdデスクトップ/イメージ
これを実行
sips -g all * .png> print.txt
Print.txtという名前のファイルがフォルダー内に作成されます(画像内)
開いて検索する
bitsPerSample:
隣の数字が8と異なる場合は、誤った画像が表示されている
プレビューアプリでこの画像(または画像)を開き、同じ形式にエクスポートして、8ビットの色深度を選択してください(複数の画像を選択した場合、色深度の選択は表示されませんが、まだ機能しています)
新しいイメージをコピーして、古いイメージで置き換えます。
また、以前に投稿した内容に加えて、次のことも行います
このステップはすべての写真に適用されますプレビューアプリで各またはすべての写真を開きますツール>サイズの調整>次にdpiを72に設定し、ツール>プロファイルの割り当て>汎用RGBプロファイルの選択
それで全部です
Ffステップを使用して解決できました。
ターミナルを介した1つのコマンドによる修正:
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
私の答えは簡単です。16ビットカラー画像を見つけて、8ビット深度のカラー画像に変換します。 16ビットでない場合、sips -m ...
はidempotentではありません。これは、同じ画像ファイルで再度実行すると、変換された画像が再び変更されることを意味します。
# 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)
より明確に、次のようにbashシェルファイルとして保存します。
#/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)