1. ホーム
  2. ios

[解決済み] iOS 9.2以下でのXcode 8ビルドのクラッシュ

2023-05-24 05:15:59

質問

Xcode 8 GM Seed でアプリをビルドし、iOS 9.2 以下のデバイスまたはシミュレーターで実行すると、アプリ起動時またはアプリ起動後数秒で、奇妙な EXC_BAD_ACCESS クラッシュが発生します。クラッシュはいつも違う場所で起こります(サブビューを追加する。 [UIImage imageNamed:] やアプリデリゲートのメインメソッドなど)。iOS 9.3+や10で実行すると、これらのクラッシュは発生しません。 ビルド でビルドし、iOS 9.2 以下で実行してもクラッシュしません。他に同じようなことを経験された方はいらっしゃいますか?これは Xcode 8 の既知の問題ですか?

どのように解決するのですか?

回答例を見る https://forums.developer.apple.com/thread/60919

Preview.app で 16bit のアセットを 8bit のアセットとして保存することができます。

ERROR ITMS-90682: Invalid Bundle - The asset catalog at 'Payload/XXXXX/Assets.car' を解決するには? Payload/XXXXX/Assets.car' にあるアセットカタログに 16 ビットまたは P3 のアセットを含めることができません。 を含むことができません。

Xcode 8 GM では、このエラーは、iOS リリースをターゲットとするアプリの提出物に 16 ビットまたは P3 のアセットを含めると発生します。 アセットが含まれている場合、このエラーが発生します。 9.3. アプリにワイド カラー機能が必要な場合は、デプロイメント ターゲットを iOS 9.3 以降に変更する必要があります。アプリにワイドカラー機能が必要ない場合 ワイドカラー機能を必要とせず、古いバージョンのiOSにデプロイする場合は、デプロイメントターゲットをiOS 9.3以降に変更する必要があります。 iOSの古いバージョンにデプロイする場合は、すべての16ビットまたはP3アセットを8ビットsRGBアセットに置き換える必要があります。 8-bit sRGBアセットに置き換える必要があります。 16ビットまたはP3アセットを見つけるには、次のコマンドを実行します。 エラーメッセージに記載されているアセットカタログの "assetutil "を実行することで、16ビットまたはP3アセットを見つけることができます。 iTunes Connectのエラーメッセージで指定されたアセットカタログ上で "assetutil "を実行することで16ビットまたはP3アセットを見つけることができます。以下のステップがその概要です。

  1. インスペクタブル .ipa ファイルを作成します。 Xcode オーガナイザー (Xcode->Window->Organizer) で、検査するアーカイブを選択し、[Export...]をクリックします。 をクリックし、「Export for Enterprise or Ad-Hoc Deployment」(エンタープライズまたはアドホックデプロイメント用にエクスポートする)を選択します。 これにより、アプリの .ipa ファイルのローカル コピーが作成されます。

  2. その.ipaファイルを探し、その拡張子を.zipに変更します。

  3. .zip ファイルを展開します。これにより、.appバンドルを含むPayloadフォルダーが生成されます。

  4. ターミナルを開き、作業ディレクトリを.appバンドルのトップレベルに変更します cd path/to/Payload/your.app

  5. 以下のように、find ツールを使用して、.app バンドル内の Assets.car ファイルを探します。-name 'Assets.car'

  6. assetutil ツールを使用して、以下のように、アプリケーションが持つ各 Assets.car で、任意の 16 ビットまたは P3 アセットを見つけます。: sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json

  7. 結果の /tmp/Assets.json を調べ、"DisplayGamut"" を含むコンテンツを探します。"P3" とそれに関連する "Name"" を含むコンテンツを探します。 これは これは、1つまたは複数の16ビットまたはP3アセットを含むイメージセットの名前です。 アセットを含むイメージセットの名前になります。

  8. これらのアセットを 8 ビット / sRGB アセットに置き換えてから、アプリを再構築してください。

更新: デプロイメント ターゲットが 8.3 または 8.4 に設定されており、アセット カタログがある場合、この同じエラー メッセージが表示されます。 アセット カタログがある場合、実際に 16 ビットまたは P3 のアセットがない場合でも、この同じエラー メッセージが表示されます。 16 ビットまたは P3 のアセットが実際にない場合でも、この同じエラー メッセージが表示されます。 この場合、次のいずれかを行う必要があります。 デプロイメント ターゲットを 8.2 に下げるか、9.x に移行する必要があります。