Android OTA 问题分析
分享下 Android OTA 問題分析思路,針對不同類型的問題進行分析。
一、 升級過程,校驗失敗;
升級校驗失敗是開發過程中常見的問題,校驗失敗實際是針對版本拿升級包進行打 patch,目前 Android 基本都是 block 升級,所以校驗失敗也就是某些 block 校驗不過。
1. 首先排查,設備刷的版本和升級包對應的版本是否匹配;
這種情況一般比較少見,但是應當首先予以排除。查看設備的版本號,編譯時間輟,和升級包里面的是否一致。
包括下面幾種情況:
1)升級包正確,但是設備刷錯了版本(比如升級包是 V001 -> V002 的,但是版本是 V003 的);
2)設備刷的版本正確,但是下載的升級包錯誤(比如設備是 V001版本,但是升級包是 V002-> V003 的差分包);
3)升級包或者版本編譯異常導致校驗失敗。升級過程:源版本 -> 目標版本;
3.1:源版本里面的 imges,和 target 包里面的 imges 不同,導致升級過程分區校驗失敗;這種情況就需要排查源版本里面的 images,和 target 包里面的images 是否相同;
注意:正式版本編譯時,升級包要和版本一起編譯,而且再升級包編譯完成后,target 包里面的部分 images 要覆蓋到版本里面的 images。這部分修改,之前 MTK 平臺默認是有的,但是高通平臺沒有,需要合入這部分補丁。
本地升級驗證的情況下,同樣應該注意排查升級包拷貝過程中,拷貝不完全導致的升級包損壞的情況。
2. 排查設備分區是否被篡改,比如是否被 remount等情況;
在線升級情況,在升級包下載后本身會對升級包完整性進行校驗,如果完整性校驗通過,則會進行升級包內容進行校驗。如果分區被篡改,則會導致分區的 block 發生變化,從而校驗失敗。
這種情況,重新刷機應該就可以升級成功。
3. 其他導致升級失敗的情況;
1)系統配置了升級分區,比如system 分區,但是升級包里面沒有包含該分區。
2)缺少selnux 權限導致,比如沒有權限讀取分區,則也導致校驗失敗;沒有權限寫入分區,則會導致升級失敗;
二、 升級完成,設備不開機;
針對設備升級完成,設備無法開機的情況,常規分析方法如下:
1. 通過工具回讀設備的分區(data/cache 等非系統分區不用回讀,回讀的常規分區如 boot/lk/preloader/system/vendor/product等),和系統版本里面的image進行二進制對比,看是否一致。高通平臺 QFILE 工具,MTK 平臺 Flashtool 工具。
如果對比某個分區不一致,就要具體分析為什么分區和逾期的不一致。
2. 通過串口抓去 kernel 日志進行分析,這種情況相當于找具體的問題,需要在版本里面打開串口日志重新編譯版本 + 升級包驗證。
通過串口日志,可以找到具體的問題點,然后再具體分析。
總結
以上是生活随笔為你收集整理的Android OTA 问题分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ESP32 HttpServer模式下
- 下一篇: OTA升级二——阿里云端OTA配置及应用