月度归档:2012年05月

Chromium for Android第一手尝鲜

最近一段时间为了移植webkit忙得焦头烂额,好久都没有关注Chromium for Android的进展了。Chrome for Android又升级了,虽然仍然是beta版,但性能已经提升了不少,不过没有开源,所以也不知道google做了什么,能够大幅提升性能。前几天又更新了一下chromium的源码,发现增加了不少java代码,android的移植代码基本就绪,build target增加了content_shell_apk。尝试着build了一把,最终编译出ContentShell-debug.apk,看文件大小,吓了一跳,有300多M,展开后,里面有个libcontent_shell_content_view.so高达800多M。仔细再看了一下,原来脚本中只对libs/armeabi-v7a/libcontent_shell_content_view.so进行了strip,尺寸立马减少到20多M,而libs/armeabi/libcontent_shell_content_view.so则是未strip的版本,800多M。把libs/armeabi/libcontent_shell_content_view.so删掉,重新打包,最终APK只有12M。

这个Content Shell比较类似于test_shell程序,只提供简单的UI,是用来验证移植正确性的,所以并不是真正意义上的浏览器。不过开发者可以基于这个,加上UI外壳,就可以包装成一个浏览器了。不过目前这个Content Shell程序还未完善,放到模拟器和手机上只显示一片空白。

大概研究了一下chromium android的移植代码:

    1. 与Android framework相关的移植代码使用java编写,chromium项目甚至写了一个程序来自动生成JNI接口。
    2. Java部分的代码是使用ant编译和打包的。
    3. src/build/android/gdb_content_shell脚本用于调试native代码。
    4. 运行build/install-build-deps-android-sdk.sh脚本,将ndk原始的arm-linux-androideabi-ld替换成gold版本,这可以极大的提升链接速度(i7 2630QM, 4G RAM,link一次20~30分钟)。在没有替换之前,link一次需要花上2、3个小时。
    5. 只支持android 4.0以上版本。

Chromium for Android虽然不完善,但是大部分移植工作都已经完成,剩下的只需要提供UI即可,这可是国内厂商擅长的事情。还犹豫什么,赶快投入到chromium for android上面来吧。

2012-08-02补充:

解决了网页显示问题,虽然还存在bug,不过网页加载流程及渲染的流程已经打通了。下面是截图:

查看进程信息: