1 Linux系统安装
1.1 下载ubuntu10.04(32bit)和DAEMON Tools Lite
1.2 安装
运行DAEMON Tools Lite按步骤操作即可。
建议:使用root账户登录会节省不少时间,可以安装VMWare Tools。
2 下载源码
2.1 设置软件源
可以查阅sdk文档。
2.2 下载源码
可以查阅sdk文档。kernei的代码单独下载,git clone git://android.git.kernel.org/kernel/common.git kernel
例如Android2.2
apt-get install git-core curl #两个下载工具
mkdir -p /develop/android_source #在根目录下建立文件夹
cd ~/develop/android_source #进入目录中
curl http://Android.git.kernel.org/repo > ./repo #从源码网站下载repo脚本,Google提供的方便下载整套源码工具
chmod a+x repo #设置该脚本为可执行
./repo init -u git://Android.git.kernel.org/plateform/manifest.git -b froyo #初始化git库
./repo sync #开始下载
3 编译源码
3.1 部署JDK
下载JDK,如果是xxx.bin,通过 ./xxx.bin执行解压,然后在配置文件中部署。
如果是root用户,在~/.bashrc,否则在/etc/profile 中添加下面内容:
export JAVA_HOME=xxx #bin 文件解压的路径
export JRE_HOME=xxx/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
在终端source一下修改的文件,然后可以通过echo $PATH查看环境变量
3.2 编译
在终端执行
cd ~/develop/android_source #进入目录中
. build/envsetup.sh #设置android编译环境
执行choosecombo命令 #选择编译目标
执行命令make/mmm/mm
附:
作用 | 优点 | 缺点 | |
make | 不带任何参数,编译整个系统 | 整体编译 | 编译时间太长 |
make MediaProvider | 单模块编译 | 把与该模块关联的其他模块也一起编译。初次编译不会报错 | 需要搜索整个源码来定位MediaProvider模块所使用的Android.mk文件,还要判断该模块所依赖的其他模块是否修改。整体编译时间过长 |
mmm packages/providers/MEDIAprovider | 编译指定目录下的目标模块,不编译它所依赖的模块 | 编译较快 | 由于没有编译它所依赖的模块,初次编译易报错 |
mm | 单模块编译,需要先cd进该模块mk文件所在目录,再执行mm命令。只编译目标模块 | 编译较快 | 由于没有编译它所依赖的模块,初次编译易报错 |
初次编译必须使用make命令。之后需要局部编译时,如果只知道目标模块的名称或者初次编译,则应使用make 模块名 的方式编译目标模块;如果不知道目标模块的名称,但知道所在目录,可使用mmm或者mm命令编译来节省时间。
3.3 部分模块的编译目标
目标模块 | make命令 | mmm命令 |
---|---|---|
init | make init | mmm system/core/init |
zygote | make app_process | mmm framework/base/cmds/app_process |
system_server | make services | mmm framework/base/services/java |
RefBase | make libutils | mmm framework/base/libs/utils |
Looper | make framework | mmm framework/base |
AudioTrack | make libmedia | mmm framework/base/media/libmedia |
AudioFlinger | make libaudioflinger | mmm framework/base/libs/audioflinger |
AudioPolicyService | make libaudiopolicy | mmm hardware/msm7k/libaudio-qsd8k |
SurfaceFlinger | make libsurfaceflinger | mmm framework/base/libs/surfaceflinger |
Vold | make vold | mmm system/vold/ |
Rild | make rild | mmm hardware/ril/rild/ |
MediaProvider | make MediaProvider | mmm packages/providers/MediaProvider |
Phone | make Phone | mmm packages/Phone/ |
Music | make Music | mmm packages/Music/ |
4 工具安装
4.1 eclipse
网上下载eclipse xxx.bin文件,执行. xxx.bin解压后运行。下载linux版本的SDK,下载并安装ADT后配置SDK路径。
4.2 Source Insight
阅读源码工具,是windows下的工具,在Linux平台上可以通过wine安装。
使用:
a. 不要把整个源码加入工程,一般首先把framework/base/下的目录加到工程,如果需要再把其他目录加进来。不用的代码通过project->Add and Remove project Files去掉目录,以提高运行速度。
b. Options->Document options->左上部分点击ScreenFonts按纽来调节字体
c. Project->new project加载目录,projec->rebuild project解析源码,选择左下角按纽,在左上角输入文件名可以快速定位文件。
4.3 Busybox
Linux平台工具,由于android手机系统去掉了大多数工具,导致调试程序和研究android系统十分不便,可以在手机上安装Busybox解决。
根据手机情况下载Busybox,然后将之push到手机上。安装busybox需要root权限。
adb push busybox /system/xbin #为了避免冲突
cd /sysytem/xbin
chmod 755 busybox
busybox - - install #安装
grep #执行busybox提供的grep命令,或者busybox xxx 执行xxx命令