【摘录】Ubuntu 10.10编译Android froyo可能需要注意的几个地方

 

http://www.eoeandroid.com/thread-38456-1-1.html

 

周末把系统升级到10.10,首先对Ubuntu在UI上的突飞猛进表示大家赞赏,很多细节都做得不错,尤其是对字体效果的优化。
转入正题,发现,随着系统的升级,android编译的条件也变得相当苛刻了。如果单纯的按照老版本的编译方法,貌似会很容易碰壁。从昨晚到现在,我就把系统重装了两次(从去年底入手新笔电到现在就装过四次系统= =),原因都归功于新环境下编译Froyo。
首先,对于新版本的ubuntu,最好用64位的,在32位环境下编译,在check阶段都报错。之前就是因为我装的是32位的系统,结果一直没成功,不得不连夜下载64位系统装上,杯具得一比。

    1 .  warning  ************************************************************
   
2 .  warning You are attempting to build on a  32 - bit  system .
   
3 .  warning Only  64 - bit build environments are supported beyond froyo / 2.2 .
   
4 .  warning  ************************************************************
如果一定要在32位环境下编译,网上也有 解决方案,我试了试,但没成功。
其次是,编译器的版本也要注意,就是gcc和g++,刚开始,我一直安装4.4版本的,结果在编译的时候,发现不少代码编译不通过。起初没留意,自己边改 边把C/C++温习了一把= =,但终究不是解决的办法,总会报些不伦不类的低级错误。想想估计是编译器版本的问题,新版本的编译器对代码解析更加严格了吧。后来还是换回了4.3版本 的。
如果以及安装来4.4的,可以在安装4.3后建立链接
    1 .  cd  / usr / bin  
   
2 .  ln  - s gcc - 4.3  gcc
   
3 .  ln  - s g ++- 4.3  g ++
然后是,SDK编译的必要工具包,如果完全挪用32位编译的工具包,会发现编译过程中缺少很多必要的libs,出现类似 cannot find -lxxx 的错误。因为缺少相关的libs
建议在apt-get install的时候,加上这两个东东:
g ++- multilib g ++- 4.3 - multilib
或者,直接大胆的拷贝这个= =
sudo apt - get install git - core gnupg flex bison gperf build - essential zip curl zlib1g - dev gcc - multilib g ++- multilib libc6 - dev - i386 lib32ncurses5 - dev ia32 - libs x11proto - core - dev libx11 - dev lib32readline5 - dev lib32z - dev java - common unixodbc  
还有就是, Java JDK版本,之前都说,android只支持1.5版本的JDK,现在,对于Froyo,貌似支持1.6的了,但杯具的是,不支持1.5,编译时在 check阶段,会报错,必须1.6版本的JDK。所以啊,编译的时候注意了,既然允许1.6了,就不要在1.5上挣扎了,hoho~

最后,就是,做好以上准备之后,make之,以为可以看看电视喝喝茶什么的,结果,给我来了这么一个error:
build/core/base_rules.mk:128: *** dalvik/libcore: MODULE.TARGET.JAVA_LIBRARIES.core already defined by libcore.  Stop.
网上有解决方案, 请大胆的点击这里,我没试,同步太耗 时间来,我直接找到base_rules.mk的第128行,用#注释之!像这样:
# $(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id)))
需要声明的是,这只是在非常情况下做的非常处理,如果在这个地方没报错,就不用修改源 文件来。
其实,我觉得,在check tools阶段,需要校验很多模块与工具,比如什么系统是32位还是64位啊,JDK那个版本啊之类的,如果检测到某个工具不满足要求就报错了。我们可以 尝试将这个校验条件给注释掉,跳过对该工具的检测。这种检测应该,我说的是应该,只是为保证安全且成功的编译而提供的一种校验机制,是需要的,但不是必须 的,所以,在一些非常情况,我们可以做一下非常处理。

以上就是我在10.10倒腾了一天的心得体会,希望对大家有帮助,有不对的地方,请大胆拍砖指正,谢谢!

 

转载于:https://www.cnblogs.com/IamEasy_Man/archive/2010/12/08/1900787.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值