OTA升级总结

升级前需确保如下问题,否则升级会失败。
a.系统分区必须相同,包括分区数目和分区大小相同。在编译升级包之前,可对比两个工程的分区表,
对比system,data,cache三大分区大小是否相同。对比分区总数是否相同。
b.三大ro属性必须相同。
ro.product.model
ro.product.name
ro.product.device
c.系统签名必须相同。
在alps目录下,如下命令签名:
java -Xmx1024m -jar out/host/linux-x86/framework/signapk.jar -w
build/target/product/security/releasekey.x509.pem
build/target/product/security/releasekey.pk8 ~/NEWOTA/update.zip
~/NEWOTA/update_with_new_key.zip


OTA升级包:
make otapackage 编译出ota升级包。最好是在new版本之后,打包之前做编译ota包操作。
一般使用:make -j8 && make -j8 otapackage 编译并打包出ota 包。

升级步骤:
a.将编译出的OTA升级包拷贝到T卡
b.手机进入Recovery模式,不同厂商可能进入recovery模式组合按键不同,一般是音量+和power键组合
c.选择从SD卡升级:Apply update from SD card

若升级失败,在tmp下会有recovery.log文件,可导出recovery.log,查看原因。

一般在实验阶段,先用两个eng版本升级,这样升级失败可以直接:
adb pull tmp/recovery.log .  到本地查看log。但也有弊端,可能会遇到在eng版本上没有问题,但在user版本上出现bug。

大版本升级如:从L 升级到 M,可先进行双清操作,在升级,防止因L 和 M 数据库差异导致升级后部分应用异常。
双清操作:进recovery,然后选择Wipe data/factory reset.也可在编译时脚本中添加参数双清。如:调用ota_from_target_files
脚本时传入 -w参数,也可双清。

另外,在工作中还遇到过,OTA升级后,开机完成,进入开机向导时,eng版本未出现bug,user版本出现了SMS数据库字段缺失和添加重复的bug,
这就需要抓user版本第一次开机log。但是user版本log默认关闭,所以遇到这种情况,就需要先在代码中将user版本的log默认打开,在mtklog_config_*
的文件中修改,然后从新编译OTA包,就可以抓到user版本第一次开机log了。

你可能感兴趣的:(项目经验积累)