前不久发现android默认没有放开对wml的支持,这样就导致某些网站无法访问,从网上搜索到的文档都说只要ENABLE_WML=1就可以支持,但是我把ENABLE_WML设置成1之后,就出现了编译通不过的情况,经过一番调试,最终可以编译并且实现了对wml的支持。
下面主要纪录一下如何编译通过,编译不通过一开始都是说找不到WMLNames.h之类的错误,所以我们需要在脚本里面添加上生成该文件的语句,并且把wml里面的头文件都include进来。
首先在external/webkit下的Android.mk 中添加
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) /
$(LOCAL_PATH)/WebCore/wml
然后在Android.derived.mk中添加wml的user agent style sheets
style_sheets := $(style_sheets) $(LOCAL_PATH)/css/wml.css
参考XMLNames.cpp的生成方式,生成wml对应的WMLNames.cpp .h等
ifeq ($(ENABLE_WML), true)
GEN:= $(intermediates)/WMLNames.cpp $(intermediates)/WMLNames.h $(intermediates)/WMLElementFactory.cpp $(intermediates)/WMLElementFactory.h
$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --tags $(wml_tag) --attrs $(wml_attrs) --factory --wrapperFactory --output $(dir $@)
$(GEN): wml_tag := $(LOCAL_PATH)/wml/WMLTagNames.in
$(GEN): wml_attrs := $(LOCAL_PATH)/wml/WMLAttributeNames.in
$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(wml_tag) $(wml_attrs)
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
endif
这样在out目录下就会生成WMLNames.cpp等文件
当然同样需要把webkit/webcore/wml下的文件都添加的Android.mk中来编译。
要让android支持wml,还需要进行一些代码方面的修改,具体可以参考 http://www.bangchui.org/simple/?t11016.html
写完了,发现编译通不过的时候很着急,现在看看其实改动没有很大,呵呵