Android14 编译环境搭建以及刷机全操作流程

2024-06-04 4199阅读

Android U从第一个beta版本出来,快一年了。近期发现Google更新了Pixel4a(5G)的驱动程序二进制文件。我吃灰的Pixel4a终于能派上用场了。因此记录一下自己的刷机全流程。

系统环境

系统:Ubuntu22.04 LTS

内存:32GB以上

硬盘:400GB以上

清华大学开源软件镜像站

这里参考使用清华源镜像网站提供的AOSP源码下载方式,并且下载过程也从清华镜像网站中摘录整理。

清华源镜像地址:

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

配置环境

下载依赖

这些是一些必备的软件以及编译环境

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip adb fastboot
sudo apt-get install openjdk-11-jdk

下载repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

下载AOSP源码

由于首次同步需要下载将近60GB数据,过程中任何网络故障都可能造成同步失败,因此这里采用清华源中建议的方式,先下载初始包,再同步。

浏览器直接打开以下链接会自动下载

https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar

也可以使用以下命令下载并解压

curl -OC - https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar xf aosp-latest.tar

下载完成之后,解压到根目录下,在aosp目录下执行同步命令即可得到完整的目录

repo sync -j8

之后如果想要切换到指定的分支,再重新进行初始化和同步,第二次同步会很快。

这里我同步android14的release分支,进入aosp源码目录之后执行以下命令

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android14-release
repo sync -j8

查看代码分支步骤:

  1. 在终端进入 aosp/.repo/manifests/ 目录下
  2. 使用以下同步最新代码

    git pull

  3. 执行以下命令可以查看所有现有的分支

    git branch -a | cut -d / -f 3

编译

至此,AOSP源码已经完成同步,接下来进行aosp源码的编译

【重要!!】首先下载手机对应的驱动配置二进制文件,通过下面的链接,找到自己手机型号对应的文件(需要科学上网)

https://developers.google.com/android/drivers?hl=zh-cn#brambletq2a.230405.003.b2

选择自己对应手机的二进制文件,我用的是Pixel 4a (5G) ,是支持Android14的最老的一款手机了。

Android14 编译环境搭建以及刷机全操作流程 第1张

下载完成后,将两个文件解压到aosp根目录,可以得到两个sh文件,然后在终端分别执行这两个脚本。根据步骤按Enter到最下方后输入 “I ACCEPT” 然后按回车

Android14 编译环境搭建以及刷机全操作流程 第2张

【注意】:一定要注意的是,二进制文件和接下来要编译的版本对应。否则最终刷机后,可能会一直卡在logo界面或者无限重启。

在AOSP源码的根目录下执行以下编译命令:

source build/envsetup.sh
lunch xxx
make -j8

其中第二条命令,根据自己的机型选择lunch,配置列表:设备Build

Android14 编译环境搭建以及刷机全操作流程 第3张

遇到的问题:

在编译的过程中,我遇到了一个依赖包找不到的问题:

error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file

通过以下命令安装:(如果遇到其他同类型错误 “cannot open shared object file” 可以尝试用 apt-file find的方法找到这个包名,然后安装对应的包。

sudo apt install apt-file
sudo apt-file update
sudo apt-file find libncurses.so.5
sudo apt install libncurses5

刷机

本地编译完成之后,生成的镜像文件在 /out/target/product/手机代号 目录下,切换目录到该目录下

cd aosp/out/target/product/xxx型号/
export ANDROID_PRODUCT_OUT=./

fastboot刷入img镜像文件。注意:w 选项会擦除设备上的 /data 分区;该选项在您第一次刷写特定设备时非常有用,但在其他情况下则没必要使用。因为我之前已经刷好了 android-13.0.0_r40 分支代码对应的版本,所以这里就不添加 -w参数了

adb reboot bootloader
fastboot flashall -w

刷机完成后会自动重启手机,或使用以下命令重启手机

fastboot reboot

在刷机过程中,通过fastboot查找设备时,报了fastboot查找设备没有权限的问题。

fastboot devices
no permissions (missing udev rules? user is in the plugdev group); see [http://developer.android.com/tools/device.html]

只需要给fastboot添加对应权限即可

# 先通过which指令,找到fastboot的安装路径
which fastboot
# 输出:/usr/bin/fastboot
# 然后通过以下命令添加权限
sudo chown root:root /usr/bin/fastboot
sudo chmod +s  /usr/bin/fastboot

至此,就得到了一个没有任何额外软件的纯Android原生系统的Pixel。如果遇到什么问题,欢迎留言评论,我看到后会解答。


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]