7

iPhoneライブラリのプライベートAPIを使用するために必要な手順の包括的なリストが見つかりません。

特に、ヘッダーファイルを取得する方法、必要な場合はコンパイルする方法(ヘッダーを追加するだけで、関数が定義されていないと文句を言う)、およびどのようなリソースを使用できるかを知りたいです。プライベートAPIについて学習するために使用します(たとえば、いくつかあるhttp://iphonedevwiki.net/などの他のユーザーの経験から)。

私は他の場所で、ヘッダーを取得するためにclass-dumpを使用することを推奨していることを読みました。別の方法はありますか?iPhoneプライベートSDKのリポジトリがいくつかあることに気づきましたが、お勧めする最新のリソースは何ですか?

プライベートAPIのドキュメントに関するこれまでの 質問のほとんどは、Erica SadunのWebサイトにリンクされていますが、ドキュメントはもうないようです(左側のリンクはすべて取り消し線が引かれています)。

プライベートAPIを使用しないことについてのコメントを保存してください...私は最大のリスクを知っています:

  • アプリはAppleによって拒否されます。
  • アプリは、OSの将来のアップデートで壊れます。

私は次のような合法的な使用について話している:

  • プライベートアプリケーションの使用(たとえば、単体テスト、または何が可能かを確認するためにいじり回すため)
4

1 に答える 1

5

Objective-Cは、コンパイルされたバイナリに、ヘッダーをほぼ完全に再構築するのに十分な情報を持っています。欠落しているのは引数名だけです。これは、多くの場合、型またはメソッドのプロトタイプから概算でき、いくつかの構造体と列挙型の定義です。そのため、class-dumpなどのプログラムがヘッダーを取得するための最良の方法です。それらは包括的であり、実際のヘッダーにあるかどうかに関係なく、最新であり、配布する必要はありません。ヘッダーを取得するもう1つの方法は、同じフレームワークのパブリックバージョンを調べることです。たとえば、WebKitはiPhoneでのみプライベートであり、それ以外の点では十分に文書化されています。

Objective-C以外のことに興味がある場合は、関数の引数を推測するために分解を行って、昔ながらの方法でそれを行う必要があります。いくつかのシンボルを取得したら、それらを検索すると、他の誰かが投稿したヘッダーが見つかる可能性があります。otoolは始めるのに良い場所です。

Objective-CまたはCのいずれの場合でも、ヘッダーを含める場合は、他のヘッダーと同様に、ヘッダーがメソッドを宣言するフレームワークまたはライブラリも含める必要があります。Objective-Cのもののほとんどは、通常のFrameworksフォルダーのすぐ隣にあるPrivateFrameworksフォルダーにあります。usr/libフォルダーを調べてライブラリーを見つけることができます。

シミュレーターとデバイスの間には多くの違いがあることに注意してください。したがって、実際のデバイスからヘッダーを作成するようにしてください。サンドボックスアプリとして実行する権限がないメソッドもいくつかあります。

于 2010-05-15T02:40:39.183 に答える