He investigado un poco sobre esto y mi conclusión es sencilla: esto no se puede hacer sin bastante trabajo. Lea el resto de esta respuesta para obtener detalles sobre lo que he encontrado.
android.jaren realidad está compuesto por la "API pública" de framework.jary core.jarque se encuentra en system/frameworks/el dispositivo. android.jares una especie de lo que yo llamaría el encabezado de la biblioteca de Java, todas las implementaciones en el código de bytes real son solo una throw new RuntimeException("stub");, esto le permite construir contraandroid.jar (por ejemplo, en Eclipse), pero la ejecución debe realizarse en un dispositivo o emulador.
La API pública del SDK de Android se define mediante clases / métodos / campos que no tienen como prefijo la @{hide}anotación javadoc. Es decir todo lo que no es anotado está incluido en el SDK.
android.jarse construye a partir de las fuentes ubicadas en las out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediatesque se genera la herramienta DroidDoc ubicada enbuild/tools/droiddoc .
DroidDoc es la herramienta (probablemente adaptada de javadoc o usando javadoc) que genera la documentación real del SDK de Android. Como efecto secundario, y probablemente porque ya está analizando todo el javadoc, también arroja los stubs de Android que luego se compilan en elandroid.jar que se distribuye en el SDK.
Entonces, para incluir las cosas que están ocultas, podría, si solo desea incluir partes específicas, simplemente elimine el @hide anotación y reconstruya el SDK.
Sin embargo, si desea incluir todas las partes ocultas, las cosas se complican mucho más. Puede modificar DroidDoc (la fuente relevante está enbuild/tools/droiddoc/src/Stubs.java ) de modo que no se detecte nada como oculto. Esto es bastante trivial y lo he intentado, sin embargo, los stubs que luego se generan no se compilan en absoluto.
Mi conclusión a estas alturas es que esto simplemente no es factible. Los stubs generados si elimina la parte de DroidDoc que detecta anotaciones ocultas, simplemente no son compilables y requerirían bastante trabajo para compilarse correctamente.
Entonces, mi respuesta a sus preguntas es: No, esto no se puede hacer sin hacer mucho trabajo. Lo siento.
Una nota al margen sobre la mkstubsherramienta. mkstubsse utilizan cuando crea un complemento de SDK , es decir, los complementos que puede encontrar en el administrador de SDK de Android de los proveedores, por ejemplo, Samsung le proporciona una API adicional para cosas específicas de los teléfonos Samsung. mkstubshace lo mismo que el proceso de generación de stubs de DroidDoc, sin embargo, no usa @hideanotaciones, usa un .defsarchivo que describe qué paquetes / clases / campos incluir o excluir de su complemento SDK.
Sin embargo, todo esto es irrelevante para la pregunta, ya que la compilación del SDK de Android no usa la mkstubsherramienta. (Desafortunadamente.)