日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux差分包升级流程,OTA 差分升级包的制作

發(fā)布時間:2025/3/15 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux差分包升级流程,OTA 差分升级包的制作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OTA?升級是?Android?系統(tǒng)提供的標(biāo)準(zhǔn)軟件升級方式。?它功能強(qiáng)大,提供了完全升級、增量升級模式,可以通過?SD卡升級,也可以通過網(wǎng)絡(luò)升級。

那如何生成差分升級包呢?

Android源碼的根目錄下有以下兩個命令:

1、make?——會生成系統(tǒng)的img文件,system.img,boot.img,userdata.img,recovery.img

2、make?otapackage——會生成sd卡用的全部系統(tǒng)升級包,如msm8974-target_files-eng.xxxx.zip

要生成差分升級包,需要先制作出兩個全升級包,然后根據(jù)這兩個升級包做出差分升級包,這里以高通的msm8974為例,講訴Android差分包的制作過程。

1、制作全系統(tǒng)升級包

1.1 使能編譯腳本 ?在Android源碼目錄下運行source build/envsetup.sh

1.2 選擇具體機(jī)型 ?在終端運行l(wèi)unch,隨后會打印機(jī)型列表,通過輸入數(shù)字選擇具體的機(jī)型

1.3 編譯?在終端運行make,如果之前沒有編譯過Android源碼,該過程相當(dāng)久。

1.4 ?make?otapackage

注(1.1-1.3也是Android源碼官方的標(biāo)準(zhǔn)編譯方式,其實也是輸出一些臨時變量,供編譯時使用,可通過 ? ?printenv查看具體的配置信息,很簡單對不對)

2、建立一個目錄

這個隨意,在哪里建都行, 主要要于保存升級文件如

mkdir?~/OTA

注(~代表為用戶目錄,一般為/home/用戶名,可通過cd ~,然后通過pwd查看路徑)

3、將編譯生成的out/target/product/msm8974/obj/PACKAGING/target_files_intermediates/msm8974-target_files-eng.xxxx.zip?拷貝并且更名放到目錄~/OTA/A.zip

4、在代碼中做一些修改,產(chǎn)生一些差異

5、第二次make;make?otapackage(修改于Android源碼后out/target/product/msm8974/文件在重新編譯后,某個文件(如apk)雖已不再生成,但該文件不會自動刪除(上一次的生成文件殘留),個人感覺這個有BUG,希望谷歌方面改進(jìn)一下,這樣我們在make之前,最好手動刪除一下out/target/product/msm8974/system這個目錄)

6、將第二次編譯生成的out/target/product/msm8974/obj/PACKAGING/target_files_intermediates/msm8974-target_files-eng.xxxx.zip?拷貝并且更名放到目錄~/OTA/B.zip

7、在src根目錄下執(zhí)行制作差分包的命令,必須在src根目錄下執(zhí)行,因為ota_from_target_files.py這個腳本里面寫定了相對路徑的引用文件。

./build/tools/releasetools/ota_from_target_files ?-i ??? 。

如:?./build/tools/releasetools/ota_from_target_files -i?~/OTA/A.zip?~/OTA/B.zip?~/OTA/update.zip

注:-i指定制作差分包,~/OTA/update.zip??就是升級用的差分包,這個腳本要在Android源碼的根目錄下執(zhí)行。

8、升級原理

打開update.zip,有一個升級腳本META-INF/com/google/android/updater-script。Android就是根據(jù)這個腳本進(jìn)行升級的,有興趣的可以研究一下。當(dāng)然升級失敗了,最好從這個腳本中找原因了,因為這個文件會打印升級過程中的信息。通過adb shell,進(jìn)入/tmp目錄,有個文件記錄了升級過程的信息,可通過這個文件查看升級失敗的原因。

9、應(yīng)用升級包

差分包制作好后,可以用Android的recovery應(yīng)用該升級包。應(yīng)用該升級包的時候,遇到了兩個問題,這里給大家分享一下。

9.1時間戳失敗

時間戳失敗即OTA包必須比recovery的編譯時間要早,這個在編譯的時候控制一下即可。當(dāng)然,你也可屏蔽OTA包的時間戳檢測,見http://blog.csdn.net/mike8825/article/details/49332249

9.2指紋校驗失敗。差分升級包就是比較現(xiàn)存基礎(chǔ)包與原來的基礎(chǔ)包的差異而生成的,即該OTA包有特定的應(yīng)用背景(用于兩個差分包之間)。升級過程中,升級腳本(打開該升級包,如下圖所示)會檢測fingerprint,確保該升級包被正確應(yīng)用。fingerprint這個屬性存在于/build.prop,可通過adb shell進(jìn)入根路徑,通過cat build.prop查看這個屬性(或getprop)。如果自己做版本控制的話,這個也可以屏蔽。關(guān)于指紋校驗該篇博客有較詳細(xì)的介紹http://blog.csdn.net/huangyabin001/article/details/44465145。

9.3提示system分區(qū)不夠大,升級失敗。這里的system分區(qū)為500M,剩余200M。這里感覺挺奇怪的,200M的的空間還升級不了一個20多M的升級包。開始的時候認(rèn)為是selinux引起的,因為串口會打印一下selinux的錯誤,嘗試改正這些錯誤后,升級包并沒有應(yīng)用成功。這里,單純一點,它提示system分區(qū)容量不夠,那咱就給它大一點哦。嘗試修改將system分區(qū)的容量改為1G后,成功升級。

關(guān)于OTA包的詳解見

http://blog.csdn.net/thl789/article/details/8743743

總結(jié)

以上是生活随笔為你收集整理的linux差分包升级流程,OTA 差分升级包的制作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。