AOSP之代码下载、编译和烧录(Pixel3)

清华镜像站地址:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

google官网代号标记和细分版本:https://source.android.com/setup/start/build-numbers

pixel3 Binary Drive下载地址:https://developers.google.com/android/drivers#walleye

google kernel地址:https://source.android.com/setup/build/building-kernels#id-version

1. 首先通过清华源下载aosp最新代码压缩包

1.1 安装repo工具

mkdir ~/bin && cd ~/bin

PATH=~/bin:$PATH

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo

chmod +x repo

可以把repo的路径加入到环境变量里这样就不用每次都跑临时环境变量

sudo vi ~/.bashrc

// 添加如下语句到文件末尾

PATH=~/bin:$PATH

// 保存

1.2 下载每月更新的初始化包

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包

tar xf aosp-latest.tar

cd AOSP  # 解压得到的 AOSP 工程目录

# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录

repo sync # 正常同步一遍即可得到完整目录

# 下载完成记得生成md5码校验,因为文件比较大,校验不对的话,编译出来的代码会出问题

# 另外,如果是月底去下载aosp-latest.tar需要注意,因为该包每月更新一次,

# 包很大,有90G,短时间内下载不完,那这个时候,请下载带日期的最新包,

# 避免更新aosp-latest.tar导致数据出入,其实aosp-latest.tar包就是网站上

# 最晚月份的包,只是重命名了而已

1.3 同步完成后,根据自己的硬件手机来制定对应的分支拉出代码,我使用的是谷歌pixel3

下载Android11的代码

从这里可以查出对应pixel3最新Android11的分支号,然后使用下面命令拉出,

google官网代号标记和细分版本:https://source.android.com/setup/start/build-numbers

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-11.0.0_r17

repo sync

等待sync完成,一般晚上12点开始,很快。

2. 开始编译之前,进行编译依赖包安装,为了提高软件包,安装速度,请自行修改软件源为国内的源,我这里使用了阿里云的源。


sudo apt install openjdk-8-jdk -y #请输入java -version确认安装正确

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib -y

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386

sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev

sudo apt-get install git-core gnupg flex bison gperf build-essential

sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib

sudo apt-get install libc6-dev-i386 -y

sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

sudo apt-get install lib32z-dev ccache

sudo apt install make make-guile -y

sudo apt-get install tofrodos -y

sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386

安装依赖:

sudo apt-get install libesd0-dev 可能会出现错误,请参考下面排错进行解决

3. 提取pixel3手机对应的kernel和bootloader文件,这部分谷歌没有开源,只有对应的image包,是生成在sh脚本里面,只能说谷歌厉害,直接用脚本提取就可以,所以需要下载。

Binary Drive下载:

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

选取pixel3手机对应Android版本的编号,我选的是这个build id RP1A.201105.002这个版本

这个脚本可以查看,

Pixel 3 binaries for Android 11.0.0 (RP1A.201105.002)


两个都进行下载,一个是google vendor,一个qcom。

解压得到

extract-google_devices-blueline.sh

extract-qcom-blueline.sh

将这两个脚本放到aosp代码目录下,进行提取

sh extract-google_devices-blueline.sh

sh extract-qcom-blueline.sh

这里需要一直按回车进行读取下一行,然后到最后输入I ACCEPT,进行确认

由于很容易错过最后一行,可以在运行之后,直接 / 进行搜索,"ACCEPT",直达最后一行

然后输入 "I ACCEPT" 提取镜像,此处应有掌声(太厉害了)

4. 编译,等待编译完成

make -j4 | tee make.log

5. 刷机

将pixel3连接上电脑,进入bootloader模式

adb reboot bootloader

把out目录下编译出来的*.img镜像刷进机器

fastboot flashall -w

提示ANDROID_PRODUCT_OUT no set,将存放img的路径配置到环境变量里,设置好之后,重来一遍

这次提示:fastboot: error: could not read android-info.txt

将out目录下的android-info.txt拷贝准备刷机器的img目录下


成功,Done!!!

排错:

1. sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev 报错如下:

E: Unable to locate package libesd0-dev


# 解决方法:

sudo vi /etc/apt/sources.list

# 在文件末尾添加如下信息:

deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe

deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe

# 更新源之后并进行重新安装,

sudo apt-get update && sudo apt-get install libesd0-dev

开始编译出错:

[100% 1/1] out/soong/.minibootstrap/minibp out/soong/.bootstrap/build.ninja

FAILED: out/soong/.bootstrap/build.ninja

out/soong/.minibootstrap/minibp -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/.bootstrap/build.ninja.d -globFile out/soong/.minibootstrap/build-globs.ninja -o out/soong/.bootstrap/build.ninja Android.bp

internal error: could not open symlink hardware/qcom/sm7250/Android.bp; its target (gps/os_pickup.bp) cannot be opened

ninja: build stopped: subcommand failed.

16:26:06 soong minibootstrap failed with: exit status 1

----解决方法:把对应的mk和bp文件重命名

cd android-11.0.0_r17/hardware/qcom/sm7250

mv Android.bp Android.bp.ori

mv Android.mk Android.mk.ori

重新开始编译,编译通过没有问题。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容