天天看點

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

本文硬體平台以飛淩嵌入式OK3399-C開發闆為基礎進行講解,其它RK3399産品,由于各個廠家設定不同會有所差異,請參考使用。本文檔主要介紹OTA相關方向的介紹,通過本文檔可快速了解RK3399平台android鏡像版本更新的兩種方式OTA 本地更新、OTA遠端更新以及OTA更新包編譯過程。

飛淩RK3399開發闆 OTA測試

OTA (over the air)更新是Android 系統提供的标準軟體更新方式。它功能強大,提供了完全更新(完整包)、增量更新模式(差異包),可以通過本地更新,也可以通過網絡更新。

注意:OTA鏡像的打包方式和rk update.img的打包方式有所差異,沒有單獨的kernel分區,核心裝置樹存在于boot.img中,是以如果使用OTA更新時,需要保證目前系統中的鏡像也是按照OTA方式打包的。

一、OTA 更新包編譯

本節我們将編譯三個版本的android鏡像,V1.0.0版本、V1.0.1版本、V1.0.2版本,其中V1.0.0版本為基礎版本用于燒寫到飛淩RK3399開發闆上,V.1.0.0更新到V1.0.1采用完全更新的方式測試完全更新功能,V1.0.1更新到V1.0.2采用增量更新模式測試增量更新功能。

檢視device/rockchip/rk3399/BoardConfig.mk

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

确認目前版本号為1.0.0,同時将ro.product.ota.host修改為用于OTA更新伺服器的Linux主機位址,8888為端口号(伺服器搭建參考後續章節)。

1、 編譯V1.0.0版本鏡像

lunch rk3399_all-userdebug

rm out/target/product/rk3399_all/system/build.prop

make -j4

./mkimage.sh ota

将rockdev/Image-rk3399_all目錄的鏡像備份

mkdir images_v1.0.0

cp rockdev/Image-rk3399_all images_v1.0.0

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

以單獨燒寫的方式,将鏡像燒寫到飛淩RK3399開發闆上,注意不要燒寫kernel.img。

2、編譯V1.0.1版本完全更新包

修改device/rockchip/rk3399/BoardConfig.mk

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

将目前的版本号修改為:1.0.1

lunch rk3399_all-userdebug

rm out/target/product/rk3399_all/system/build.prop

make -j4

./mkimage.sh ota

make otapackage -j4

mv out/target/product/rk3399_all/rk3399_all-ota-eng.root.zip 1.0.1.zip

mv out/target/product/rk3399_all/obj/PACKAGING/target_files_intermediates/rk3399_all-target_files-eng.root.zip target_1.0.1.zip

其中1.0.1.zip是用于測試的完全更新包,target_1.0.1.zip是用于制作V1.0.2版本增量更新包的基礎素材。

3、編譯V1.0.2版本增量更新包

修改device/rockchip/rk3399/BoardConfig.mk

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

将目前的版本号修改為:1.0.2

lunch rk3399_all-userdebug

rm out/target/product/rk3399_all/system/build.prop

make -j4

./mkimage.sh ota

make otapackage -j4

mv out/target/product/rk3399_all/obj/PACKAGING/target_files_intermediates/rk3399_all-target_files-eng.root.zip target_1.0.2.zip

使用target_1.0.1.zip和target_1.0.2.zip制作V1.0.2版本增量更新包。

./build/tools/releasetools/ota_from_target_files -v --block

-i target_1.0.1.zip

-p out/host/linux-x86

-k build/target/product/security/testkey

target_1.0.2.zip

1.0.2.zip

經過前面幾小節的編譯,我們得到最終得到了以下檔案:

images_v1.0.0目錄的基礎鏡像:v1.0.0版本的鏡像,用于燒寫到飛淩RK3399開發闆上。

1.0.1.zip:v1.0.1版本的完全更新包。

1.0.2.zip:v1.0.2版本的增量更新包。

二、OTA 本地更新

啟動RK3399開發闆并輸入:

getprop ro.product.version 确認版本号是否為1.0.0。

将1.0.1.zip 拷貝到TF卡根目錄(如果之前做成了燒寫TF卡請先還原為普通TF卡),并重新命名為update.zip。啟動開發闆,插入TF卡。系統将自動檢測到更新檔案的存在彈出更新确認菜單,點選Install。将自動進入更新模式,更新完成之前請勿插拔TF卡。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

更新完成後将自動重新啟動,提示更新成功,詢問是否需要删除更新檔案避免再次更新。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

同時可以在飛淩RK3399開發闆上輸入getprop ro.product.version 确認版本号是否為1.0.1。

下面,将1.0.2.zip拷貝到TF卡根目錄,并重命名為update.zip,由于是增量更新可以看到update.zip隻有幾十MB,當然這根修改的代碼多少有關。将TF卡插入開發闆,與前面完全更新的步驟一樣。

系統将自動檢測到更新檔案的存在彈出更新确認菜單,點選Install。将自動進入更新模式,更新完成之前請勿插拔TF卡。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

更新完成後将自動重新啟動,提示更新成功,詢問是否需要删除更新檔案避免再次更新。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

同時可以在飛淩 RK3399 開發闆上輸入getprop ro.product.version 确認版本号是否為1.0.2。

三、OTA 遠端更新

1、搭建OTA更新伺服器

打開飛淩提供的RK3399使用者資料,将資料工具目錄中的apache-tomcat-7.0.29.zip拷貝到Linux主機/home/forlinx目錄。

注意:如果您的主機沒有jdk環境,請參考上篇建立Android應用開發環境編譯章節安裝jdk環境。

unzip apache-tomcat-7.0.29.zip

chmod 775 -R apache-tomcat-7.0.29

cd apache-tomcat-7.0.29/webapps/OtaUpdater/WEB-INF

cat manifast.xml

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

其中,product name需要與device/rockchip/rk3399/BoardConfig.mk中定義的PRODUCT_MODEL一緻。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

version name 選項對應更新前版本,package_path選項對應該版本的更新包路徑。

将1.0.1.zip和1.0.2.zip拷貝到對應的目錄:

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

修改端口号:apache-tomcat-7.0.29/conf/server.xml

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

啟動服務:

cd apache-tomcat-7.0.29/bin

./startup.sh

2、測試OTA遠端更新

首先将之前備份在images_v1.0.0鏡像燒寫到開發闆上。getprop ro.product.version 确認版本号是否為1.0.0。

正常情況下系統啟動完畢幾秒鐘後将提示更新,如果沒有提示請:

getprop ro.product.ota.host 确認OTA更新伺服器參數是否正确。

同時确認網絡是否連通。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

點選Yes将自動進入更新流程。由于是完全更新,是以需要稍微等待一會。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

點選Yes删除本地更新包。同時檢視目前版本:getprop ro.product.version 正常情況下已經更新到1.0.1版本。

重新開機系統,由于我們目前版本已經更新到了1.0.1版本,系統将檢測到最新的1.0.2版本,提示更新。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

由于是增量更新,更新包非常小,更新速度也比較快。

RK3399平台Android鏡像版本更新的兩種處理方式-OTA 本地更新、OTA遠端更新

點選Yes删除本地更新包。同時檢視目前版本:getprop ro.product.version 正常情況下已經更新到1.0.2版本。

https://mp.ofweek.com/ai/a356714981167

繼續閱讀