4

シンボルを取り除いた Xcode で iOS 用の静的ライブラリをコンパイルしました。リリース構成でコンパイルされます。スタティック ライブラリを別の iOS プロジェクトにコピーすると (別のディレクトリに物理的にコピーします)、コードをステップ実行するときにスタティック ライブラリのソースを表示できます。ソース ウィンドウでShow in finderをクリックすると、ディスク上の適切なソース ファイルが表示されました。

ライブラリを 16 進エディタで開いたところ、マシン上のソース ファイルへのパスと、公開してはならないその他のテキスト データが含まれています。

プロジェクト設定で何かを見逃していませんか? これが予期された動作である場合、顧客がシンボルやソース ファイル名などを確認できないようにするにはどうすればよいですか?

4

3 に答える 3

8

必要なコンパイラ オプションが見つかりました。

LLVM コード生成で、 [デバッグ シンボルの生成]を[いいえ]に設定し、[既定で非表示のシンボル] を [はい]に設定します。何らかの理由で、シンボルを削除するように指示しても、これらが設定されていないと実行されません。

于 2013-11-15T03:14:29.773 に答える
1

strip YOURBINARYNAME@andrei-shender が示唆するように、十分ではありません。次のことを行う必要があります。

strip -S YOURBINARYNAME

デバッグ シンボルを手動で削除するには。もちろん、プロジェクトを適切に構成する方が良いですが、ベンダー スクリプトを使用してサード パーティのライブラリを構築する場合は、手動で行う必要がある場合があります。デバッグ シンボルを削除すると、Mapbox-native-gl は 550 MB から 22 MB になります。

于 2015-09-02T13:47:10.873 に答える
1
  1. を使用して、シンボルがストライプ化されているかどうかを確認できます

    nm ファイル名

  2. ストリッピングは自動的には行われません。それらをストリッピングするには xcode をセットアップする必要があり、担当するフラグがいくつかあります。

    a) DEPLOYMENT_POSTPROCESSING

    「STRIP_INSTALLED_PRODUCT (Strip Linked Product)」の前提条件</p>

    b) STRIP_INSTALLED_PRODUCT これは、DEPLOYMENT_POSTPROCESSING を YES に設定した場合にのみ、アプリストア以外のビルドで機能します。

  3. シンボルを手動で削除する方法があります。呼び出すだけです

    YOURBINARYNAMEを削除

于 2013-11-15T17:58:09.213 に答える