Я вже дещо розслідував це, і мій висновок такий: це неможливо зробити без певної роботи. Прочитайте решту цієї відповіді, щоб дізнатись більше про те, що я знайшов.
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 , тобто доповнення, які ви можете знайти в менеджері SDK для Android від постачальників, наприклад, Samsung надає вам додатковий API для речей, специфічних для телефонів Samsung. mkstubs
робить майже те саме, що процес генерації заглушок DroidDoc, однак він не використовує @hide
анотації, він використовує .defs
файл, що описує, які пакети / класи / поля включати або виключати з вашого аддону SDK.
Однак це все не має відношення до питання, оскільки збірка Android SDK не використовує mkstubs
інструмент. (На жаль.)