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生成的。

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

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

驱动网址 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。如下图所示

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

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

选择完之后,然后执行以下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。不应该超过一两分钟。

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

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

然后进入到你刚刚的那个目录下,里面有.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源码下载编译刷入真机

 

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

 

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

 

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

上一篇:上传App Store报错 ERROR ITMS-90171,90209


下一篇:移动端web开发常见问题