2011-07-13 6 views
10

私が販売したいiOS静的ライブラリを作成しようとしています。私は最初のビルドの手順を踏んで、.a/.h出力を生成しました。静的ライブラリ(iOS Obj-C)のコードを隠す

これらのファイルを別のプロジェクトに含めると、.aファイルの内容を参照する方法はありません。

私のライブラリのコード行がアプリをクラッシュさせると(私が言ったように、それはまだ開発中です)、デバッガはクラス(.m)ファイル全体を表示します。これはどうしたの?

私はすべてが静的ライブラリになるのを本当に理解していません。私はシミュレータとデバイスの両方でそのバージョンをコンパイルしたかどうか分かりません。それはそれと関係がありますか?もしそうなら、誰かが理由を説明できますか?

ありがとうございました!

+0

ライブラリに関連付けられたdSYMディレクトリを削除し、アプリをクラッシュします。ソースキンはありません。私。 dSYM(シンボルテーブル)は、ライブラリとソースの間にマップを提供します。 – bbum

+0

デバッガがXcodeプロジェクトのファイルを表示しています。ソースコードは.aファイルには格納されません。 (そうすることで大量のコードが膨らんでしまうため、セキュリティ上の問題を無視しても明らかに望ましくないことになります) –

答えて

18

ソースコードがアーカイブファイル(.a)に含まれていないことを心配しないでください。

Xcodeは、ファイルに埋め込まれているデバッグ情報に基づいて、コンピュータ上のソースコードファイルを見つけるのに十分スマートです。 "リリース"設定を使用してライブラリを構築したり、ビルド設定を変更してデバッグシンボルを削除したりして、ソースをマシンのどこにも置かない場合、開発者はx86またはARMの知識に頼らなければなりませんあなたのコードの仕組みを理解するためのアセンブリ。ところで

:のObjective-Cの多くは、実行時に処理されるので

  • 、クラス名とセレクタ名の多くは、自分のライブラリーに表示されます。それはちょうどそれが動作する方法です。あなたはそれを難読化しようとする可能性がありますが、私はあなたの時間がより有益なコードを書くのに費やされたと思っています。

  • iOS開発用のスタティックライブラリを提供したい場合は、iOSシミュレータ(x86)とiOSデバイス(アーム)用のバージョンをビルドしてから、lipoを使用して1つの脂肪静的ライブラリ。さまざまな方法でこれを行うには、 "lipo xcode fat static library"を検索してください。ソリューションによっては、他のソリューションより複雑なものがあります。

+1

目的関数cは呼び出し側の情報をレジスタに直接ロードするので簡単です:) –

+0

Xcode実際に私のコンピュータを精算してソースコードを探していますか?私は周りを見回して、 "太った図書館を建てる"ことを見ましたが、まだかなり早い段階で、主に私の図書館をテストしています。基本的に1.リリースモード(シミュレータとデバイス用)でビルドします。2.ライブラリを別のプロジェクトにインポートします。3.ソースがマシン上にないことを確認します。4.クラスを参照することはできません。障害が発生しますか?クール!ありがとう! – mbm29414

+0

エラーが発生した場合、特定の場所ではなくエラーが発生しますが、エラーの原因となったデータとエラーの原因となったデータ(無効なアドレスなど) –

0

あなたのコンピュータ上のすべての.mファイルと静的ライブラリのプロジェクトを持っている場合はXcodeでデバッグしながら、このライブラリ(.Aファイル)のすべてのコピーは、その.mファイルでsymbolicatedされます。

xCodeは、すべてのディスクから適切な.mファイルを検索しません。それは元のプロジェクトの場所を知っています。したがって、ライブラリのみを配布すると、初期コードが完全に隠されます。

新しいプロジェクトでライブラリをコピーできることを確認するには、ライブラリプロジェクトの.mファイルを消去します。 この時点から、ライブラリのメソッドをデバッグしようとすると、空のファイルが画面に表示されます。

enter image description here

3

私は同じ問題がありました。 @benzadoは、彼が言及したことについて正しいです。しかし、私は問題を解決するためにデバッグシンボルを取り除かなければなりませんでした。これを行うには、私はを変更する必要がありました。以下に述べるように、ビルドの前にプロジェクトライブラリのをビルドしてください。

ターゲットを選択し、ビルド設定に移動します。

  1. に 'コピー中にストリップデバッグシンボル' YES
  2. 'デバッグ情報のフォーマット' へ
  3. 'dSYMとDWARFはファイル' 'を設定し生成しますデバッグシンボル '〜' N O YES

'から' '

  • ' デフォルトによって隠さシンボルは、これらのためのものであるかを確認Apple Build Setting Reference

    を参照し、 "Release" を使用してライブラリを構築するには構成。これは私のために働いた。

  • 関連する問題