android源码编译历程
已经折腾了两周有余,编译android源码过程中步履维艰,从网上各种搜索解决了很多问题,在这里记录下来,也算是传递共享,希望大家不要在google和百度上面花费太多时间,把更多精力留在源码阅读上。
对于新手,对android源码的编译一开始完全没有概念。随便选取了30G的虚拟机就开始工作,结果可想而知。最后奉劝,尽量分盘能分多大分多大,给虚拟机扩盘各种也是很头疼。最后,我在我的机器里分配了100G给ubuntu12.04.2,
一开始,采用repo,git去下载源码,结果统统失败,可能有网速的原因。
推荐国内一个持续更新的百度云链接,里面android的源码是用7Zip压缩的,亲测可用,而且好像持续更新。
http:
//pan.baidu.com/s/1ngsZs
前面的各种下载源码的坑在这一步之后总算是迈过去了,接下来就是编译工作。
首先:切记,千万不要在windows下解压7Zip,会出现各种链接文件丢失,进而各种编译错误。
在ubuntu中安装7zip
sudo apt-get install p7zip解压直接用 7z x android-4.4.4_r1,直接解压到当前路径。
对于JDK,GCC的配置网上很多教程,如果编译过程中有遇到权限不够统统用chmod加权限。
预先安装的包,统统装上
如果是32位系统的话,在终端中运行
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
libxml2-utils xsltproc
如果是64位,运行
$ 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
根据Android官网的说法,编译Android源码执行下面三个命令即可
① source build/envsetup.sh
② lunch 此时要选择一个编译平台 运行lunch
③ make -jn
接下来就是正式的make -jn了,注意n选择cpu核心数的2倍应该是靠谱的,网上也有说核心数加1的,我是四核,选j8编译过的。
编译完成之后在源码目录的out/target/product/generic/生成对应固件等文件,如下图所示,我们可以运行模拟器
9. 配置环境,准备emulator
编译好android之后,emulator所在的目录:~/android/out/host/linux-x86/bin
ramdisk.img,system.img和userdata.img所在的目录:~/android/out/target/product /generic
kernel-qemu-armv7所在的目录:~/android-4.4.4_r1/prebuilts/qemu-kernel/arm
(1)编译成功后运行emulator提示No command 'emulator'
解决方法:
$ vim ~/.bashrc
在文件的最后添加如下指令
export ANDROID_PRODUCT_OUT=~/android-4.4.4_r1/out/target/product/generic //android-4.4.4_r1改成你自己的文件路径
ANDROID_PRODUCT_OUT_BIN=~/android-4.4.4_r1/out/host/linux-x86/bin //android-4.4.4_r1改成你自己的文件路径
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN};
$ source ~/.bashrc 使配置生效
(2)接下来出现如下错误
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).
Otherwise, follow the instructions in -help-disk-images to start the emulator
解决方法:
vim ~/.bashrc
在文件的最后添加如下指令
export ANDROID_BUILD_TOP=~/android-4.4.4_r1
$ source ~/.bashrc 使配置生效
(3)再次执行下面的命令,运行emulator成功。
VBox:~/android-4.4.4_r1/out/target/product/generic$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img
这里参考了
http://www.cnblogs.com/wi100sh/p/4337907.html
运行emulator还有些错误,参考这篇文章:
http://blog.****.net/penglijiang/article/details/9046591