Android如何加入对开宏wml的支持
来源:互联网 发布:域名高价赎回多少钱 编辑:程序博客网 时间:2024/04/29 04:31
其实就是改makefile文件:
1,开启宏定义:
在external/webkit/Android.mk中开启宏:
- ifeq ($(ENABLE_WML), )
- ENABLE_WML := true
- endif
意思是:如果ENABLE_WML环境值没有被定义过,则定义它为true。
然后在同一个文件下加入:
- ifeq ($(ENABLE_WML), true)
- LOCAL_CFLAGS += -DENABLE_WML=1
- endif
这里的-D编译选项是用来定义代码中的宏的,即设置c/c++中的DENABLE_WML宏的值为1,这就相当于在代码中#define ENABLE_WML 1。
小提示:JavaScriptCore/wtf/Platform.h这里有很多#defineENABLE_XXX的宏,可以修改一些宏的值来配置。这里看一下有没有ENABLE_WML,如果没有,就加
#define ENABLE_WML 1;
2,包含头文件
在external/webkit/Android.mk文件中,你可以看到很多LOCAL_C_INCLUDES变量。
在两个地方加入对wml头文件的引用:
- LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
- $(base_intermediates)/WebCore/ \
- $(base_intermediates)/WebCore/css \
- $(base_intermediates)/WebCore/html \
- $(base_intermediates)/WebCore/platform \
- $(base_intermediates)/WebCore/wml
- LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
- $(LOCAL_PATH)/WebCore/workers \
- $(LOCAL_PATH)/WebCore/xml \
- $(LOCAL_PATH)/WebCore/wml
3,加入源文件的引用
在external/webkit/WebCore/Android.mk文件中,可以看到很多源文件的引用,在文件的最末尾,加上wml的源文件。
- ifeq ($(ENABLE_WML), true)
- LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
- wml/WMLAccessElement.cpp \
- wml/WMLAElement.cpp \
- wml/WMLAnchorElement.cpp \
- wml/WMLBRElement.cpp \
- wml/WMLCardElement.cpp \
- wml/WMLDocument.cpp \
- wml/WMLDoElement.cpp \
- wml/WMLElement.cpp \
- wml/WMLErrorHandling.cpp \
- wml/WMLEventHandlingElement.cpp \
- wml/WMLFieldSetElement.cpp \
- wml/WMLFormControlElement.cpp \
- wml/WMLGoElement.cpp \
- wml/WMLImageElement.cpp \
- wml/WMLImageLoader.cpp \
- wml/WMLInputElement.cpp \
- wml/WMLInsertedLegendElement.cpp \
- wml/WMLIntrinsicEvent.cpp \
- wml/WMLIntrinsicEventHandler.cpp \
- wml/WMLMetaElement.cpp \
- wml/WMLNoopElement.cpp \
- wml/WMLOnEventElement.cpp \
- wml/WMLOptGroupElement.cpp \
- wml/WMLOptionElement.cpp \
- wml/WMLPageState.cpp \
- wml/WMLPElement.cpp \
- wml/WMLPostfieldElement.cpp \
- wml/WMLPrevElement.cpp \
- wml/WMLRefreshElement.cpp \
- wml/WMLSelectElement.cpp \
- wml/WMLSetvarElement.cpp \
- wml/WMLTableElement.cpp \
- wml/WMLTaskElement.cpp \
- wml/WMLTemplateElement.cpp \
- wml/WMLTimerElement.cpp \
- wml/WMLVariables.cpp
- endif
4,加入wml的css文件
在external/webkit/WebCore/Android.derived.mk文件中,找到style_sheets := $(LOCAL_PATH)/css/html.css,在这句的下面加上:
- ifeq ($(ENABLE_WML), true)
- style_sheets := $(style_sheets) $(LOCAL_PATH)/css/wml.css
- endif
5,生成WMLNames.h文件:
在external/webkit/WebCore/Android.derived.mk文件中的最后,加上:
- #WML attribute names
- 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
注意:$(transform-generated-source)之前是个tab键。
6,对wml的mimeType的支持
在DOMImplementation.cpp文件中,在external/webkit/webcore/dom目录下,找到isXMLMIMEType方法,加入:
- #if ENABLE(WML)
- if (mimeType =="text/vnd.wap.wml")
- return true;
- #endif
7,修改framework
在framework/base/core/java/android/webkit/LoadListener.java中的handleHeaders方法,找到
else if (mMimeType.equals("text/vnd.wap.wml"));把里面处理成html的形式改成mMimeType = "text/vnd.wap.wml";
经过以上步骤,编译webkit,最好在编译webkit之前,执行一下rm ../../out/target/product/dkb/obj/STATIC_LIBRARIES/libwebcore_intermediates/ -rf 命令,编译framework。
- Android如何加入对开宏wml的支持
- 为Android添加对WML的支持
- Android webkit对WML的支持?
- 修改Android的编译文件使其支持wml
- 修改Android Webkit使浏览器支持WML格式的页面
- 为Android添加对WML的支持 (一)
- 为Android添加对WML的支持 (二)——添加支持WML输入框 input
- Android浏览器Browser二次开发(二)支持WML
- android ICS原生态Browser上增加对WML的支持
- android 对开源项目FragmentOrientedApplication的理解
- nodejs对开源数据库mysql、firebird的支持
- MaxCompute2.0 对开源系统的支持与融合
- 如何在程序中加入对vbscript的支持
- 如何在SharePoint加入对PDF文件的支持
- qt2.3.7中如何加入filedialog的支持
- 让IIS支持wml
- IIS6支持WML
- Webkit之支持WML
- jQuery Ajax 全解析
- NYOJ-25-A Famous Music Composer-2013年09月26日08:54:55
- javascript和php,asp区别
- 数据库优化方案
- Tomcat --> Cannot create a server using the selected type
- Android如何加入对开宏wml的支持
- hdu4424 并查集
- 红黑树(RBTree)之删除结点图解
- Linux DHCP服务器
- [Algorithm_Learn_03]原地排序之堆排序
- uva 10422 Knights in FEN
- Oracle数据操作脚本
- poj 2442 sequences(堆排列)
- 从文件 I/O 看 Linux 的虚拟文件系统