背景

前面一篇文章编译6.0本来是想给nexus5x刷的,结果Google没有提供驱动,那就给我的nexus5刷了。现在找到了5x需要的驱动和代码版本号,今天继续刷。

刷机和代码对应

比如我需要给5x刷,就需要对应的驱动,驱动下载地址在这里。

https://developers.google.com/android/drivers#bullhead

需要具备留学资格访问。

在这个地方找到了自己设备的驱动之后,看版本号。然后到这里找对应的代码分支。

https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn

找到分支后,后面会显示支持的手机的,下载代码的时候就可以下对应的分支了。

编译环境

和上一篇文章一样,https://mp.weixin.qq.com/s?__biz=MzU1NjYyNjA3MQ==&mid=2247484175&idx=1&sn=451bace9965a369a0f85f71fda61f509&chksm=fbc37af7ccb4f3e1a0d9f03088344c4571117c31b1fb2587dd21cd73c763f2c28b1ba31fa125&token=463936478&lang=zh_CN#rd

这是公众号的。

这是我的博客的:https://me.debuglive.cn

阳光沙滩的:https://www.sunofbeach.net/a/1585878505108987905

但是这里有一点不同,需要安装openjdk8,6.0需要openjdk7,5.1需要Oracle jdk7。

安装的话直接apt安装就行了,安装完成之后到.bashrc中配置一次环境变量,这里略过。

1
2
3
JAVA_HOME=/opt/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

开始编译

进入源码目录中,载入环境,开始编译

1
2
3
4
5
source build/envsetup.sh
lunch
选择5,先试试水。
export LC_ALL=C
make -j4

遇到错误,看这里。

图片描述

1
No Jack server running. Try ‘jack-admin start-server这样的错误

进入

vim ~/.jack-settings

修改端口

1
2
3
4
5
6
7
8
SERVER_HOST=127.0.0.1
## 这里改一改
SERVER_PORT_SERVICE=8088
## 这里改一改
SERVER_PORT_ADMIN=8089

# Internal, do not touch
SETTING_VERSION=4

保存退出

1
vim ~/.jack-server/config.properties

端口和上面修改一样。

1
2
3
## 修改2个地方
jack.server.service.port=8088
jack.server.admin.port=8089

遇到内存不足的时候,提示Out of memory error (version 1.2-rc4 'Carnac'

源码根目录,先执行

1
out/host/linux-x86/bin/jack-admin kill-server

杀死服务,然后修改

1
start-server这个文件的JACK_SERVER_COMMAND位置的参数,增加内存
1
2
增加这个参数
-Xmx4096m

图片描述

图片描述

重启jack服务,继续

1
out/host/linux-x86/bin/jack-admin start-server

根目录

1
2
export LC_ALL=C
make -j4

fatal: fork: Cannot allocate memory
再次遇到内存不足,因为配8g,关机,修改内存12g,启动继续。

图片描述

因为遇到错误就修,所以最后成功的时间40多分钟,其实不是,我从早上10多开始到下午2-3点了。

图片描述

编译模拟器版本到此结束了,下面开始真机。

刷真机准备

下载上面说的驱动包。

图片描述

图片描述

图片描述

驱动包放源码目录下,开始解压。

使用7z,没有的话,apt安装7z吧,很快的。

1
2
3
4
5
6

aosp@ubuntu:~/aosp/android-7.1.1_r1$ tar zxvf lge-bullhead-nmf26f-7bf6caec.tgz
extract-lge-bullhead.sh
aosp@ubuntu:~/aosp/android-7.1.1_r1$ tar zxvf qcom-bullhead-nmf26f-fa1a80d5.tgz
extract-qcom-bullhead.sh
aosp@ubuntu:~/aosp/android-7.1.1_r1$

解压完成后,开始执行解压出来的sh脚本。

图片描述

执行脚本之后,回车慢一点,后面有一个协议需要你输入同意的,看图。

2个脚本都是这样的流程,执行完成就差不多了。

图片描述

图片描述

图片描述

图片描述

可能会编译的时候没权限操作,所以我这里直接让整个驱动目录777了。

图片描述

图片描述

载入环境,开始选择目标编译,这里根据自己的手机来,我这里是21

图片描述

make之前加这个

1
2
export LC_ALL=C
make -j4

如果配置好,你可以增加线程比如-j20

后面就是等编译完成了。

图片描述

如果是这个错误,虚拟机继续加内存哦,ctrl d打断,关机加内存,继续,编译进度会保留的。

开始刷机

图片描述

编译好了之后,连接手机,选择虚拟机。

如果手机无法连接虚拟机授权的,看这个文章:https://www.sunofbeach.net/a/1403285447056093185

图片描述

手机授权!

图片描述

重启手机后查看手机连接状态,发现fastboot无权限,我们授权。

找到fastboot位置,然后授权。

图片描述

图片描述

开始刷入手机了。

图片描述

图片描述

图片描述

图片描述

图片描述

图片描述

我们编译的是user-debug版本,自带root了。

体验好一点,给虚拟机16g内存吧,代码放SSD中,虚拟机我给了200g,足够的。有空间的随意了。

接下里可以愉快的玩耍了。

欢迎关注公众号:黄大官AOSP