Android/Linux/音频/驱动
全部博文(41)
分类: Android平台
2016-10-13 19:54:02
【前因】
前 2 天收到 bug 反馈,对相关代码进行修改后今天自己编译了一版 image,却发现烧不进设备。先后尝试了 3 次,都在烧写 bootloader 的阶段报错 “Certificate Verification Failed!!!”,并在 fastboot 界面的最下方显示 “Failed to load '\EFI\BOOT\bootx64.efi' : 0000001A”。报错前控制台正在执行的命令是:
fastboot flash bootloader bootloader
【后果】
为了做对比,我从服务器 DailyBuild 库中拷贝出一个服务器自动编译的版本,文件很顺利地烧进了设备。
在询问负责这一块工作的同事后,我想起来之前他在给我们做团队培训的时候说过我们公司的设备在刷入 image 前会对文件的签名进行验证,如果 image 没有本公司的签名是无法刷入设备的。所以为了通过签名校验,在编译 image 文件时需要在 make 命令后接上签名参数对文件进行签名。命令格式如下:
make bootimage XXXXXX_XSIGN_ON=yes
为了保密起见,签名参数的部分内容在这用 X 替代。需要注意的是,这个签名参数应该是因公司而异的,甚至别的公司可能都不会使用 XXXXXX_XSIGN_ON 这种名称。如果你也碰到了这个问题,最好的解决办法是询问你们开发组的相关同事,让他告诉你。
【影响】
这件事情提醒了那些喜欢折腾的朋友,刷机之前一定要先确认文件可以供自己的设备使用,不然 image 刷不进去不说,设备上原本的数据也都丢失了。