1. 环境配备
首先,准备好所需要的linux操作系统以及磁盘空间,磁盘空间要足够大。memory >1G,hard disk> 40G
1.1. 安装JDK1.6:sudo apt-get install sun-java6-jdk
1.2. 安装开发过程中需要的一些开发包
sudo apt-get install git-core gnupg valgrind flex bison gperf libsdl-dev libesd0-devlibwxgtk2.6-dev build-essential zip libncurses5-dev zlib1g-dev
若自带的源里面找不到所需要的安装包,可以添加软件源:
添加源的过程:
① 备份当前的源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
② 修改 sudo gedit /etc/apt/sources.list
③ 修改之后保存更新 sudo apt-get update
准备好了获取android源码所需要的环境,下面开始获取android源码
2.获取android源码
2.1. 在用户目录下新建一个文件夹来存放我们的android目录
① mkdir android
② cd android
③ mkdir bin
④ cd bin
⑤ 安装repo, 通过curl下载repo:curl http://git-repo.googlecode.com/files/repo-1.17 > repo
(如果没有安装curl,sudo apt-get install curl)
sudo chmod a+x repo
⑥ 然后向PATH中添加bin路径:exportPATH=$PATH:~/bin
2.2. 建立存放android源代码目录source
① mkdir source
② cd source
③ 获取git上的android源码版本: ../bin/repo init -uhttps://android.googlesource.com/platform/manifest -b android-4.0.3_r1
④ 当出现提示时,请配置您的真实姓名和电子邮件地址回购。使Gerrit代码审查工具,将需要注册的Google户连接的电子邮件地址。确保这是一个激活活的地址上,你可以接收邮件。你在这里所提供的名称将显示在您的代码提交的属性中,完成之后出现“repoinitialized in/home/***(自己用户名)/android”,则表示初试化完毕,可以开始下载,在Repo初始化完毕后,会产生一个隐藏的目录”.repo”,通过查看此目录下的manifest文件可以看到相应的Project。
⑤ 在终端执行命令开始下载: ../bin/reposync
3.下载android内核
新建存放android内核的目录
①mkdir kernel
②cd kernel
③android的kernel有多个部分,可根据需要运行以下命令下载需要的内容。git clone https://android.googlesource.com/kernel/goldfish.git
下载android内核时间会比下载源码时间短,需要注意的是,android内核的下载不能被中断,而android源码支持断点下载。下载的内容是隐藏的,用du –sk命令来检测文件夹的大小
4.编译android源码
编译。在Android/source目录下执行以下命令:make
第一次编译要等待比较久的时间,编译成功后,可以看到下面的输出:
编译的时间一般不会比下载的时间长。在默认的情况下,编译完成之后,会在/root/android目录下面生成一个out文件夹,生成的所有文件都放在该文件夹下。编译生成之后会在out/target/product/generic/目录下生成一些.img镜像文件
5. 编译android内核
5.1. 确定内核的版本
进入存放android内核源码的kernel目录,我下载了goldfish.git,进入goldfish目录,在命令行输入以下命令,显示所有分支及当前所在的分支:
$git branch -a
输入以下命令选择当前的版本(goldfish为android的模拟器描述的CPU):
$git checkout -b android-goldfish-2.6.29origin/android-goldfish-2.6.29
再次输入命令git branch -a,将会显示刚刚选择的最新分支,表示目前工作在这个被选择的分支上,输出如下:
5.2. 设定环境变量
export PATH=$PATH:~/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-eabi-
5.3. 编译内核源码
设置完之后,就是编译android内核源码了,进入kernel目录,输入以下命令
$make ARCH=arm goldfish_armv7_defconfig
$make
第一条命令为编译时的默认配置文件。如果不执行这条命令,编译时可能会提示“找不到配置文件”。第一条命令执行完后,会在goldfish目录下生成一个.config文件。之后便是一段时间的等待了。。。时间不长,一会即可编译好,比编译android源码时间要少得多。编译完成之后,会在“kernel/arch/arm/boot/”目录下生成名为zImage的文件。
6. 运行android系统
设置路径
export PATH=$PATH:~/android/source/out/host/linux-x86/bin/
export ANDROID_PRODUCT_OUT=~/android/source/out/target/product/generic/
加载:emulator–kernel ./kernel/goldfish/arch/arm/boot/zImage