环境准备
1,准备Ubuntu的主机,可以直接去Ubuntu官网下载即可,可以搞一个VMware或者直接搞一个云主机。
装好系统,再装一下Android编译必须要用到的相关的工具和相关的库文件:
sudo apt-get install git-core gnupg flex bison gperf zip
sudo apt-get install curl libc6-dev-i386 lib32ncurses5-dev
sudo apt-get install lib32readline-gplv2-dev lib32z-dev
2,安装jdk。并不是越新 的jdk就越好,得下载Android依赖的jdk版本,如果版本不对,编译Android的时候会报错的。
下载了jdk的bin文件,使用xftp把文件放到Ubuntu上,用xshell连接上Linux主机,安装bin文件,
首先给bin文件执行权限:chmod +x jdk.bin
,然后执行这个jdk.bin
,就ok了。
再剩下就是配置环境变量了,修改bash文件,vim ~bashrc
把jdk安装后的的bin目录配置进path去,最后不能忘记source .bashrc
,到这里java环境就ok了。
系统和开发环境准备ok之后,就得准备源代码了。
源代码准备
源代码分为两部分,第一个是boot和kernel,这是一个包,编译出的是Linux内核镜像。
第二部分是Android源码,Android源码比较大,可以分包压缩。编译出的是Android镜像文件。
然后就是解压编译了,如何编译?
首先编译boot和内核,进入内核目录,可以看到一个build.sh文件,进里面可以看到boot_v1.0和boot_v2.0对应型号的boot编译命令,根据实际情况选择一个命令,直接编译即可,编译以后就可以得到内核镜像文件了。
然后编译Android源码,执行build/envsetup.sh
,这是为了loadAndroid编译需要的条件变量,然后执行lunch
命令,然后在列出的表里选择一个版本然后回车,到这里,环境变量就配置完了。
lunch选择完以后,就可以使用板子配套的脚本吧boot和内核拷贝到指定的目录下,这个脚本是板子厂商提供的。
下面,就可以编译了,make -j16
,一般编译耗时3小时左右。
编译完成以后就会生成一个out目录,编译生成的东西都在这个out/target下面。
编译完成以后就可以打包了,这个包就是ROM烧录包,可以使用pac
这个命令进行打包。打包生成的是一个.img
文件。
打包完成以后,就可以使用板子配套的烧录工具把这个系统包烧录到板子上,也就是平时说的刷ROM。
到这里,Android开发环境的配置、源代码的编译以及打包过程就ok了。
Android源代码的目录结构及其功能
比如webkit/sqlite等都在external中。
recovery等都在system目录中。
device下是产品目录,里面有很多分支,编译时候lunch就是选择一个分支,编译就是对这一个分支编译的结果。
最后,sdk和ndk目录是Android原声的sdk和ndk目录。
Android原声的应用都在packages/apps目录下。