Ubuntu 10.10下如何编译Android froyo?

运维 系统运维
Ubuntu是一份基于Debian的完整的桌面Linux操作系统,它可免费使用,所以使用ubuntu系统的用户也越来越多。当笔者初次把系统升级到Ubuntu 10.10,首先对Ubuntu在UI上的突飞猛进表示大家赞赏,很多细节都做得不错,尤其是对字体效果的优化。下文介绍的是在Ubuntu 10.10下编译Android froyo的方法。

Ubuntu是一份基于Debian的完整的桌面Linux操作系统,它可免费使用,所以使用ubuntu系统的用户也越来越多。当笔者初次把系统升级到Ubuntu 10.10,首先对Ubuntu在UI上的突飞猛进表示大家赞赏,很多细节都做得不错,尤其是对字体效果的优化。下文介绍的是在Ubuntu 10.10下编译Android froyo的方法。

转入正题,发现,随着系统的升级,Android编译的条件也变得相当苛刻了。如果单纯的按照老版本的编 译方法,貌似会很容易碰壁。从昨晚到现在,我就把系统重装了两次(从去年底入手新笔电到现在就装过四次系统= =),原因都归功于新环境下编译Froyo。

首先,对于新版本的Ubuntu,***用64位的,在32位环境下编译,在check阶段都报错。之前就是因为我装的是32位的系统,结果一直没成功,不得不连夜下载64位系统装上,杯具得一比。

  1. warning ************************************************************  
  2.  
  3. warning You are attempting to build on a 32-bit system.  
  4.  
  5. warning Only 64-bit build environments are supported beyond froyo/2.2.  
  6.  
  7. warning ************************************************************ 

如果一定要在32位环境下编译,网上也有解决方案,我试了试,但没成功。

其次是,编译器的版本也要注意,就是gcc和g++,刚开始,我一直安装4.4版本的,结果在编译的时候,发现不少代码编译不通过。起初没留意,自己边改 边把C/C++温习了一把= =,但终究不是解决的办法,总会报些不伦不类的低级错误。想想估计是编译器版本的问题,新版本的编译器对代码解析更加严格了吧。后来还是换回了4.3版本的。

如果以及安装来4.4的,可以在安装4.3后建立链接

  1. cd /usr/bin  
  2.  
  3. ln -s gcc-4.3 gcc  
  4.  
  5. ln -s g++-4.3 g++ 

然后是,SDK编译的必要工具包,如果完全挪用32位编译的工具包,会发现编译过程中缺少很多必要的libs,出现类似 cannot find -lxxx 的错误。因为缺少相关的libs

建议在apt-get install的时候,加上这两个东东:

 

  1. g++-multilib g++-4.3-multilib 

 

或者,直接大胆的拷贝这个= =

 

  1. 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:

 

  1. build/core/base_rules.mk:128: *** dalvik/libcore: MODULE.TARGET.JAVA_LIBRARIES.core already defined by libcore. Stop. 

 

网上有解决方案,请大胆的点击这里,我没试,同步太耗时间来,我直接找到base_rules.mk的第128行,用#注释之! 像这样:

 

  1. #$(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id))) 

 

需要声明的是,这只是在非常情况下做的非常处理,如果在这个地方没报错,就不用修改源文件来。

其实,我觉得,在check tools阶段,需要校验很多模块与工具,比如什么系统是32位还是64位啊,JDK那个版本啊之类的,如果检测到某个工具不满足要求就报错了。我们可以 尝试将这个校验条件给注释掉,跳过对该工具的检测。这种检测应该,我说的是应该,只是为保证安全且成功的编译而提供的一种校验机制,是需要的,但不是必须 的,所以,在一些非常情况,我们可以做一下非常处理。

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

总结:

希望本文介绍的Ubuntu 10.10下编译Android froyo的方法能够对读者有所帮助,更多有关linux系统的知识还有待于读者去探索和学习。

责任编辑:韩亚珊 来源: 雨林木风
相关推荐

2011-07-01 12:52:50

Ubuntu Qt wxWidgets

2011-08-29 16:31:30

UbuntuAndroid

2011-09-02 16:38:26

UbuntuNTFS

2011-08-30 15:53:07

Ubuntussh

2011-09-02 17:12:42

UbuntuGNOME 3

2011-09-05 14:31:50

Ubuntu

2011-09-02 16:23:19

wubiUbuntu

2011-08-29 15:52:12

2011-03-11 12:57:36

UBUNTU10.10安装LAMP

2011-08-29 11:16:27

Ubuntu

2011-08-29 14:53:16

UbuntuMySQLserver

2011-09-14 15:04:47

Android 2.2

2009-12-07 09:52:06

Ubuntu9.10/

2010-11-18 09:40:08

2011-09-07 14:01:34

ubuntuPHP

2012-03-12 17:27:14

Ubuntu10.10正式结束

2011-08-23 09:47:20

UbuntuU盘

2011-09-01 15:44:33

Ubuntu

2011-09-01 13:35:50

Ubuntu中文man

2010-12-15 13:48:01

Ubuntu 10.1JDKEclipse
点赞
收藏

51CTO技术栈公众号