Я провел некоторое расследование по этому поводу, и мой вывод простой: это невозможно сделать без небольшой работы. Прочтите оставшуюся часть этого ответа, чтобы узнать о том, что я нашел.
android.jarфактически состоит из «общедоступного API» framework.jarи core.jarнаходится system/frameworks/на устройстве. android.jar- это своего рода то, что я бы назвал заголовком библиотеки Java, вся реализация в фактическом байтовом коде - это просто a throw new RuntimeException("stub");, это позволяет вам строить android.jar(например, в Eclipse), но выполнение должно выполняться на устройстве или эмуляторе.
Общедоступный API Android SDK определяется классами / методами / полями, которые не имеют префикса @{hide}аннотации javadoc. Т.е. все, что не аннотировано, входит в SDK.
android.jarстроится из источников, в out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediatesкоторых сам генерируется инструментом DroidDoc, находящимся в build/tools/droiddoc.
DroidDoc - это инструмент (возможно, адаптированный из javadoc или использующий javadoc), который генерирует фактическую документацию Android SDK. В качестве побочного эффекта и, вероятно, из-за того, что он уже анализирует всю javadoc, он также извергает заглушки Android, которые затем компилируются вandroid.jar который распространяется в SDK.
Итак, чтобы включить то, что скрыто, вы можете, если вы хотите включить только определенные части, просто удалите @hideаннотацию и перестройте SDK.
Однако, если вы хотите включить все скрытые части, все становится намного сложнее. Вы можете изменить DroidDoc (соответствующий источник находится внутри build/tools/droiddoc/src/Stubs.java), чтобы ничего не обнаруживалось как скрытое. Это довольно тривиально, и я пробовал это, однако генерируемые затем заглушки вообще не компилируются.
На данный момент я пришел к выводу, что это просто невозможно. Заглушки, сгенерированные, если вы удалите часть DroidDoc, которая обнаруживает скрытые аннотации, просто не компилируются, и для правильной компиляции потребуется довольно много работы.
Итак, мой ответ на ваши вопросы: нет, это невозможно сделать, не проделав большой работы. Сожалею.
Замечание об mkstubsинструменте. mkstubsиспользуются при создании надстройки SDK , то есть надстройки, которые вы можете найти в диспетчере Android SDK от поставщиков, например, Samsung предоставляет вам дополнительный API для вещей, специфичных для телефонов Samsung. mkstubsвыполняет во многом то же самое, что и процесс создания заглушек DroidDoc, однако он не использует @hideаннотации, он использует .defsфайл, описывающий, какие пакеты / классы / поля включить или исключить из вашего аддона SDK.
Однако все это не имеет отношения к вопросу, поскольку сборка Android SDK не использует этот mkstubsинструмент. (К сожалению.)