"Sơ khai" ở đây là sơ đồ API khung được tạo bằng cách chạy công cụ javadoc.
Trong hầu hết các trường hợp, khi chúng ta nói về tệp sơ khai trong Android, chúng tôi có nghĩa là tệp java được tạo bởi công cụ aidl. Ví dụ thấy How to generate stub in android? - Stack Overflow
Đặc biệt, xây dựng hệ thống Android chứa một makefile gọi droiddoc.mk
có thể được sử dụng để tạo ra tài liệu, khai java API và các file xml API, mà thực sự gọi javadoc.
droiddoc.mk
là dưới build/core
. Trong số build/core/config.mk
, có một biến có tên là BUILD_DROIDDOC
để giúp dễ dàng bao gồm droiddoc.mk
.
Nhìn vào droiddoc.mk
, nó gọi javadoc:
javadoc \
\@$(PRIVATE_SRC_LIST_FILE) \
-J-Xmx1280m \
$(PRIVATE_PROFILING_OPTIONS) \
-quiet \
-doclet com.google.doclava.Doclava \
-docletpath $(PRIVATE_DOCLETPATH) \
-templatedir $(PRIVATE_CUSTOM_TEMPLATE_DIR) \
$(PRIVATE_DROIDDOC_HTML_DIR) \
$(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) \
$(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \
-sourcepath $(PRIVATE_SOURCE_PATH)$(addprefix :,$(PRIVATE_CLASSPATH)) \
-d $(PRIVATE_OUT_DIR) \
$(PRIVATE_CURRENT_BUILD) $(PRIVATE_CURRENT_TIME) \
$(PRIVATE_DROIDDOC_OPTIONS) \
&& touch -f [email protected]
Có gì về stub đúng là? Đừng lo lắng, hãy chú ý rằng có một biến PRIVATE_DROIDDOC_OPTIONS
, và
PRIVATE_DROIDDOC_OPTIONS := $(LOCAL_DROIDDOC_OPTIONS)
Nhiều file Android.mk trong AOSP, ví dụ như framework/base/Android.mk
, chứa include $(BUILD_DROIDDOC)
để tạo ra tài liệu. Trong framework/base/Android.mk
, có một đoạn mã:
LOCAL_DROIDDOC_OPTIONS:=\
$(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
-stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android_stubs_current_intermediates/src \
-api $(INTERNAL_PLATFORM_API_FILE) \
-nodocs
LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_DROIDDOC)
Các LOCAL_DROIDDOC_OPTIONS
chứa một tùy chọn -stubs
. Và cuối cùng nó sẽ được đưa vào lệnh javadoc được sử dụng bởi droiddoc.mk.
Tuy nhiên, chúng tôi có thể nhận thấy rằng javadoc không chứa bất kỳ tùy chọn nào như -stubs
. Điều quan trọng là bạn có thể tùy chỉnh nội dung và định dạng của đầu ra của công cụ Javadoc bằng cách sử dụng các doclet. Công cụ Javadoc có một doclet "built-in" mặc định, được gọi là doclet chuẩn, tạo ra tài liệu API định dạng HTML. Bạn có thể sửa đổi hoặc phân lớp doclet chuẩn hoặc viết doclet của riêng bạn để tạo HTML, XML, MIF, RTF hoặc bất kỳ định dạng đầu ra nào bạn muốn.
Chúng tôi có thể sử dụng tùy chọn -doclet
để chỉ định doclet tùy chỉnh của chúng tôi. Và lệnh javadoc trong droiddoc.mk sử dụng -doclet com.google.doclava.Doclava
. Tài liệu đó nhận được tùy chọn -stubs
.
Nhìn vào thực hiện Doclava dưới external/doclava/src/com/google/doclava/Doclava.java
else if (a[0].equals("-stubs")) {
stubsDir = a[1];
} else if (a[0].equals("-stubpackages")) {
stubPackages = new HashSet<String>();
for (String pkg : a[1].split(":")) {
stubPackages.add(pkg);
}
}
Nó nhận được tùy chọn -stubs. Và đây là cách nó xử lý stubsDir.
// Stubs
if (stubsDir != null || apiFile != null || proguardFile != null) {
Stubs.writeStubsAndApi(stubsDir, apiFile, proguardFile, stubPackages);
}
Và theo dõi việc triển khai Stubs.writeStubsAndApi
, bạn có thể thấy lý do nội dung trong tệp gốc giống như vậy.
Bạn thậm chí có thể viết các tệp java của riêng mình và tạo các nhánh của bạn giống như trường hợp kiểm tra theo số build/tools/droiddoc/test
.
http://stackoverflow.com/questions/1264530/how-to-generate-stub-in-android?rq=1 có thể có một số câu trả lời, không chắc chắn mặc dù tôi không biết nhiều về nó. –
Câu hỏi của tôi khác. Bởi stubs, tôi đặc biệt có nghĩa là các tập tin .java được sản xuất trong thư mục nói trên như là một phần của quá trình xây dựng của Android. –