私はこれについていくつかの調査を行いましたが、私の結論は単純です。これは、かなりの作業なしでは実行できません。私が見つけたものの詳細については、この回答の残りを読んでください。
android.jar
実際の「パブリックAPI」で構成されているframework.jar
と、core.jar
中に発見されたsystem/frameworks/
デバイス上で。android.jar
これは、私がJavaライブラリヘッダーと呼ぶものの一種です。実際のバイトコードでのすべての実装は単なるでありthrow new RuntimeException("stub");
、これにより、に対して構築することができます。android.jar
(Eclipseなどで)が、実行はデバイスまたはエミュレーターで実行する必要があります。
Android SDKのパブリックAPIは、javadocアノテーションのプレフィックスが付いていないクラス/メソッド/フィールドによって定義されます@{hide}
。つまり、注釈が付けられていないものはすべてSDKに含まれています。
android.jar
にout/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
あるツールDroidDocによってそれ自体が生成されるソースから構築されbuild/tools/droiddoc
ます。
DroidDocは、実際のAndroid SDKドキュメントを生成するツールです(おそらくjavadocから適応されているか、javadocを使用しています)。副作用として、そしておそらくそれはすでにすべてのjavadocを解析しているため、Androidスタブを吐き出し、それがコンパイルされてandroid.jar
、SDKで配布ます。
したがって、非表示になっているものを含めるには、特定の部分のみを含めたい場合は、@hide
注釈を削除してSDKを再構築するだけです。
ただし、すべての非表示部分を含めたい場合は、さらに複雑になります。DroidDocを変更できます(関連するソースはbuild/tools/droiddoc/src/Stubs.java
)、非表示として何も検出されないようにます。これは非常に簡単で、私はこれを試しましたが、生成されるスタブはまったくコンパイルされません。
今までの私の結論は、これは単に実現可能ではないということです。非表示の注釈を検出するDroidDocの部分を削除すると生成されるスタブは、単にコンパイルできず、正しくコンパイルするにはかなりの作業が必要になります。
ですから、あなたの質問に対する私の答えは次のとおりです。いいえ、これは多くの作業を行わずに行うことはできません。ごめんなさい。
mkstubs
ツールに関する補足。SDKアドオンmkstubs
を構築するときに使用されます。つまり、ベンダーのAndroid SDKマネージャーにあるアドオンです。たとえば、Samsungは、Samsung電話に固有のもの用の追加のAPIを提供します。DroidDocスタブ生成プロセスとほとんど同じですが、アノテーションを使用せず、SDKアドオンに含めるまたは除外するパッケージ/クラス/フィールドを説明するファイルを使用します。mkstubs
@hide
.defs
ただし、Android SDKビルドはツールを使用しないため、これはすべて質問とは無関係mkstubs
です。(残念ながら。)