ubuntu10.10下编译Android2.3.3源码

在一切开始之前,先说一下达到的目标(以下的内容部分来自网络,部分为自己摸索得到),欢迎拍砖:

a)编译android源码

b)得到编译后的sdk

c)收集source以便在eclipse中查看android源码

e)编译adt插件

准备必要的软件包:

1

sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool

1.先下载Google改进的使用gitPython脚本文件

2.使用repo初始化

1)初始化为下载所有版本的android源码

1

./repo/repo init -u git://android.git.kernel.org/platform/manifest.git

2)初始化为下载指定版本的源码

1

repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo

3.下载源码

1

./repo/repo sync

4.编译源码

a.修改部分文件来消除指定的错误

在编译的过程中遇到下面的错误:

1

************************************************************

2

3

You are attempting to build on a 32-bit system.

4

5

Only 64-bit build environments are supported beyond froyo/2.2.

6

7

************************************************************

这是因为在Makefile中检测了CPU的字长。直接把build/core/main.mk中下面的话注释掉:

1

#ifneq (64,$(findstring 64,$(build_arch)))

2

#$(warning ************************************************************)

3

#$(warning You are attempting to build on a 32-bit system.)

4

#$(warning Only 64-bit build environments are supported beyond froyo/2.2.)

5

#$(warning ************************************************************)

6

#$(error stop)

7

#endif

接下来又遇到下面的错误:

01

Docs droiddoc: out/target/common/docs/api-stubs

02

03

Could not loadclearsilver-jni

04

05

java.library.path = out/host/linux-x86/lib

06

07

make: *** [out/target/common/docs/api-stubs-timestamp] Error 45

08

09

make: *** Waiting for unfinished jobs….

10

11

Could not loadclearsilver-jni

12

13

java.library.path = out/host/linux-x86/lib

14

15

make: *** [out/target/common/docs/doc-comment-check-timestamp] Error 45

这是由于clearsilver在编译时如果检测到使用Java JDK 6,就使用64位编译。要避开此错误,需要修改下面四个文件:

1

external/clearsilver/cgi/Android.mk

2

external/clearsilver/java-jni/Android.mk

3

external/clearsilver/util/Android.mk

4

external/clearsilver/cs/Android.mk

把这四个Makefile中的下列语句注掉即可:

1

# This forces a 64-bit build for Java6

2

# Comment by Easwy

3

# LOCAL_CFLAGS += -m64

4

# LOCAL_LDFLAGS += -m64

当然也可以把64改为32

若有此错误:

/media/master/external/webkit/WebCore/css/CSSParser.cpp:4533:undefined reference to `WebCore::CSSParser::lex()'

collect2:ld returned 1 exit status

则执行touchexternal/webkit/WebCore/css/tokenizer.flex

b)然后执行make-j2(因为我的电脑是双核,使用j2来加快编译速度,如果实在不知道电脑是几核的,那么执行:

1

make -j`grep '^processor' /proc/cpuinfo | wc -l`)

要说明的是make -jn也不是万能的,如果你使用它出现了编译错误(例如由于什么不能生成什么,而不是缺少什么不能生成什么)的时候,最好只使用make

c)make编译完之后,当编译完成时,生成的image文件放在out/target/product/generic目录中,直接执行:

1

emulator -system system.img -data userdata.img -ramdisk ramdisk.img

来启动一个编译成功的模拟器

d)生成sdk?执行make-j2 sdk

生成的sdk文件在源码顶层目录的out/host/linux-x86/sdk下:android-sdk_eng.archermind_linux-x86.zip.解压后跟从http://developer.android.com/sdk/index.html下载到的sdk并无二致,唯一的区别是我们编译好的sdk至少是含有一个版本的android,比如这个里面含有一个android2.3.3可以直接进行开发.

e)收集源码?collectsource?在源码的顶层目录的sdk/eclipse/scripts下有个collect_sources_for_sdk.py就是我们要找的,这个Python脚本要两个参数:一个是源码所在的顶层目录,一个是目标目录。

执行

1

./collect_sources_for_sdk.py <source_dir> <dest_dir>

搞定!

f)生成ADT?这个比较变态的是:它在编译前先下载eclipse,并且还是3.4的,我勒个去,如果愿意编译的,自己去做吧!方法很简单:执行源码的顶层目录的sdk/eclipse/scripts下的build_plugins.sh

或者build_server.sh

源文档 <http://my.oschina.net/lcx2007/blog/29389>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值