一、在Ubuntu 9.10上编译Android源码并使用模拟器运行
1、编译前的准备工作,通过git获取Android的源码
通过git获取Android的源码、配置JDK1.5环境(使用最新的JDK1.6反倒是编译不过去),准备Ubuntu 9.10必要的编译环境。
Android是由Kernel、Dalvik、Bionic、Prebuilt、build等多个项目组成,每个部分分别使用Git进行管理,当时如果使用git命令来逐个获取显得很麻烦,所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,使得项目的获取更加简单。
在Ubuntu 9.10上安装git管理工具,su - 切换到root账户下执行apt-get install git-core curl
通过curl工具从获取Android项目Repo脚本文件。curl http://android.git.kernel.org /repo>~/repo
chmod a+x ~/repo
下载repo脚本文件到当前用户的home目录下,并保存在文件repo中,并给repo文件可执行权限。
执行利用repo脚本和Git、curl软件获取Android的源代码,~/repo init –u git://android.git.kernel.org/platform/manifest.git ~/repo initialized in /android这样的提示,说明本地的版本库已经初始化完毕,并且包含了当前最新的sourcecode。~/repo sync
使用repo sync命令把整个Android代码树同步到本地
remote: Counting objects: 2015, done.
remote: Compressing objects: 100% (484/484), done.
Receiving objects: 72% (1451/2015), 1.88 MiB | 185 KiB/s
Initializing project platform/packages/apps/GlobalSearch ...
remote: Counting objects: 1779, done.
remote: Compressing objects: 100% (290/290), done.
remote: Total 1779 (delta 862), reused 1779 (delta 862)
Receiving objects: 100% (1779/1779), 345.14 KiB | 118 KiB/s, done.
Resolving deltas: 100% (862/862), done.
* [new tag] android-sdk-1.6_r1 -> android-sdk-1.6_r1
* [new tag] android-sdk-tools_r2 -> android-sdk-tools_r2
Initializing project platform/packages/apps/Launcher ...
Fetching projects: 100% (142/142), done.
Checking out files: 100% (16/16), done.ng out files: 50% (8/16)
Checking out files: 100% (8022/8022), done.ut files: 13% (1095/8022)
Checking out files: 100% (5254/5254), done.
Checking out files: 100% (3810/3810), done.out files: 6% (232/3810)
Checking out files: 100% (4398/4398), done.out files: 25% (1137/4398)
Checking out files: 100% (641/641), done.g out files: 17% (110/641)
Checking out files: 100% (9061/9061), done.out files: 22% (2056/9061)
Checking out files: 100% (7942/7942), done.out files: 0% (33/7942)
Checking out files: 100% (1947/1947), done. out files: 2% (44/1947)
Syncing work tree: 100% (142/142), done.
repo sync同步过程,Syncing work tree说明已经同步完成。如果编译后需要获取新版本再次编译,不要重复执行初始化和sync同步过程。