Ich habe einige Nachforschungen angestellt, und meine Schlussfolgerung lautet einfach: Dies kann nicht ohne viel Arbeit geschehen. Lesen Sie den Rest dieser Antwort, um Einzelheiten zu dem zu erfahren, was ich gefunden habe.
android.jar
besteht eigentlich aus der "öffentlichen API" von framework.jar
und core.jar
die sich system/frameworks/
auf dem Gerät befindet. android.jar
ist eine Art von dem, was ich als Java-Bibliotheksheader bezeichnen würde. Alle Implementierungen im eigentlichen Bytecode sind nur a throw new RuntimeException("stub");
. Dies ermöglicht es Ihnen, dagegen zu bauen android.jar
(z. B. in Eclipse), aber die Ausführung muss auf einem Gerät oder Emulator durchgeführt werden.
Die öffentliche API des Android SDK wird durch Klassen / Methoden / Felder definiert, denen die Javadoc-Annotation nicht vorangestellt ist @{hide}
. Dh alles, was nicht kommentiert ist, ist im SDK enthalten.
android.jar
wird aus den Quellen erstellt, in out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
denen sich das Tool DroidDoc befindet build/tools/droiddoc
.
DroidDoc ist das Tool (wahrscheinlich aus Javadoc angepasst oder mithilfe von Javadoc), das die eigentliche Android SDK-Dokumentation generiert. Als Nebeneffekt und wahrscheinlich, weil es bereits alle Javadoc analysiert, spuckt es auch die Android-Stubs aus, die dann in das kompiliert werdenandroid.jar
im SDK verteilten .
Um das verborgene Material einzuschließen, können Sie, wenn Sie nur bestimmte Teile einschließen möchten, einfach das entfernen @hide
Anmerkung und das SDK neu erstellen.
Wenn Sie jedoch alle versteckten Teile einbeziehen möchten, werden die Dinge viel komplizierter. Sie können DroidDoc ändern (die entsprechende Quelle befindet sich inbuild/tools/droiddoc/src/Stubs.java
) so dass nichts als versteckt erkannt wird. Dies ist ziemlich trivial und ich habe es versucht, aber die Stubs, die dann generiert werden, werden überhaupt nicht kompiliert.
Mein Fazit ist inzwischen, dass dies einfach nicht machbar ist. Die Stubs, die generiert werden, wenn Sie den Teil von DroidDoc entfernen, der versteckte Anmerkungen erkennt, sind einfach nicht kompilierbar und erfordern eine Menge Arbeit, um korrekt zu kompilieren.
Meine Antwort auf Ihre Fragen lautet also: Nein, dies kann nicht ohne viel Arbeit geschehen. Es tut uns leid.
Eine Randnotiz zum mkstubs
Tool. mkstubs
werden verwendet, wenn Sie ein SDK-Addon erstellen , dh die Addons, die Sie im Android SDK-Manager von Anbietern finden, z. B. Samsung, das Ihnen eine zusätzliche API für Dinge bereitstellt, die für Samsung-Telefone spezifisch sind. mkstubs
Funktioniert ähnlich wie beim Generieren von DroidDoc-Stubs, verwendet jedoch keine @hide
Anmerkungen, sondern eine .defs
Datei, die beschreibt, welche Pakete / Klassen / Felder in Ihr SDK-Addon aufgenommen oder aus diesem ausgeschlossen werden sollen.
Dies ist jedoch für die Frage irrelevant, da der Android SDK-Build das Tool nicht verwendet mkstubs
. (Unglücklicherweise.)