Android提供的原生工具,主要用于替换镜像。
源码在SDK工程中,/system/core/fastboot目录下
见链接
- boot:boot 分区包含通过 mkbootimg 组合在一起的内核映像和 RAM 磁盘。为了直接刷写内核而不刷写新的 boot 分区,可以使用虚拟分区:
- kernel:kernel 虚拟分区仅覆盖内核(zImage、zImage-dtb、Image.gz-dtb),方法是写入新的映像来覆盖旧的映像。为此,它会确定 eMMC 中现有内核映像的起始位置并将新内核映像复制到该位置。请记住,新内核映像可能会大于现有内核映像。引导加载程序可以通过移动其后的任何数据来腾出空间或放弃出错的操作。如果提供的开发内核不兼容,则可能需要使用相关的内核模块更新 dtb 分区(如果存在)、vendor 分区或 system 分区。
- ramdisk:ramdisk 虚拟分区通过将新映像写入旧磁盘来仅覆盖 RAM 磁盘。为此,它会确定 eMMC 中现有 ramdisk.img 的起始位置并将新 RAM 磁盘映像复制到该位置。请记住,新 RAM 磁盘映像可能会大于现有 RAM 磁盘映像。引导加载程序可以通过移动其后的任何数据来腾出空间或放弃出错的操作。
- system:system 分区主要包含 Android 框架。
- recovery:recovery 分区用于存储在 OTA 过程中启动的恢复映像。如果设备支持 A/B 更新,则恢复映像可以是启动映像中包含的 RAM 磁盘,而不是单独的映像。
- cache:cache 分区用于存储临时数据,如果设备使用 A/B 更新,则可以不要此分区。cache 分区不需要可从引导加载程序写入,而只需要可清空。大小取决于设备类型和 userdata 分区的可用空间。目前,50MB 至 100MB 应该没问题。
- misc:misc 分区供恢复映像使用,存储空间不能小于 4KB。
- userdata:userdata 分区包含用户安装的应用和数据,包括自定义数据。
- metadata:如果设备被加密,则需要使用 metadata 分区,该分区的存储空间不能小于 16MB。
- vendor:vendor 分区包含所有不可分发给 Android 开源项目 (AOSP) 的二进制文件。如果没有专有信息,则可以省略此分区。
- radio:radio 分区包含无线装置映像。只有包含无线装置且在专用分区中包含无线装置专用软件的设备才需要此分区。
- tos:tos 分区用于存储 Trusty 操作系统的二进制映像文件,仅在设备包含 Trusty 时使用。
注意:以下流程适用于我司本项目产品。
前提要求
Android平台adb功能已开启
Linux pc端有adb工具、fastboot工具(配置好SDK工具,默认在platform-tools/路径下)
准备好要替换的img镜像
替换流程
adb devices #查看待烧录设备是否adb在线,另建议只在线一台设备,方便烧录不用加 -s 参数 adb reboot fastboot #adb重启并进入fastboot模式 fastboot devices #查看fastboot模式下的在线设备 fastboot flashing unlock #解锁操作 fastboot flashing unlock_critical #解锁操作 fastboot flash vbmeta /home/root/cts_on_gsi/vbmeta.no.chain.partition.img #烧录vbmeta分区镜像。注意:img镜像路径确保正确 fastboot erase system #擦除system分区 fastboot flash system /home/root/cts-on-gsi/system.20190505.img #烧录system分区镜像。注意:img镜像路径确保正确 #在以上shell程序执行结束后,执行以下命令进行设备重启 fastboot reboot
结果校验
如果出现“Select a Home app”的选择提示框则选第二项“com.android.tv.provision.DefaultActivity”--->>“JUST ONCE”按钮
若launcher界面如下,则替换成功,可进行之后的vts&cts-on-gsi测试