`

【原创】android2.3如何加入对wml的支持

 
阅读更多
其实就是改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。
分享到:
评论

相关推荐

    支持WML的浏览器,可以进行手机上网~!支持HTTP协议!

    标题中的“支持WML的浏览器,可以进行手机上网~!支持HTTP协议!”表明这是一个能够浏览WML(Wireless Markup Language)网页的浏览器,同时它也支持HTTP协议,这是互联网上最常用的通信协议之一,用于传输超文本...

    WML语言参考教程 WML

    理解WML需要对WAP的结构和工作原理有一定的了解。 ### 五、WML与XHTML-MP 随着技术发展,WML逐渐被XHTML-MP(Mobile Profile)取代,后者提供了更丰富的功能和更接近HTML的语法,同时兼容WML,以保证向后兼容性。 ...

    Learning WML & WML Script

    《Learning WML & WML Script》是一本由Martin Frost编写的书籍,专注于介绍无线标记语言(WML)和WML脚本,适用于那些希望在移动通信领域开发内容的开发者。WML是Wireless Markup Language的缩写,是为无线应用平台...

    wml.rar_WML

    随着技术的发展,WML逐渐被XHTML MP(Mobile Profile)取代,XHTML MP是XHTML的一个子集,兼容更多的HTML特性,并增加了对移动设备的支持。这使得开发者可以创建更丰富、更一致的跨平台移动内容。 四、WML的实用...

    wap wml

    WML编程涉及使用特定元素来处理用户输入,如`&lt;input&gt;`元素,以及对文本进行格式化的元素,如`&lt;font&gt;`和`&lt;b&gt;`。此外,还包括卡片、卡片组(`&lt;deck&gt;`)的使用,它们是WML的导航结构基础。WML还支持任务(`&lt;go&gt;`元素)、...

    WML语法大全WMLScript语法大全

    WML遵循XML的字符集,即ISO/IEC-10646(Unicode 2.0),并支持其子集,如US-ASCII、ISO-8859-1或UTF-8。在WML中,大小写是敏感的,所有标签、属性和枚举属性必须使用小写字母。参数名称和值也区分大小写,例如,`...

    wml教程及常用功能介绍

    **WML(Wireless Markup Language)教程及常用功能介绍** WML,无线标记语言,是专为移动设备设计的一种标记语言,主要用于创建...通过学习WML教程,不仅可以掌握一种历史技术,还能增进对现代移动开发的深入理解。

    WML1.1协议标准

    4. **表单处理**:WML支持简单的表单元素,如`&lt;input&gt;`、`&lt;select&gt;`、`&lt;option&gt;`等,用于用户输入和数据提交。 5. **变量与脚本**:WML1.1通过`&lt;var&gt;`元素可以创建变量,但不支持复杂的脚本语言,通常配合WAP网关的...

    WML 详细中文教程

    3. **事件响应**:WML支持简单的事件处理,如`onenterforward`和`onenterbackward`,用于定义用户在卡片间导航时的响应。 **四、WML的样式和布局** 1. **WML样式表(WCSS)**:与CSS类似,WCSS用于定义WML文档的...

    wml详细讲解(exe+word)

    这些新的标准能够提供更好的视觉效果、更丰富的媒体支持以及更强大的交互性,同时保持对小屏幕设备的良好适应性。 **学习WML的重要性** 虽然WML在当今已不再是最前沿的技术,但对于初、中级学习者来说,了解WML有...

    关于wml的常见问题解答

    关于WML的深入解析及其与HTML的对比 一、WML概述 WML,全称为Wireless Markup ...尽管随着技术的进步,诸如HTML5等现代Web标准在移动设备上的支持变得更为广泛,WML的历史地位和对早期移动互联网的影响不可忽视。

    编写wml的简单工具

    3. **模板支持**:可能内置了一些常见的WML模板,方便用户快速创建基本的WML结构。 4. **错误检查**:具有实时语法检查功能,能在编写过程中及时发现并提示错误,避免因为语法问题导致的编译失败。 5. **预览功能*...

    HTML到WML格式转换

    3. 适应性调整:由于WML是为小屏幕设备设计的,可能需要对HTML页面进行布局调整,如减少图片大小,优化字体显示,确保内容适应窄屏阅读。 4. 压缩内容:考虑到无线网络的带宽限制,WML页面通常需要进行压缩,去除...

    WML和script中文文档

    WML(Wireless Markup Language)和...WAP手机网站的开发需要对WML和WML Script有深入理解,同时考虑用户体验和设备限制。通过学习提供的中文文档,开发者可以掌握这些技能,创建出适应移动设备的高效、易用的网站。

    wml编程

    WAP编程涉及对WML的理解和应用,还包括服务器端的WAP网关交互、数据传输格式(如WMLScript或JavaScript的子集)和用户交互设计。通过WAP编程,开发者可以创建功能丰富的移动应用程序,如信息浏览、在线购物、游戏等...

    WML标签及WML语法介绍手册

    **WML(Wireless Markup Language)**是一种专为无线设备如早期的移动电话设计的标记语言,用于创建适应小屏幕的交互式应用。WML标签和语法是构建这些应用程序的基础,下面将详细介绍WML标签的基本结构和常用属性。 ...

    wml语言

    WML和WMLScript是构建WAP应用的核心技术,而Ericsson WapIDE 2.0和Nokia WAP Toolkit 1.2等工具包则提供了完整的开发环境和支持。学习WML语言及其相关技术不仅能够帮助开发者理解移动互联网早期的技术架构,而且对于...

    wml转换为html

    通过解压并应用上述方法,可以观察转换前后文件的差异,加深对WML到HTML转换的理解。 总之,XSLT是一种强大的工具,能够帮助我们有效地将WML内容迁移到更现代化的HTML格式,从而更好地适应现代Web环境。在实际工作...

Global site tag (gtag.js) - Google Analytics