android源代码下载和编译教程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android源代码由两部分组成,其一是Android系统应用部分的代码,其次是Android 所使用的内核代码,如果针对Google Nexus S来开发ROM,就需要下载三星的内核代码Android 系统应用代码:

https:///platform/manifest

Android内核代码:

https:///kernel/samsung.git

准备阶段:设置Linux编译环境(本人是Ubuntu 11.10 ,32位系统),一般你需要以下配置:

Python 2.5 -- 2.7.

GNU Make 3.81 -- 3.82,,

JDK 6 (for Gingerbread or newer); JDK 5( for Froyo or older).

Git 1.7 or newer.

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 python-markdown \

libxml2-utils xsltproc

$ sudo apt-get install libx11-dev:i386

2、创建源代码目录

首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它加到PATH 环境变量中:

$ mkdir ~/bin

$ PATH=~/bin:$PATH 或者$export PATH=$PATH:~/bin

3、用curl下载repo脚本,并保存在~/bin/repo文件中:

$ curl https:///dl/googlesource/git-repo/repo > ~/bin/repo

为repo加上执行权限

$ chmod a+x ~/bin/repo

4、初始化版本库

首先建立一个目录,用来存放下载下来的东西

$mkdir MyAndroid

$cd MyAndroid

以后,执行如下命令

$ repo init -u https:///platform/manifest -b android-2.3.7_r1

我这里下载的是android2.3.7版本的,所用的参数是android-2.3.7_r1。由于最新的是android-4.0.3_r1,所以使用上面即可下载2.3.7的源代码

注意:如果要是把所有的版本都下载下来,那时间是需要很久很久的,需要耐心等待,但是如果仅仅是下载某一个版本的话,还是很快就可以了。

最后,如果看到repo initialized in /MyAnroid的提示,说明本地的版本库已经初始化成功了(期间需要你填写姓名和Gmail地址)。

5、执行repo sync命令

$repo sync

如果出现如下的字样的话,说明下载完成了:

Syncing work tree:100%(168/168),done.

这个下载过程同样需要很久,少则几个小时,多则几天,依赖于网速。

6、编译Android系统应用的源代码

$cd ~/MyAndroid

这里的这个MyAndroid目录其实就是你下载后源代码所在的位置,查看该文件夹下的东西类似如下

|-- Makefile |-- bionic (bionic C库)

|-- bootable (启动引导相关代码)

|-- build (存放系统编译规则及generic等基础开发包配置)

|-- cts (Android兼容性测试套件标准)

|-- dalvik (dalvik JAVA虚拟机)

|-- development (应用程序开发相关)

|-- external (android使用的一些开源的模组)

|-- frameworks (核心框架——java及C++语言)

|-- hardware (主要保护硬解适配层HAL代码)

|-- out (编译完成后的代码输出与此目录)

|-- packages (应用程序包)

|-- prebuilt (x86和arm架构下预编译的一些资源)

|-- sdk (sdk及模拟器)

|-- system (文件系统库、应用及组件——C语言)

这时,如果直接执行make命令的话,会出现错误,这是因为在make(编译)之前,需要安装一些依赖包才能够正常编译,否则会出现各种各样的问题。

7、编译android 2.3.7系统源代码

首先,需要注意的是,下载后的源代码先不要编译,最好备份一下,然后再编译。不能直make。

(1)进入到你的bin目录下,清理编译过的文件,释放空间

$make installclean

$make clean

(2)用envsetup.sh脚本初始化环境变量

$source build/envsetup.sh

或者

$. build/envsetup.sh

(3)选择版本号,执行lunch操作

这里我选择了1。直接在emulator上跑。

(4)开始编译源代码

$make -j4

其中-j(n)表示用n核cpu编译,这样会更快速,可以用top命令查看cpu的个数

完成编译大约1个小时左右

8、以下是各种错误对应的解决办法:

编译过程中可能会遇到一些错误,把错误直接google,一般都能找到解决方法的。编译成功后,会在~/MyAndroid/目录下得到~/MyAndroid/out/target/product/generic。编译好的源代码会在out目录下生成两个img镜像文件,可以先执行$updatedb 创建数据库,用来方便查询所需的文件:

$locate system.img

$locate userdata.img

9、配置环境变量

在编译过程中,系统会自动为你设置好必要的环境变量的。

10、在模拟器上运行编译好的镜像文件

相关文档
最新文档