Burada "saplamalar", javadoc aracını çalıştırarak oluşturulan çerçeve API'sıdır.
Çoğu durumda, Android'de stub dosyası hakkında konuştuğumuzda, yardım aracı tarafından oluşturulan java dosyasını kastediyoruz. Örneğin Özellikle How to generate stub in android? - Stack Overflow
görüntülemek için Android inşa sistemi aslında javadoc çağıran, dokümantasyon, java API koçanları ve API xml dosyaları oluşturmak için kullanılabilecek droiddoc.mk
denilen bir makefile içerir.
droiddoc.mk
, build/core
'un altındadır. build/core/config.mk
'da droiddoc.mk
'u daha kolay dahil etmek için BUILD_DROIDDOC
adlı bir değişken vardır.
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]
saplama hakkına ilişkin hiçbir şey yoktur: droiddoc.mk
de
Bak, bu javadoc çağırır? Merak etmeyin, örneğin framework/base/Android.mk
için, dokümanlar üretmek için include $(BUILD_DROIDDOC)
içerirler, AOSP içinde
PRIVATE_DROIDDOC_OPTIONS := $(LOCAL_DROIDDOC_OPTIONS)
Birçok Android.mk dosyaları bir PRIVATE_DROIDDOC_OPTIONS
değişken olduğunu fark ve
.
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)
LOCAL_DROIDDOC_OPTIONS
bir -stubs
seçeneği içerir: framework/base/Android.mk
yılında kodu parçasıdır yoktur. Ve sonunda droiddoc.mk tarafından kullanılan javadoc komutuna girecektir. Ancak, javadoc'un -stubs
gibi herhangi bir seçenek içermediğini fark edebiliriz. Anahtar, docad'ları kullanarak Javadoc aracının çıktısının içeriğini ve biçimini özelleştirebilmenizdir. Javadoc aracında standart biçimlendirilmiş olarak adlandırılan ve HTML formatlı API belgelerini oluşturan varsayılan "yerleşik" bir belge vardır. Standart doclet'i değiştirebilir veya alt sınıflara yazabilir veya HTML, XML, MIF, RTF veya istediğiniz çıktı biçimini oluşturmak için kendi doclet'inizi yazabilirsiniz. Özelleştirilmiş dokümanı belirtmek için -doclet
seçeneğini kullanabiliriz.
Ve droiddoc.mk'deki javadoc komutu
-doclet com.google.doclava.Doclava
'u kullanır. Bu doclet,
-stubs
seçeneğini alır.
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);
}
}
Bu -stubs seçeneği alır altında Doclava uygulanmasını
bak. Ve işte işte bu, işte nasıl işliyor? saplama dosyalarında içeriği böyledir neden
// Stubs
if (stubsDir != null || apiFile != null || proguardFile != null) {
Stubs.writeStubsAndApi(stubsDir, apiFile, proguardFile, stubPackages);
}
Ve Stubs.writeStubsAndApi
uygulanmasını izlemek görebilirsiniz.
Kendi java dosyalarınızı yazabilir ve build/tools/droiddoc/test
altındaki test durumları gibi uzantılarınızı oluşturabilirsiniz.
http://stackoverflow.com/questions/1264530/how-to-generate-stub-in-android?rq=1 Bazı cevaplar olabilir, emin değilim bu konuda çok fazla bilmiyorum. –
Sorumum farklı. Saplamalarla, özellikle Android'in yapım sürecinin bir parçası olarak yukarıda belirtilen dizinde üretilen .java dosyalarını kastediyorum. –