我們會發(fā)現(xiàn)在webkit源碼下發(fā)現(xiàn)很多的css文件例如:
webkit/WebCore/css/html.css
webkit/WebCore/css/quirks.css
webkit/WebCore/css/view-source.css
webkit/WebCore/css/mediaControls.css
等等css是如何對應(yīng)到源碼下的那?
我們發(fā)現(xiàn)在 WebCore下有個
Android.derived.mk
# user agent style sheets
style_sheets := $(LOCAL_PATH)/css/html.css $(LOCAL_PATH)/css/quirks.css $(LOCAL_PATH)/css/view-source.css $(LOCAL_PATH)/css/mediaControls.css
ifeq ($(ENABLE_SVG), true)
style_sheets := $(style_sheets) $(LOCAL_PATH)/css/svg.css
endif
GEN := $(intermediates)/css/UserAgentStyleSheets.h
make_css_file_arrays := $(LOCAL_PATH)/css/make-css-file-arrays.pl
$(GEN): PRIVATE_CUSTOM_TOOL = $< $@ $(basename $@).cpp $(filter %.css,$^)
$(GEN): $(make_css_file_arrays) $(style_sheets)
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
這個文件下存在這么一個腳本
腳本的邏輯內(nèi)容很簡單,其中最關(guān)鍵的地方就是css/make-css-file-arrays.pl這個腳本
執(zhí)行這個腳本就是生成/UserAgentStyleSheets.h和/UserAgentStyleSheets.cpp文件
然后在編譯的時候把這個cpp文件編譯進去就可以使用了。
基于此所以每當(dāng)你修改對應(yīng)的css文件那么對應(yīng)到源代碼生成所以編譯的時間也就比較長,原理就在上面說的。





