Eu fiz algumas investigações sobre isso e minha conclusão é simples: isso não pode ser feito sem um pouco de trabalho. Leia o restante desta resposta para obter detalhes sobre o que descobri.
android.jaré, na verdade, composto pela "API pública" de framework.jare core.jarque é encontrada no system/frameworks/dispositivo. android.jaré um tipo do que eu chamaria de cabeçalho da biblioteca Java, todas as implementações no código de bytes real são apenas um throw new RuntimeException("stub");, isso permite que você construa android.jar(por exemplo, no Eclipse), mas a execução deve ser realizada em um dispositivo ou emulador.
A API pública do Android SDK é definida por classes / métodos / campos que não são prefixados com a @{hide}anotação javadoc. Ou seja, tudo o que não é anotado está incluído no SDK.
android.jaré construído a partir de fontes localizadas nas out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediatesquais ele próprio é gerado pela ferramenta DroidDoc localizada em build/tools/droiddoc.
DroidDoc é a ferramenta (provavelmente adaptada do javadoc ou usando o javadoc) que gera a documentação real do Android SDK. Como efeito colateral, e provavelmente porque já está analisando todo o javadoc, ele também expele os stubs do Android que são compilados no android.jarque é distribuído no SDK.
Portanto, para incluir o que está oculto, você pode, se quiser incluir apenas partes específicas, apenas remover a @hideanotação e reconstruir o SDK.
No entanto, se você quiser incluir todas as partes ocultas, as coisas ficam muito mais complicadas. Você pode modificar o DroidDoc (a fonte relevante está em build/tools/droiddoc/src/Stubs.java) de forma que nada seja detectado como oculto. Isso é bastante trivial e eu tentei fazer isso, no entanto, os stubs que são gerados não compilam de todo.
Minha conclusão agora é que isso simplesmente não é viável. Os stubs gerados se você remover a parte do DroidDoc que detecta anotações ocultas, simplesmente não é compilável e exigiria um pouco de trabalho para compilar corretamente.
Portanto, minha resposta às suas perguntas é: Não, isso não pode ser feito sem muito trabalho. Desculpa.
Uma observação lateral sobre a mkstubsferramenta. mkstubssão usados quando você constrói um complemento SDK , ou seja, os complementos que você pode encontrar no gerenciador do Android SDK de fornecedores, por exemplo, a Samsung fornecendo a você uma API adicional para coisas específicas para telefones Samsung. mkstubsfaz quase o mesmo que o processo de geração de stubs do DroidDoc; no entanto, não usa @hideanotações, ele usa um .defsarquivo que descreve quais pacotes / classes / campos incluir ou excluir do seu complemento SDK.
No entanto, tudo isso é irrelevante para a questão, já que o Android SDK build não usa a mkstubsferramenta. (Infelizmente.)