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!!


发布评论