FOTA总结
适用范围:展讯平台,mtk平台 ,高通平台
一、 T卡升级
1、 编译差分包:
编译代码:
source build/envsetup.sh;
lunch xxx-user(项目名称);
make -j8;
make -j8 otapackage;
pac;
执行完命令后会有如下包生成:
out/target/product/zsl829/obj/PACKAGING/target_files_intermediates/xxx-target_files.zip
out/target/product/zsl829 /xxx-ota-eng.gsoft2-3.zip
其中xxx-target_files.zip是查分包,xxx-ota-eng.gsoft2-3.zip为整包,对xxxr-ota-eng.gsoft2-3.zip签名后即可直接使用,但是我们在制作差分包和整包时都是使用的是xxx-target_files.zip,如下的操作也是以该zip文件为例。
2、 制作查分包:
在根目录下运行如下命令即可生成差分包:
./build/tools/releasetools/ota_from_target_files -p out/host/linux-x86/ -k build/target/product/security/testkey -i xxx-target_files_old.zip xxx-target_files_new.zip update.zip(debug版本)
./build/tools/releasetools/ota_from_target_files -p out/host/linux-x86/ -k build/target/product/security/release/releasekey -i xxx-target_files_old.zip xxx-target_files_new.zip update.zip(user版本)
运行以上命令后可在根目录下生成update.zip,该zip文件即为查分包,接下来将其拷贝到T卡,然后烧录zsl829_condor-target_files_old.zip的版本pac包,adb reboot recovery 或者电源键加音量上建进去recovery mode选择update from sdcard ,然后选择该update.zip文件即可进行升级。
指令说明:可以根据客户需求添加不同的指令达到客户需求,比如升级擦除数据,reset等,可以在以上制作差分包的命令中加入,具体可参考build/tools/releasetools/ ota_from_target_files脚本:
终端运行命令:./build/tools/releasetools/ota_from_target_files -p out/host/linux-x86/
-u lk.bin
-r preloader 有时会黑屏,这是就需要readback手机中的preloader更新后写入
-l logo.bin 开机logo
-f 相当与恢复出厂设置 user升级时卡顿在了开机动画界面,重启以后是好的
-w 擦除data域的数据,我们可以改变OTA的脚本来达到随心的擦除数据的目的
-2 升级前先更新recovery,然后再升级
-v 只有在差分包的时候会校验
-k build/target/product/security/testkey -i old.zip new.zip update.zip(制作差分包)
其中old和new都是 full_zaw1801_rivo-target_files.zip
制作整包:
./build/tools/releasetools/ota_from_target_files -p out/host/linux-x86/ -k build/target/product/security/testkey xxx-target_files.zip update.zip
3、T卡升级常见错误
3.1、签名错误:signature
系统的签名文件放在build/target/product/security里,默认的user版本使用的是
Releasekey,userdebug使用的是testkey,但是我们可以在build/core/Makefile中进行更改,
ifeq ($(MTK_SIGNATURE_CUSTOMIZATION),yes)
BUILD_KEYS := release-keys
endif
如果遇到签名错误的话可以将签名更改即可。
3.2、system 、cache空间不够
Ota的system空间的大小至少保留30M才能保证其升级成功,如果system空间大小不够时增加空间即可。cache分区是ota升级的地方,也要有足够大的空间才能保证其能升级成功,一般导致cache分区空间不足的原因多是预置的有些apk的odex太大导致的。
3.3、fingerprint
此类错误一般是因为版本down错了导致,基版本和目标版本down错了,xxx-target_files_old.zip对应的是基版本,xxx-target_files_new.zip对应的是目标版本。
3.4、ro.product.name ro.product.device不同导致
不管是做差分包升级还是整包升级,基版本和目标版本的ro.product.name必须相同
二、在线升级
1.代码移植
1.1 移植SystemUpdate
采用第三方apk,进行常规预置,具体要求可与第三方沟通
1.2添加升级菜单:
在packages/apps/Settings/res/xml/device_info_settings.xml文件中添加一个Preference: