web-dev-qa-db-ja.com

.dSYMファイルはどのように作成されますか?

私は別の開発者と一緒にアプリを開発していますが、彼らは自分のコンピューター上に構築されたアプリストアにリリースを提出しました。私のマシン(同じgitコミットに属する)でビルドを作成するには、XCodeプロジェクトで使用するライブラリの1つへのパスを変更する必要があります。 XCodeプロジェクトファイルに加えた変更はdSYMを変更しますか? XCodeプロジェクトファイルを変更せずにビルドを作成できた場合、dSYMファイルは同じですか?

44
couchy

DSYMファイルは「デバッグシンボルファイル」です。プロジェクトのビルド設定で「ストリップデバッグシンボル」設定が有効になっている場合に生成されます。

この設定を有効にすると、結果のコンパイル済みバイナリからオブジェクトのシンボル名が削除されます(試行しようとする多くの対策の1つは、バイナリサイズの最適化など、コードをリバースエンジニアリングするハッカー/クラッカーです)。

dSYMファイルは、アプリをコンパイルするたびに(おそらく日付スタンプのために1回ごとに)変更される可能性が高く、プロジェクトの設定とは関係ありません。

これらは、クラッシュレポートを再記号化するのに役立ちます。ストリップされたバイナリを使用すると、最初に再シンボリックしなければクラッシュレポートを読み取ることはできません。 dSYMがなければ、クラッシュレポートはオブジェクトとメソッドのメモリアドレスのみを表示します。 XcodeはdSYMを使用して、シンボルをクラッシュレポートに戻し、適切に読み取ることができるようにします。

理想的には、gitリポジトリでdSYMファイルを追跡しないでください。ビルド時に変更される他のバイナリと同様に、それらをソース管理に保持することは役に立ちません。しかし、そうは言っても、各クラッシュビルド(ベータ版、プレスリリース、アプリストアディストリビューションなど)のdSYMファイルを安全な場所に保管して、クラッシュレポートを象徴できるようにすることが重要です。 Xcodeは、アーカイブオプションを使用すると、これを自動的に行います。作成されたアーカイブには、アプリとそのdSYMが含まれ、Xcodeの派生データディレクトリ内に保存されます。

111
Jasarien