アプリケーションのデバッグを支援するために、Unity のネイティブライブラリのシンボルファイルを含むパッケージを生成することができます。シンボルファイルには、アクティブなメモリアドレスをメソッド名などの使用可能な情報に変換するテーブルが含まれています。この変換プロセスをシンボル化と呼びます。シンボルパッケージを Google Play Console にアップロードすると、Android Vitals ダッシュボードで人間が読めるスタックトレースを表示できます。
シンボルファイルには 2 種類あります。
以下のライブラリのシンボルファイルを生成することができます。
libmain: 最初の Unity エンジンのロードロジック関連。libunity: Unity のエンジンコード。libil2cpp: C++ コードに変換したプロジェクトからの C# スクリプトを含みます。Unity は、libmain と libunity のシンボルファイルを生成します。Gradle は、libil2cpp のシンボルファイルを生成します。
パブリックシンボルファイルには、関数のアドレスを人間が読める文字列に解決する情報が含まれています。Unity は --strip-debug パラメーターを使用して、詳細なデバッグ情報を削除したパブリックシンボルを作成します。これにより、パブリックシンボルファイルとパッケージは、デバッグシンボル ファイルとパッケージよりも小さくなります。
デバッグシンボルファイルには、完全なデバッグ情報とシンボルテーブルが含まれています。それを使って以下を行えます。
Unity は、--only-keep-debug パラメーターを使用して、デバッグシンボルを作成します。詳細については、Linux ユーザーマニュアルの–only-keep-debug を参照してください。
ノート: デバッグシンボルが利用できない場合、Unity はビルド時に パブリックシンボル ファイルをプロジェクトに配置します。libmain と libunity のライブラリではデバッグシンボルは利用できないため、Unity は常にパブリックシンボルファイルを生成します。
アプリケーションのシンボルパッケージ生成を有効にするには、2 つの方法があります。
シンボルパッケージの生成を有効にした後、プロジェクトをビルドし、libmain、libunity、libil2cpp ライブラリ用のシンボルファイルを含む .zip ファイルを生成します。スクリプティングバックエンド を IL2CPP に設定すると、.zip には libil2cpp ライブラリのシンボルファイルも含まれます。Unity はこのシンボルパッケージを出力ディレクトリ内に配置します。
Android Build 設定で Export Project を有効にすると、Unity はプロジェクトのビルドを行いません。代わりに、Android Studio 用にプロジェクトをエクスポートし、libmain と libunity 用のシンボルを作成し、出力ディレクトリの unityLibrary/symbols/<architecture>/ 内に配置します。Android Studio からエクスポートされたプロジェクトをビルドすると、Gradle は libil2cpp シンボルファイルを生成し、libmain と libunity シンボルファイルとともに unityLibrary/symbols/<architecture>/ ディレクトリ内に配置します。
アプリケーションを Google Play にアップロードした後、パブリックシンボル パッケージをアップロードできます。この方法については、Google のドキュメント Deobfuscate or symbolicate crash stack traces を参照してください。
ノート: Google Play では、シンボルパッケージをアップロードする前にアプリケーションが受けたクラッシュはシンボル化されません。