ターゲットとビルドの構成
Swift シンボルを削除してアプリのサイズを縮小
Xcode は、アプリにバンドルされている Swift フレームワークからシンボルを取り除くことにより、アプリのサイズを縮小します。
アプリから Swift のシンボルを削除したいのはなぜですか?
ほとんどの場合、Swift 標準ライブラリを含む Swift フレームワークにはシンボルは必要ありません。シンボルを削除すると、アプリが大幅に小さくなる可能性があります。
シンボルを削除するとどのくらいのスペースを節約しますか?
節約するスペースの量は、いくつかの要因によって異なります。サイズの違いを見るには、シンボルを取り除いた、または取り除いたアプリの配布バージョンをビルドし、それぞれをデバイスにインストールして、サイズを比較します。登録済みデバイス用、手動での配布用、または TestFlight 用 の配布バージョンをビルドできます。アーカイブビルドのサイズを確認することは、iOS、watchOS、または tvOS アプリのサイズを測定する信頼できる方法ではありません。これは、Swift 標準ライブラリが アプリの容量を減らす一部としてのみ削除されるためです。
Swift シンボルの削除はどのように制御されますか?
ビルドターゲットのシンボル削除は、ビルド設定を使用して制御されます。デフォルト設定はターゲットによって異なります。たとえば、デフォルトでは、メインアプリの実行可能ファイルのすべてのシンボルが削除されますが、フレームワークのすべてのシンボルは削除されません。3 つのビルド設定は、Swift シンボルの除去方法を制御します。
- リンクされた製品を削除 (STRIP_INSTALLED_PRODUCT) は、ビルドからシンボルを削除します。
- ストリップスタイル (STRIP_STYLE) は、シンボルの除去レベルを制御します。
- Swift シンボルの削除 (STRIP_SWIFT_SYMBOLS) は、除去スタイルをオーバーライドして、メインアプリの実行可能ファイルおよびバンドルされているフレームワークからすべての Swift シンボルを削除します。この設定は、フレームワークターゲットに大きな違いをもたらす可能性があります。
Swift 標準ライブラリシンボルを削除するにはどうすればよいですか?
プロジェクトでビルドされていないため、ビルド設定は Swift 標準ライブラリからシンボルを取り除きません。iOS、watchOS、および tvOS アプリの Strip Swift シンボル 配布オプション を設定して、App Thinning (アプリ軽量化) の一部として標準ライブラリシンボルを削除します。
削除後にシンボルを表示する方法はありますか?
リンク失敗のデバッグの時など、以前削除されたフレームワークのシンボルを表示したい場合があります。リンカは個別のデータ構造を使用してフレームワーク内のシンボルを検索するため、xcrun コマンドラインツールの dyldinfo サブコマンドを使用して、ターミナルで xcrun dyldinfo -export を実行することでシンボルをエクスポートできます。
シンボルの削除をオフにするのはなぜですか?
ビルドプロセス中に削除されたシンボルは dSYM ファイルに保存でき、Xcode を使用して後日シンボルを読み取ることができます。dSYM ファイルでは不十分な場合がいくつかあります。さらに、Swift 標準ライブラリ用の dSYM ファイルはありません。その場合は以下のとおりです。
- クラッシュログに Swift 標準ライブラリのシンボルが必要な場合、QA サイクル内の企業アプリ。
- AppStore または TestFlight を使用しないアプリの配布。
- サードパーティのクラッシュログツールを使用する。
- プロセス内のクラッシュシンボル化のための dladdr システム関数の使用。
ほとんどの場合、最終的なアプリでシンボルの削除を再度有効にできます。
以下も見よ