android5.1笔记:recovery升级流程

1.recovery全量包升级的流程:

  • 编译:
build/envsetup.sh。 
lunch 选择16。
make otapackage
  • 将blaze_tablet-ota-eng.xx.xx.zip升级包重名为update.zip,下载到/cache目录下
  • 进入recovery模式
adb root
adb shell
echo "--locale en_US\n--show_text" > /cache/recovery/command
reboot recovery

系统重启,进入recovery模式,并启动recovery进程,进入该进程后选中 "apply update from /cache"选项,系统会自动升级update.zip

  • 错误打印:
Finding update package
Opening update package...
Verifying update package...
Installing update...
assert failed: !less_than_int(1312352025,getprop("ro.build.date.utc"))
E:Error in /sdcard/update.zip(status7)

说明升级包较旧导致终止执行

  • 解决方法:
    修改build/core/Makefile
$(INTERNAL_OTA_PACKAGE_TARGET):$(BUILT_TARGET_FILES_PACKAGE) $(DISTTOOLS) 
@echo "Package OTA: $@" 
$(hide) ./build/tools/releasetools/ota_from_target_files -v \ 
-p $(HOST_OUT) \ 
-k $(KEY_CERT_PAIR) \ 
-n \ 

-n 在升级时是否不检查时间戳,缺省要检查,即缺省情况下只能基于旧版本升级

2.recovery增量包升级的流程:

  • 在源码根目录下依次执行下列命令
 build/envsetup.sh
 lunch 选择16
 make
 make otapackage

执行上面的命令后会在out/target/product/blaze_tablet下生成我们第一个系统升级包。
先将其命名为A.zip

  • 在源码中修改我们需要改变的部分,比如修改内核配置,增加新的驱动等等。修改后再一次执行上面的命令。就会生成第二个修改后生成的update.zip升级包。将其命名为B.zip。

  • 以上面的A.zip 和B.zip包作为输入,以update.zip包作为输出。生成的update.zip就是最后需要的增量包。
    具体使用方式是:将上述两个包拷贝到源码根目录下,然后执行下面的命令。

./build/tools/releasetools/ota_from_target_files -i A.zip B.zip update.zip

出现的错误:

在执行上述命令时会出现未找到recovery_api_version的错误。原因是在执行上面的脚本时如果使用选
项i则会调用 WriteIncrementalOTAPackage会从A包和B包中的META目录下搜索misc_info.txt来读
取recovery_api_version的值。但是在执行make otapackage命令时生成的update.zip包中没有这个目录
更没有这个文档。

  • 解决的方法:
    此时需要使用执行make otapackage生成的原始的zip包。这个包的位置在out/target/product/blaze_tablet/obj/PACKAGING/target_files_intermediates/目录下,它是在用命令make otapackage之后的中间生产物,是最原始的升级包。将两次编译的生成的包分别重命名为A.zip和B.zip,并拷贝到根目录下重复执行上面的命令:
./build/tools/releasetools/ota_form_target_files -i A.zip B.zip update.zip

在上述命令即将执行完毕时,生成update.zip升级包。

  • 将上面生成的升级包update.zip,下载到/cache目录下
 adb root
 adb shell
 echo "--locale en_US\n--show_text" > /cache/recovery/command
 reboot recovery
  • 系统重启:
    进入recovery模式,并启动recovery进程,进入该进程后选中 "apply update from /cache"选项,系统 会自动升级update.zip
 echo "--locale en_US\n--show_text\n--send_intent" > /cache/recovery/command

猜你喜欢

转载自blog.csdn.net/weixin_44991625/article/details/105730706