나는 이것에 대해 몇 가지 조사를했고 내 결론은 간단하다 : 이것은 꽤 많은 작업 없이는 할 수 없다. 내가 찾은 내용에 대한 자세한 내용은이 답변의 나머지 부분을 읽으십시오.
android.jar
실제의 "공개 API"로 구성된다 framework.jar
및 core.jar
발견 된 system/frameworks/
장치에서. android.jar
나는 자바 라이브러리 헤더라고 부르는의 일종이며, 실제 바이트 코드의 모든 구현은 단지이다 throw new RuntimeException("stub");
, 이것은 당신이에 구축 할 수 있습니다 android.jar
(예 : 이클립스), 그러나 실행은 장치 또는 에뮬레이터에서 수행되어야한다.
Android SDK의 공용 API 는 javadoc 어노테이션 이 접 두부 가 없는 클래스 / 메소드 / 필드로 정의됩니다 @{hide}
. 즉, 주석이 추가 되지 않은 모든 것이 SDK에 포함됩니다.
android.jar
에 out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
있는 DroidDoc 도구에 의해 생성 된 소스에서 빌드 됩니다 build/tools/droiddoc
.
DroidDoc 은 실제 Android SDK 문서를 생성하는 도구 (아마도 javadoc 또는 javadoc 사용)입니다. 부작용으로, 아마도 이미 모든 javadoc을 파싱하고 있기 때문에 android.jar
SDK에 배포되는 로 컴파일되는 Android 스텁도 분출됩니다 .
따라서 숨겨진 항목을 포함하려면 특정 부분 만 포함하려는 경우 @hide
주석을 제거 하고 SDK를 다시 빌드하면됩니다.
그러나 모든 숨겨진 부분을 포함하려면 상황이 훨씬 더 복잡해집니다. 숨겨진 것으로 감지되지 않도록 DroidDoc (관련 소스는에 있음 build/tools/droiddoc/src/Stubs.java
)을 수정할 수 있습니다 . 이것은 매우 사소한 일이며 이것을 시도했지만 생성 된 스텁은 전혀 컴파일되지 않습니다.
내 결론은 이것이 단순히 실현 가능하지 않다는 것입니다. 숨겨진 주석을 감지하는 DroidDoc 부분을 제거하면 생성되는 스텁은 단순히 컴파일 할 수 없으며 올바르게 컴파일하려면 상당한 작업이 필요합니다.
그래서 당신의 질문에 대한 나의 대답은 : 아니오, 이것은 많은 일을하지 않고서는 할 수 없습니다. 죄송합니다.
mkstubs
도구 에 대한 추가 정보 입니다. SDK 애드온mkstubs
을 빌드 할 때 사용됩니다 . 즉, 공급 업체의 Android SDK 관리자에서 찾을 수있는 애드온입니다. 예를 들어 삼성은 삼성 휴대 전화와 관련된 추가 API를 제공합니다. DroidDoc 스텁 생성 프로세스와 거의 동일하지만 주석을 사용하지 않고 SDK 애드온에 포함하거나 제외 할 패키지 / 클래스 / 필드를 설명 하는 파일을 사용합니다 .mkstubs
@hide
.defs
그러나 이것은 Android SDK 빌드가 도구를 사용 하지 않기 때문에 질문과 관련이 없습니다mkstubs
. (운수 나쁘게.)