android源代码下载和编译教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、在模拟器上运行编译好的镜像文件