前言
在上一篇文章中,已经成功下载谷歌官方的Android11源码,并且编译成功。具体步骤方法可以参考:编译Android11源码 接下来就需要尝试把编译好的镜像烧录到设备中,目标设备是谷歌推出的一款手机Pixel 2
预计工作如下: 1、下载配套的设备驱动 2、将驱动文件集成进源码,编译镜像文件 3、使用烧录工具烧写镜像到设备中
下载驱动
烧写特定的版本,且保证设备能够正常工作,需要下载对应的设备驱动,可以参考官网给出的链接进行下载 Pixel2 设备驱动 下载完成后会得到google和qcom两个tgz压缩文件,解压后生成对应的两个sh文件 将sh文件拷贝到编译服务器临时目录,执行后会生成vendor文件夹
重编系统生成可适配设备的镜像文件
将vendor文件夹完整拷贝到Android 11源码的根目录下,重新编译生成镜像文件
烧录镜像至Pixel 2设备
这一步的操作尤其关键,开始也参考了网上很多方法,基本上分为两种,一种是整体烧录img文件,另一种是分别烧录img文件。我使用的是window 7操作系统,编译服务器是在ubuntu系统下,因此,需要将img文件拷贝至本地目录中来。 第一种,整体烧录img文件
adb reboot bootloader
fastboot flashall -w
第二种,分别烧录img文件
adb reboot bootloader
fastboot flash boot_a boot.img
fastboot flash boot_b boot.img
fastboot flash system system.img
fastboot flash system_b system_other.img
fastboot flash vendor vendor.img
但是不知道是哪里配置不对,当烧写完镜像后,设备启动会一直卡在bootloader界面,提示ERROR: Slot Unbootable: Load Error错误。
于是尝试使用另外一种方法,先使用官方的烧录工具烧录原厂镜像包试试看能否成功。 到指定链接下载原厂烧录镜像包,里面工具齐全,一键就可以进行烧录:原厂烧录工具 同样,此步骤也需要找到与前面镜像匹配的版本 下载完成后,解压出工具包会得到如下文件 此时,我们连接usb线束,然后执行adb reboot bootloader命令使设备进入bootloader状态,双击运行 “flash-all.bat” 文件即可自动进入烧录状态,等待一段时间后即可完成烧录,手机自动重启,运行官方的Android 11系统。 当然,我们的目标是烧录自己编译的Android 11系统到Pixel 2设备上,所以上面的内容还没有结束。既然现在我们已经可以有方法烧录镜像到设备中,那么我们思考,如果将原厂的镜像文件替换成自己编译的镜像文件,是不是也可以成功烧录呢? 如图所示,左边是谷歌原厂镜像包中的img文件,右边是服务器上编译生成的out目录下img文件。使用右边的img文件替换原厂包内容,执行之前的bat脚本进行烧录,最终成功将自己编译的系统烧录至Pixel 2设备中。
这里有一点需要提醒,就是在替换img文件的时候,原厂镜像包的img文件是集中打包在一个zip文件中的,需要解压出文件夹之后再替换里面的文件,然后再重新压缩成zip包,这样才能校验通过,继而烧录成功。之前我就是直接拖拽要替换的文件到zip包中,烧录的时候会提示crc32校验不匹配而失败。
总结
第一次成功将自己编译的镜像包烧录到手机设备当中,还是小有收获的,也为后面学习framework知识做好了铺垫,希望不久的将来自己也能够在Android系统层面有所建树,加油!
|