移植Clutter到Android的念头是一年前萌发的,那会入手了一台Free Runner,而Openmoko网站上又有移植好的Android 1.1。出于兴趣吧,也是无奈,G1刚上市,搞不到啊,想看看Android到底是什么样子,就把它烧到T卡里做双启动。发现Android在Free Runner上挺慢的,一直怀疑Free Runner是GTA01......Android并没有觉得眼前一亮的感觉,skia和opengles都不熟,想做个炫点的东西无从下手。巧的是之前几个月,因为intel收购o-hand,对clutter,poky,matchbox略有研究。于是就想把clutter弄到Android上看看。后来,出了趟长差,还有另一项目,一直都是分身无数啊,直到最近一个新的项目的预研才有了时间干别的,于是就又想起了clutter和android。
clutter依赖的库有glib,cairo,pango,gdk-pixbuf等,还好他们依赖的库,比如jpeg,freetype已经包含在external目录下了。一开始对android的编译环境不了解,也是习惯了configure/make/make install三部曲,真的无从下手,还好可以参照自带的其他库来写,但是问题又来了,pre_link,后来都赋成false。熟悉了编译过程以后,每个库的makefile都是依葫芦画瓢的写了。我一开始的做法是先把clutter搭起来再说,Android也是基于linux构建的,应该没差那么多吧,但事实并非如此,结果segment fault也是可以预见的了,偷鸡不成啊。只能一个一个的来了,测试每个lib,改每个lib,期间也解了如何在android调式c代码,不错的学习过程。经过反反复复的过程,终于把clutter的一个测试跑下来了,有stage,actor,timeline,animation等。下一步,接event和text测试。最终计划把clutter驾到skia上。
下图是clutter的测试程序,6个转圈的红手
现在官方发布了java的绑定,jclutter。