超详细android 11源码编译 + pixel3 刷机
前言编译安卓源码最开始以为是个大活,乍一听吓人一跳,其实不然,按照别人的方法来,就没啥大的问题,哈哈,咱就是白嫖怪。但是里面有很多坑,如果不注意的话,就会掉进去。环境Ubuntu 18.04.6 LTS , 内存空间100G+ ,cpu核数 8mac 电脑pixel3 二手 (买不起新的,狗头)在ubuntu机器上编译源码,在mac上安装。步骤1.拉android源代码2.拉驱动脚本3.编译系统4
前言
编译安卓源码里面有很多坑,如果不注意的话,就会掉进去。
环境
Ubuntu 18.04.6 LTS , 内存空间100G+ ,cpu核数 8
mac 电脑
pixel3 二手
在ubuntu机器上编译源码,在mac上安装。
步骤
1.拉android源代码
2.拉驱动脚本
3.编译系统
4.刷机
拉android源代码
下载repo工具:
repo工具就是一堆python脚本的集合,调用git命令去clone代码,所以要保证git已经配置好。
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
建立工作目录:
mkdir source
cd source
初始化仓库:
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
如果这一步报错,连接超时,就执行
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
如果需要某个特定的 Android 版本(列表):
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r46
同步源码树(以后只需执行这条命令来同步):
repo sync
这里等待几个小时,如果失败了就多执行几次。
tips: 如果你老是链接失败,我建议换一下source.list .
路径:/etc/apt/source.list , 将原有的备份,换成清华源就好。
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
下载驱动
因为是要真机运行,所以要下载驱动。如果说运行虚拟机的话,这个步骤可以跳过。
默认你已经下载好了源码,要不然后面说了白说,狗头哈哈。
根据Android系统版本与机型确定build ID
Build ID | Tag | Version | Supported devices | data |
RQ3A.211001.001 | android-11.0.0_r46 | Android11 | Pixel 3、Pixel 3 XL、Pixel 3a、Pixel 3a XL、Pixel 4、Pixel 4 XL、Pixel 4a、Pixel 4a (5G)、Pixel 5 | 2021-10-01 |
在下面的网址里面找到对应的驱动。
https://developers.google.com/android/drivers#bluelinerq3a.211001.001https://developers.google.com/android/drivers#bluelinerq3a.211001.001例如我找的:
Pixel 3 binaries for Android 11.0.0 (RQ3A.211001.001)
Hardware Component | Company | Download | SHA-256 Checksum |
---|---|---|---|
Vendor image | Link | 845382bc012a70ae69b03be70a16532d1f92e759bc5c65e85ad1a3417c80f485 | |
GPS, Audio, Camera, Gestures, Graphics, DRM, Video, Sensors | Qualcomm | Link | b12a986161e912e3afd71e57d31d2b4e5c682a8f70c31b37c064fe4bc08de5ad |
生成vendor文件夹
从上面的两个link,下载两个脚本到跟目录下,如本文中的 source 下,解压执行。
注意:执行过程中需要同意协议,到最后,要手动输入“I ACCEPT”, 如果手快了一直回车,最后默认就是不同意,这个地方真的是很狗啊,搞了好几次。
结束后,会生成vendor文件夹。
整体编译
初始化环境
$ source build/envsetup.sh
$ make clobber
lunch执行实例
#根据列表序号选择具体内容
#基于pixel编译则选择3
#如果是虚拟机可以选择aosp_x86_64-eng
$ lunch
#或也可以直接选择
$ lunch aosp_blueline-userdebug
#或也可以直接选择序号
$ lunch 3
开始编译
make -j8 #根据 cpu 的核数来,核数越多编译越快,666
输出目录在:out/target/product/
开始等待,几个小时,去搞一杯茶,刷刷抖音,哈哈。
开始刷机
如果运行虚拟机的话,执行 emulator , 就会出现虚拟机界面。
将 out/target/product/blueline 这个目录压缩成zip文件,传输到mac电脑上装。
前提: 手机已经解BL锁(限制用户刷第三方ROM和第三方recovery以及限制root的“锁”)
不知道怎么解锁的话,买二手手机的时候,备注商家给你解锁,不要钱,哈哈。
export ANDROID_PRODUCT_OUT='out/target/product/blueline'
adb reboot bootloader
fastboot flashall -w
偷偷告诉你不用一条一条的执行,一个一个img往进搞,上面的指令就可以了。
成功之后
踩坑指南
1. 拉代码老师失败,特别执行 repo init -u 的时候,timeout, 这个时候不妨执行以下指令
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
或者编辑 ~/bin/repo文件,找到REPO_URL这一行,然后将其内容修改为:
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
之后再次执行 repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest 。
2.刷完机之后。屏幕失灵。害,大爷的,白忙活。
原因是因为驱动版本没有对上,一定要下载 Build ID 对应的驱动。
重新下载之后,删除 out 目录,在重新编译。
这个时候在执行 adb reboot bootloader 的时候,如果没收手机连接,就手动同时按住电源+音量键(上或者下自己摸索,因为可能不一样)
进入fastboot 之后,通过音量键选择 reboot to bootloader .
再次执行 fastboot flashall -w 。
手动签发系统签名参考:Android系统签名 - 简书
更多推荐
所有评论(0)