建立 Android 源码开发环境

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

](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

](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

  1. 可能出现的 问题及解决方法

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

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

  2. 编译不同 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