J'ai fait quelques recherches à ce sujet et ma conclusion est simplement la suivante: cela ne peut se faire sans pas mal de travail. Lisez le reste de cette réponse pour plus de détails sur ce que j'ai trouvé.
android.jar
est en fait composé de l '"api publique" de framework.jar
et core.jar
qui se trouve system/frameworks/
sur l'appareil. android.jar
est une sorte de ce que j'appellerais l'en-tête de la bibliothèque Java, toutes les implémentations dans le code d'octet réel sont juste un throw new RuntimeException("stub");
, cela vous permet de construire contre android.jar
(par exemple dans Eclipse), mais l'exécution doit être effectuée sur un périphérique ou un émulateur.
L'API publique du SDK Android est définie par des classes / méthodes / champs qui ne sont pas précédés de l' @{hide}
annotation javadoc. C'est-à-dire que tout ce qui n'est pas annoté est inclus dans le SDK.
android.jar
est construit à partir des sources situées dans out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
lesquelles elle-même est générée par l'outil DroidDoc situé dans build/tools/droiddoc
.
DroidDoc est l'outil (probablement adapté de javadoc ou utilisant javadoc) qui génère la documentation du SDK Android. En tant qu'effet secondaire, et probablement parce qu'il analyse déjà tout le javadoc, il crache également les stubs Android qui sont ensuite compilés dans le android.jar
qui est distribué dans le SDK.
Donc, pour inclure les éléments cachés, vous pouvez, si vous ne souhaitez inclure que des parties spécifiques, supprimez simplement l' @hide
annotation et reconstruisez le SDK.
Cependant, si vous souhaitez inclure toutes les parties cachées, les choses deviennent beaucoup plus compliquées. Vous pouvez modifier DroidDoc (la source appropriée est dans build/tools/droiddoc/src/Stubs.java
) de sorte que rien ne soit détecté comme caché. C'est assez trivial et j'ai essayé cela, mais les stubs qui sont ensuite générés ne se compilent pas du tout.
Ma conclusion à présent est que ce n’est tout simplement pas possible. Les stubs générés si vous supprimez la partie de DroidDoc qui détecte les annotations cachées, ne sont tout simplement pas compilables et nécessiteraient un peu de travail pour se compiler correctement.
Ma réponse à vos questions est donc: non, cela ne peut pas être fait sans beaucoup de travail. Pardon.
Une note latérale sur l' mkstubs
outil. mkstubs
sont utilisés lorsque vous construisez un module complémentaire SDK , c'est-à-dire les modules complémentaires que vous pouvez trouver dans le gestionnaire Android SDK des fournisseurs, par exemple Samsung qui vous fournit une API supplémentaire pour des éléments spécifiques aux téléphones Samsung. mkstubs
fait à peu près la même chose que le processus de génération de stubs DroidDoc, mais il n'utilise pas d' @hide
annotations, il utilise un .defs
fichier décrivant les packages / classes / champs à inclure ou à exclure de votre addon SDK.
Cependant, tout cela n'a aucun rapport avec la question, car la version du SDK Android n'utilise pas l' mkstubs
outil. (Malheureusement.)