Tôi đã thực hiện một số điều tra về điều này, và kết luận của tôi đơn giản là: Điều này không thể được thực hiện nếu không có một chút công việc. Đọc phần còn lại của câu trả lời này để biết chi tiết về những gì tôi đã tìm thấy.
android.jarthực sự bao gồm "api công cộng" của framework.jarvà core.jarđược tìm thấy trong system/frameworks/thiết bị. android.jarlà một loại mà tôi sẽ gọi là tiêu đề thư viện Java, tất cả triển khai trong mã byte thực tế chỉ là a throw new RuntimeException("stub");, điều này cho phép bạn xây dựng dựa trên android.jar(ví dụ: trong Eclipse), nhưng việc thực thi phải được thực hiện trên thiết bị hoặc trình giả lập.
API công khai của Android SDK được xác định bởi các lớp / phương thức / trường không có tiền tố là @{hide}chú thích javadoc. Tức là mọi thứ không được chú thích đều được đưa vào SDK.
android.jarđược xây dựng từ các nguồn nằm trong out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediatesđó chính nó được tạo ra bởi công cụ DroidDoc nằm trong đó build/tools/droiddoc.
DroidDoc là công cụ (có thể được điều chỉnh từ javadoc hoặc sử dụng javadoc) tạo tài liệu Android SDK thực tế. Như một tác dụng phụ, và có lẽ vì nó đã phân tích cú pháp tất cả javadoc, nó cũng tạo ra các bản gốc android sau đó được biên dịch thành các bản android.jarphân phối trong SDK.
Vì vậy, bạn có thể bao gồm những thứ bị ẩn, nếu chỉ muốn bao gồm các phần cụ thể, chỉ cần xóa @hidechú thích và xây dựng lại SDK.
Tuy nhiên, nếu bạn muốn bao gồm tất cả các phần ẩn, mọi thứ sẽ phức tạp hơn rất nhiều. Bạn có thể sửa đổi DroidDoc (có nguồn liên quan build/tools/droiddoc/src/Stubs.java) để không có gì bị phát hiện là ẩn. Điều này là khá nhỏ và tôi đã thử điều này, tuy nhiên các sơ khai sau đó được tạo ra không biên dịch chút nào.
Kết luận của tôi bây giờ là điều này đơn giản là không khả thi. Các sơ khai được tạo ra nếu bạn xóa phần DroidDoc phát hiện các chú thích ẩn, đơn giản là không thể biên dịch được và sẽ yêu cầu khá nhiều công việc để biên dịch chính xác.
Vì vậy, câu trả lời của tôi cho câu hỏi của bạn là: Không, điều này không thể được thực hiện, nếu không làm rất nhiều việc. Lấy làm tiếc.
Một lưu ý phụ về mkstubscông cụ. mkstubsđược sử dụng khi bạn tạo phần bổ trợ SDK , tức là phần bổ trợ bạn có thể tìm thấy trong trình quản lý SDK Android từ các nhà cung cấp, ví dụ: Samsung cung cấp cho bạn một API bổ sung cho nội dung cụ thể cho điện thoại Samsung. mkstubsgiống như quá trình tạo sơ khai DroidDoc, tuy nhiên nó không sử dụng @hidechú thích, nó sử dụng một .defstệp mô tả gói / lớp / trường nào cần bao gồm hoặc loại trừ khỏi trình bổ trợ SDK của bạn.
Tuy nhiên, tất cả điều này đều không liên quan đến câu hỏi, vì bản dựng Android SDK không sử dụng mkstubscông cụ. (Không may.)