Android源码的编译

一、  配置环境

1.          磁盘
需要6G以上剩余空间

2.          Linux系统

Ubuntu 6.06以上版本,我用的是buntu 8.04,具体请见下篇文档《ubuntu系统的使用》

3.          Git工具(Git 1.5.4以上版本)
它是类似CVS的版本管理工具,如果你的代码不用从网上下载,而是从别人处复制,则无需此工具

$ sudo apt-get install git-core gnupg

4.          Java环境(JDK 5.0 update12以上版本)
$ sudo apt-get install sun-java6-jdk
具体安装请见上篇文档《Android环境的搭建》

5.          Python (Python 2.4以上版本)
http://www.python.org/download/下载2.4以上版本
$ tar xvzf python-2.4.5.tgz
$ cd python-2.4.5/
$ ./configure
$ make; make install

6.          依赖的deb
$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
其中flex bison build-essential zip curl可以从光盘安装
其余gperf libsdl-dev libesd0-dev libwxgtk2.6-dev需要从网上安装,它们还依赖一些安装包,所以要用apt-get下载,不要直接下deb包安装

7.          调试工具
$ sudo apt-get install valgrind

二、  下载及编译运行android源码

1.          下载安装脚本
$ wget http://android.git.kernel.org/repo
$ chmod 777 repo
$ cp repo /bin/

2.          用安装脚本下载源码
$ mkdir android_code
$ cd android_code
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo sync

以上命令是下载最新版本,也可以下载其它版本
如我买的手机,在设置->关于手机->固件版本中看到是1.5,所以下载1.5版本,方法如下
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-1.5r3
$ repo sync
 // 此后会长时间下载

3.          编译

1)         正常编译
$ cd android_code
$ make
映像编译成功后会在目录 android_code/src/out/target/product/generic 下产生一些image文件:ramdisk.img system.img userdata.img

2)         可能出现的问题及解决方法

1.          make若提示找不到-lncurses,则需要做以下链接
ln –s /lib/libncurses.so.5 /lib/libncurses.so

2.          make若提示找不到run-java-tool,则需要设置java的安装路径
$ export ANDROID_JAVA_HOME=$JAVA_HOME

3.          若提提示找不到zlib.h, 则运行如下命令安装zlib开发包
$ sudo apt-get install zlib1g-dev

4.        下了一个最新版本后显示说只能使用java-1.5版本,于是从1.6版本降回1.5
$ sudo apt-get install sun-java5-jdk flex
$ sudo update-java-alternatives -s java-1.5.0-sun

5.          如果报错 "compression requires the missing zlib module" 可能是python找不到zlib
这时需要先安装zlib, 然后重编python, 并取代当前版本python
$ sudo apt-get install zlib1g-dev
$ python2.6 --version

可看到当前版本, 下载当前版本, 重新编译安装
$ tar xvzf python-2.6.2.tgz
$ cd python-2.6.2/
$ ./configure --prefix=/usr/local
$ make; make install

3)        编译sdk
$ make sdk
此时SDK产生于此目录下:android_code/out/host/linux-x86/sdk/
此包如同下载的sdk包,可供eclipse使用,注意把它移动其它位置使用,否则一编译其它应用,它就被删除掉了

4)         编译不同Android硬件平台对应版本
需要在make前先针对设备进行设置,形如:
$ choosecombo 1 1 8 3
使用不同参数,编译结果存存储的目录不同
默认包生成目录:android_code/out/target/product/qsd8250_surf/system/app/*.apk
以上选项包生成目录:android_code/out/target/product/generic/system/app/*.apk

4.          运行

1)        运行普通的虚拟器emulator
emulator
的路径是:

/home/xieyan/bin/android_code/out/
host/linux-x86/bin/emulator
设置环境变量
export PATH=$PATH:android_src/out/host/linux-x86/bin
$ . build/envsetup.sh
$
partner_setup
$ emulator

2)         指定img运行
$ export   ANDROID_PRODUCT_OUT=/home/xieyan/bin/android_code/out/target/product/generic
$ emulator -image system.img -data userdata.img -ramdisk ramdisk.img

三、  常用的源码文件

1.          frameworks/base/core/java/android/widget/下边
Android
系统控件的实现

2.          package/apps
普通应用程序的实现

3.          out/target/product/generic/system/apps/*.apk
安装包生成的位置

四、  参考

1.          官方网站的安装说明
http://source.android.com/download

 

posted on 2009-11-09 12:50  xieyan0811  阅读(15)  评论(0编辑  收藏  举报