实验环境是Ubuntu14.04。采用手机nexus 5,编译安卓6.0.1源码并烧录安卓。
源码编译没有一蹴而就,建议使用一台linux机器开启ssh后,通过远程的方式利用闲暇时间编译并查看结果。
下载源码
下载源码时,建议使用科大的镜像源。
先找好适合你手机的源码版本:
然后采用repo的方式,repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b 你的版本。
因为可以采用ipv6,所以速度不错。
环境搭建
主要步骤按照官方文档走。
首先,搭建要编译的环境,装相应的JDK以及一些软件。需要注意的一点是,最好使用aptitude而不是apt-get,因为aptitude命令会帮你解决不少软件互相依赖的问题。
本人采用的OPEN JDK编译成功。
编译步骤
源码编译
首先,因为是在真机上运行,所以需要下载一些相应的驱动程序。先去版本号查看适合自己机型的版本:版本号。比如我用Nexus 5,编译6.0.1,使用的驱动版本是:M4B30X。
然后,去下载对应版本的驱动:驱动下载
在Linux下,直接用wget命令下载就可以,然后,使用tar -zxvf 命令依次解压出.sh文件到根目录下,运行文件就会在根目录下生成vendor文件夹,里面放着驱动。
然后执行以下make clobber,清除无用的编译。
我采用的机器是8核8G,因为android 6以后采用jack编译源码成dex文件,同时测试过程中,会出现jack-admin out of memory的问题,所以执行以下:
export JACK_SERVER_VM_ARGUMENTS=”-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g”
设置VM的内存为4G。
然后,执行lunch命令,选择你要编译的手机的版本,我这里nexus 5选择hammerhead。
之后,因为本人采用的远程连接编译,执行 nohup make -j8进行编译。然后CTRL Z,并bg 1将任务放在后台,每次通过less查看nohup.out并按住G来看编译结果即可。
当然,不想给任务放在后台或者没有使用远程的方法,直接make -j8即可。
编译结果如下:
可以看到img文件生成在out/target/product/hammerhead下。
烧录手机
执行make fastboot adb编译fastboot和adb,连上手机,开启调试模式信任电脑,执行:adb reboot bootloader,然后fastboot oem unlock解开bootloader的锁,这里注意看手机上的说明,选择确定。
然后执行 export ANDROID_PRODUCT_OUT=img目录,编译最终结果上面有写出,我这里是out/target/product/hammerhead。
最后进入AOSP/out/host/linux-x86/bin目录下找到fastboot执行文件,
执行:./fastboot -w flashall
然后,等待即可。
转自:http://blog.csdn.net/yy254117440/article/details/53939335