Android ICS WebKit移植详解:Java框架与关键技术

需积分: 9 56 下载量 81 浏览量 更新于2024-08-16 收藏 557KB PPT 举报
"本文主要分析了Android ICS中webkit的移植过程,重点讲解了Java层框架和webkit核心层的相关内容,以及在移植过程中涉及到的关键技术点。" 在Android ICS中,WebKit作为浏览器内核被用于网页的解析和渲染。这个版本的WebKit基于Chromium 12.0.742.130,对应WebKit版本534.30,源码控制版本号为r84325。JavaScript引擎默认使用V8,同时支持Chrome的HTTP栈。Android的WebKit移植工作分为Java层和WebKit核心层两部分,前者主要是提供API供应用程序调用,后者则包含了WebCore和V8,负责网页内容的布局和渲染。 在移植过程中,开发者可以依据需求选择开启或关闭特定的特性。例如,ENABLE_SVG用来决定是否支持SVG图形,SUPPORT_COMPLEX_SCRIPTS则关乎复杂脚本的支持。此外,还可以选择不同的JavaScript引擎(默认为V8,也可选JSC),HTTP_STACK可以选择使用Chrome的HTTP协议实现或是Android原生的Java HTTP库。其他特性如自动填充(ENABLE_AUTOFILL)和2D加速(ENABLE_WTF_USE_ACCELERATED_COMPOSITING)也是可配置的。 WebKit移植的关键在于WTF(Web Core Foundation)库的适应性修改。WTF是一个基础库,被WebCore和JavaScriptCore广泛使用,它包含了无关联的容器实现、引用计数类、字符串处理、Unicode编码和线程接口等。对于Android平台,线程接口利用了pthread库,而字符串编码和解码则依赖于ICU(International Components for Unicode)库。主线程调度功能通过Java层实现,具体在PlatformBridge.cpp中的scheduleDispatchFunctionsOnMainThread方法。 WebCore的移植工作主要集中在platform子目录下。在这个阶段,移植涉及的组件如Clipboard、ContextMenu和Cursor可能需要根据Android系统的特点进行定制或为空实现。Clipboard在Android上可能没有具体的功能,ContextMenu可能未被完全支持,而Cursor则因为Android系统的交互模式差异,可能需要重新设计以适应触摸操作的环境。 Android ICS的WebKit移植是一项复杂的工作,涉及到对WebKit核心组件的深入理解和对Android平台特性的灵活适配。这不仅需要对Java和C++编程有扎实的掌握,还需要理解操作系统层面的交互和API设计。移植成功后,可以为用户提供一个高效、功能丰富的移动浏览体验。