2024年6月2日发(作者:)

Ubuntu10.4编译funambol android源码

近来看到互联网的云服务正火起来,各大互联网企业都在为自己的客户提供一个数据的存储,而

又想让数据在各在平台之间同步。现在最出名的同步协议要数syncml协议了,于是想研究一个

syncml同步协议,于是下载到了funambol的android的源码来看看。

但没想到要经历这么多不可思议的的编译过程,由于本人很少linux下的开发经验,所以难免。

下面来说说自己的编译经历,希望可以为像我一样的菜鸟提供一些帮助。

下载后的android源码有个叫,里面说了大概的编译需要的条件和编译过程,但

事情不要像你想象的这么简单。

首先你要安装

java 1.6 SDK

这个不多说了通过sudo apt-get install sun-java6-jdk可以安装,安装后配置相关环境

变量。

Ant

这个也可以通过sudo apt-get install ant安装

-Contrib Task

这个从/下载

4.0

注意这个工具,这不是javac,一开始本人粗心,以为是javac,搞了半天才知道这是

javacc是一个java语法分析生成器,通过sudo apt-get install javacc也搞定。

d SDK

这个不多说了,安装后配置sdk环境变量

sion client

这个既然已经下载了源码,就可以先不用了。以后要新的代码再说吧。

开始编译吧,我们编译是用ant来完成的,打开一个终端并进入到源码的根目录,输入ant就可

就可以了。但先简单说ant这个工具,ant是为了避免写太多的makefile之类的,它是通过编写

和ties来进行一些配置。执行ant命令时,它会自动查找,如果

找不到会说是Buildfile: does not exist!

Build failed.我们下载的源码目录里有一个e文件,把它复制一份并修

改文件名为,也用一样的方法。这时我们就要修改里面的配置

了,不然就会遇到我一样多的问题,打开ties文件修改sdk-folder变量为你的

android sdk目录。修改javacchome目录为你安装的javacc的安装目录,用apt-get安装的话

默认会安装在/usr/share/java目录下,所以这里加入javacchome=/usr/share/java这一行。

好,先开始编译吧。一执行ant,发现说是找不到[taskdef] Could not load definitions from

resource net/sf/antcontrib/. It could not be found.这是因为找不到ant-contrib-

的缘故,看开始的注释 ,这是叫你把下载到的放到$ANT_HOME/lib下,

找到ant安装目录,默认是在/usr/share/java/ant,把下载到(我下载的是ant-

)放到/usr/share/java/ant/lib下。

好了继续编译,发现很多编译错误,都是javac编译java文件产生的找不到符号,大部分是

anroid本身的类。通过个现象可以大概知道是找不到对应的jar引起的,找到的

,这是

android SDK的路径,替换你的sdk路径。真搞不懂,为什么已经在ties里定义了

sdk-folder还要在这定义这个变量,郁闷。继续编译,但发现出现

):/home/cmdmac/funambol/externals/java-sdk/pim/build/android/(168

funambol JavaCC home must be a valid directory,说是JavaCC home目录是不正确的,但我

们确实已经设置了javacchome=/usr/share/java。找到那个文件你会发现还有一个

ties,我们需要修改这个文件里的javacchome变量为/usr/share/java,默认写的是C:

/...,记不清了,反正就是不正确的。好了,再编译一次,出现一大串东西后,终于出现BUILD

SUCCESSFUL,哈哈, 终于编译成功了,编完后会在external-libs产生好多个jar文件。

编完了想用eclipse来看看,再运行看一下吧,这时只要复制eclipse开头的文件重命名为

eclpse相应的名称就行了,你可能还要遇到Unable to resolve target 'android-5' 的错误,只要修

改ties的target为你已经安装了的SDK版本如target=android-8并修改

文件的miniSdk为相应的版本就好。

Have fun!!