Android ROM研究---如何在ubuntu下下载姜饼(Gingerbread)源代码
Android源代码由两部分组成,其一是Android系统应用部分的代码,其次是Android所使用的内核代码,
由于公司是针对Google nexus s来开发rom,所以需要下载三星的内核代码
Android 系统应用代码 http://android.git.kernel.org/
Android内核代码 http://android.git.kernel.org/?p=kernel/samsung.git
准备阶段:安装JDK
Java 6: for Gingerbread and newer
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/Ubuntu lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
Java 5: for Froyo and older
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk
1、安装一些必备的软件。
Git是Linux Torvalds为了帮助管理Linux内核而开发的一个开放源码的分布式版本控制系统软件,它不同于SVN,CVS这样集中式的版本控制系统。在集中式版本控制系统中只有一个仓库(repository),
许多个工作目录,而git这样的分布式控制系统中,每一个工作目录都包含一个完整仓库,它们支持离线工作,
本地提交可以稍后提交到服务器上。分布式系统理论上也比集中 式的单服务器系统更健壮,单服务器系统一旦
服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而收到影响。
因为Android是由kernel,Dalvik,Bionic,prebuild,build等多个Git项目组成,
所以Android项目编写了一个名为repo的python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单。
$sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos
2、创建源代码目录
首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它加到PATH环境变量中,
这个bin目录名字随便,是用来存放你下载的android系统应用源代码的
#cd
#mkdir bin
#export PATH=$PATH:/root/bin
3、用curl下载repo脚本,并保存在~/bin/repo文件中
#curl http://android.git.kernel.org/repo >~/bin/repo
为repo加上执行权限
#chmod a+x ~/bin/repo
4、初始化版本库
由于google nexus s所使用的是android 2.3.4版本的系统
首先建立一个目录,用来存放下载下来的东西
#mkdir repo
#cd repo
选择你所下载的版本号,Nexus S对应的是crespo android-2.3.4_r1
Device Branch Build configuration
crespo android-2.3.4_r1 full_crespo-userdebug
crespo4g gingerbread full_crespo4g-userdebug
passion android-2.3.4_r1 full_passion-userdebug
sapphire android-2.2.2_r1 full_sapphire-userdebug
dream android-2.2.2_r1 full_dream-userdebug
以后,执行如下命令
#repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread由于之前下载的是android2.3.3版本的,所用的参数是android-2.3.3_r1,但是用android-2.3.4_r1测试后不能下载,
需要的参数是gingerbread
注意:如果要是把所有的版本都下载下来,那时间是需要很久很久的,需要耐心等待,但是如果仅仅是下载某一个版本的话,
很快就可以了。
最后,如果看到repo initialized in /repo的提示,说明本地的版本库已经初始化成功了(期间需要你填写姓名和邮件)
5、执行repo sync命令
在执行该命令之前,需要做一些改动,因为如果用git的方式下载的话,需要很多时间不说,而且不一定有结果,可能还会出现
Connection timed out错误等。所以进入.repo文件夹下打开后找到清单manifest.xml(manifest.xml为隐藏文件,
得显示文件后才能看到)
#cd .repo
#ll
#vim mainfest.xml
将fetch=” git://android.git.kernel.org/”修改为fetch=”http//android.git.kernel.org”[[br ]] 通过用http的方式穿透,然后执行repo sync
#repo sync
如果出现如下的字样的话,说明下载完成了,否则,嘿嘿,你懂的。
Java代码
Syncing work tree:100%(168/168),done.
这个下载过程同样需要很久,少则几个小时,多则几天,依赖于网速