Android6.0源码下载编译刷入真机

编译环境是Ubuntu12.04。手机nexus 5,编译安卓6.0.1源码并烧录到真机。

源码用的是科大的镜像:http://mirrors.ustc.edu.cn/aosp-monthly/,下载完之后会有一个aosp-latest.tar文件,然后新建一个仓库,把它解压到你的仓库里。这里下载会需要点时间。

然后repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b 你的版本,比如现在我们编译6.0.1的版本,就直接repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-6.0.1_r1

完了之后执行 repo sync ,同步更新你的代码,这里会花费点时间。

注:这里有些人如果第一次用repo的话,得先要安装repo。然后才能用

repo sync 完了之后,会在你的仓库里面出现很多文件。如下图,刚开始第一次编译的时候是没有out生成的。

因为还要刷入真机,所以我们还需要驱动,你们可以看自己用的是什么机型,然后去官网找相对应的驱动,

驱动网址 https://developers.google.com/android/nexus/drivers#hammerheadmra58k

我这里用的是Nexus5,所以我自己下了一个,如果官网进不了的话,我这里有一个Nexus5的驱动,链接:https://pan.baidu.com/s/1kx4J8pf2CV3yH54tgwEXUA 密码:s9n6

里面有三个.sh文件,把它们放在你们项目的根目录,然后分别执行.sh文件,执行之后,它会有说明,一直按回车,这时要注意,在执行每个文件最后的时候,它会提示让你输入 I ACCEPT。输入完了之后,就会在当前目录生成vendor文件。

这时所有东西都就绪了,下一步就可以开始编译源码。

source build/envsetup.sh

执行lunch命令,选择你要编译的手机的版本,我这里nexus 5选择hammerhead。如下图所示

选择完之后,然后执行以下make clobber,清除无用的编译。

然后执行prebuilts/misc/linux-x86/ccache/ccache -M 50G设置缓存大小。

通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍.

查看核心数量

grep 'core id' /proc/cpuinfo | sort -u | wc -l

查看线程数

grep 'processor' /proc/cpuinfo | sort -u | wc -l

比如,我现在的笔记本是双核四线程的,因此根据公式,最快速的编译可以make -j8.

然后就直接等编译了。

PS:在编译的过程中有可能会遇到以下的失败:

out/host/linux-x86/bin/jack-admin: 行 37: SETTING_VERSION: 为绑定变量
make: *** [out/host/linux-x86/framework/jack.jar] 错误 1
make: *** 正在删除文件“out/host/linux-x86/framework/jack.jar”

修改方法:在./prebuilts/sdk/tools/jack-admin里面SETTING添加SETTING_VERSION=2
在“SETTING_VERSION -lt 2”改为“SETTING_VERSION -eq 2”。然后重新编译即可。

大概编译2个多小时,就编译成功了。生成的镜像文件在out/target/product/文件下面。

这时候可以烧录到真机了。把调试模式打开,然后接上USB调试。

输入一个命令提示符:adb reboot bootloader。

然后手机屏幕显示 等待bootloader界面在屏幕上出现: fastboot oem unlock

接着一个unlock bootloader的选择确认页面会出现。用音量来选择到“YES,”,用电源键来确定。

这时你手机上的所有数据都将被抹去,LOCK STATE将变成unlocked。不应该超过一两分钟。

重新开机后的画面下面出现了一个打开的锁,以后刷机都会在解锁状态下了。

然后进入到你刚刚的那个目录下,里面有.img镜像文件。通过fastboot刷入即可,首先你先看看你的fastboot 能不能识别到设备,输入fastboot devices

如果出现 no permissions fastboot ,就直接进入到out/host/linux-x86/bin 下面输入以下的命令:

sudo chown root:root fastboot

sudo chmod +s fastboot

然后再重新看下设备是否能识别到,输入fastboot devices

如果识别到了,再进入到镜像文件img那个文件里面执行以下命令进行烧录。

fastboot flash boot boot.img
fastboot flash cache cache.img
fastboot flash recovery recovery.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot reboot

最后一条命令是重启命令,等大约两分钟,就会出现

 

 

至此,源码编译烧录真机完成。

 

Android6.0源码下载编译刷入真机

全文结束