Ho svolto alcune indagini al riguardo e la mia conclusione è semplicemente: questo non può essere fatto senza un bel po 'di lavoro. Leggi il resto di questa risposta per i dettagli su ciò che ho trovato.
android.jar
è in realtà costituito dall '"API pubblica" di framework.jar
e core.jar
che si trova nel system/frameworks/
dispositivo. android.jar
è un tipo di ciò che chiamerei intestazione della libreria Java, tutte le implementazioni nel codice byte effettivo sono solo un throw new RuntimeException("stub");
, questo ti permette di costruire contro android.jar
(ad esempio in Eclipse), ma l'esecuzione deve essere eseguita su un dispositivo o un emulatore.
L'API pubblica di Android SDK è definita da classi / metodi / campi che non sono preceduti @{hide}
dall'annotazione javadoc. Cioè tutto ciò che non è annotato è incluso nell'SDK.
android.jar
è costruito dalle sorgenti situate in out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
cui è generato dallo strumento DroidDoc situato in build/tools/droiddoc
.
DroidDoc è lo strumento (probabilmente adattato da javadoc, o utilizzando javadoc) che genera la documentazione effettiva di Android SDK. Come effetto collaterale, e probabilmente perché sta già analizzando tutto il javadoc, sputa anche gli stub Android che vengono quindi compilati in android.jar
cui è distribuito nell'SDK.
Quindi, per includere gli elementi nascosti, potresti, se desideri includere solo parti specifiche, rimuovere l' @hide
annotazione e ricostruire l'SDK.
Tuttavia, se vuoi includere tutte le parti nascoste, le cose diventano molto più complicate. È possibile modificare DroidDoc (la fonte pertinente è in build/tools/droiddoc/src/Stubs.java
) in modo che nulla venga rilevato come nascosto. Questo è abbastanza banale e l'ho provato, tuttavia gli stub che vengono generati non si compilano affatto.
La mia conclusione a questo punto è che questo semplicemente non è fattibile. Gli stub generati se rimuovi la parte di DroidDoc che rileva le annotazioni nascoste, semplicemente non sono compilabili e richiederebbero un bel po 'di lavoro per essere compilati correttamente.
Quindi la mia risposta alle tue domande è: No, questo non può essere fatto senza fare molto lavoro. Scusate.
Una nota a margine sullo mkstubs
strumento. mkstubs
vengono utilizzati quando crei un componente aggiuntivo SDK , ovvero i componenti aggiuntivi che puoi trovare nel gestore SDK di Android dai fornitori, ad esempio Samsung che ti fornisce un'API aggiuntiva per cose specifiche dei telefoni Samsung. mkstubs
fa più o meno lo stesso del processo di generazione di stub DroidDoc, tuttavia non utilizza @hide
annotazioni, utilizza un .defs
file che descrive quali pacchetti / classi / campi includere o escludere dal tuo componente aggiuntivo SDK.
Tuttavia, questo è tutto irrilevante per la domanda, poiché la build di Android SDK non utilizza lo mkstubs
strumento. (Sfortunatamente.)