導航:首頁 > 程序命令 > ota命令

ota命令

發布時間:2022-04-18 08:03:54

Ⅰ iOS 設置區域網OTA,出現無法連接。

Windows操作系統區域網不能互訪解決方法nbsp;在區域網內安裝了Windowsnbsp;XP的電腦不能與安裝了Windowsnbsp;98的電腦互相訪問,安裝了Windowsnbsp;XP的電腦與安裝了Windowsnbsp;XP的電腦也不能互相通信。在工作站訪問伺服器時,工作站的「網上鄰居」中可以看到伺服器的名稱,但是點擊後卻無法看到任何共享內容,或者提示找不到網路徑、無權訪問等問題,歸納為以下幾點:nbsp;在XP首次使用的時候要在網上鄰居的屬性裡面新建一個網路連接進行網路安裝向導。nbsp;1、檢查計算機之間的物理連接nbsp;網卡是網路連接的基本設備,在桌面計算機中,每個網卡後面的指示燈應該是亮的,這表示連接是正常的。如果不亮,請檢查集線器或交換機是打開的,而且每個客戶端連接的指示燈都是亮的,這表示鏈接是正常的。接下來檢查網線的水晶頭是否接觸良好。nbsp;2、確保所有計算機上都安裝了TCP/IP,並且工作正常nbsp;在Windowsnbsp;XP中默認安裝了TCP/IP。但是,如果出了網路問題想卸載後重新安裝TCP/IP就不容易了:在「本地連接」屬性中顯示的此連接使用下列項目列表中單擊Internet協議(TCP/IP)項,您將發現卸載按鈕不可用(被禁用)。nbsp;這是因為傳輸控制協議/Internet協議(TCP/IP)堆棧是Microsoftnbsp;XP/nbsp;2003的核心組件,不能刪除。在這種情況下,如果需要重新安裝TCP/IP以使TCP/IP堆棧恢復為原始狀態。可以使用NetShell實用程序重置TCP/IP堆棧,使其恢復到初次安裝操作系統時的狀態。方法是:在命令提示符後鍵入以下命令,然後按ENTER鍵:netshnbsp;intnbsp;ipnbsp;resetnbsp;c:
esetlog.txt,其中,Resetlog.txt記錄命令結果的日誌文件,一定要指定,這里指定了Resetlog.txt日誌文件及完整路徑。運行此命令的結果與刪除並重新安裝TCP/IP協議的效果相同。nbsp;3、使用ping命令測試網路中兩台計算機之間的連接:nbsp;ping其它計算機IP,在命令提示處,鍵入pingnbsp;x.x.x.x(其中x.x.x.x是另一台計算機的IP地址),然後按ENTER鍵。應該可以看到來自另一台計算機的幾個答復,如:nbsp;Replynbsp;fromnbsp;x.x.x.x:bytes=32nbsp;timeamp;lt;1msnbsp;TTL=128nbsp;如果沒有看到這些答復,或者看到「Requestnbsp;timednbsp;out「,說明本地計算機可能有問題。如果ping命令成功執行,那麼您就確定了計算機可以正確連接,可以跳過下一步。如果沒有看到這些答復,或者看到「Requestnbsp;timednbsp;out「,說明本地計算機可能有問題。PING本地IP,如果看到「Requestnbsp;timednbsp;out「,說明本地計算機可能有問題。nbsp;4、使用ping命令測試網路中名稱解析是否正常nbsp;pingnbsp;computername,其中computername是遠程計算機的名稱。通過ping命令用名稱測試計算機連接。確定計算機的名稱的方法是:在命令提示處,輸入SYSTEMINFO。或者在桌面上右擊我的電腦-屬性,然後單擊計算機名稱選項卡。如果看到該命令的成功答復,說明您在計算機之間具有基本連接和名稱解析。名稱解析跟NETBIOS密切相關,看下面的步驟。nbsp;5、正確安裝網路組件nbsp;首先右擊網上鄰居-屬性,選擇要共享的網卡。把IP設置在區域網的同一個網段上。比如192.168.1.X網段。然後看一下TCP/IP的高級屬性中,是否開啟NETBIOS。nbsp;在利用WINNT4.0構建的網路系統中,對每一台主機的唯一標識信息是它的NetBIOS名,系統是利用WINS服務、信息廣播方式及Lmhost文件等多種模式將NetBIOS名解析為相應IP地址,從而實現信息通訊。nbsp;在內部網路系統中(也就是通常我們所說的區域網中),利用NetBIOS名實現信息通訊是非常方便、快捷的。但是在Internet上對一台主機的唯一標識信息是它的FQDN格式的域名(163.com),在Internet是利用DNS標准來實現將域名解析為相應IP地址,WIN2K支持動態DNS,運行活動目錄服務的機器可動態地更新DNS表。nbsp;WIN2K網路中可以不再需要WINS服務,但是WIN2K仍然支持WINS,這是由於向後

Ⅱ 請問:手機的OTA是什麼意思

OTA是空中下載技術,是通過移動通信的空中介面實現對移動終端設備及SIM卡數據進行遠程管理的技術。

OTA技術的應用,使得移動通信不僅可以提供語音和數據服務,而且還能提供新業務下載。這樣,應用及內容服務商可以不受平台的局限,不斷開發出更具個性化的貼近用戶需求的服務,如信息點播、互動娛樂、位置服務以及銀行交易等。

通過OTA空中下載技術,手機用戶只要進行簡單操作,就可以按照個人喜好把網路所提供的各種業務菜單利用OTA機制下載到手機中,並且還可以根據自己的意願定製具體業務。


(2)ota命令擴展閱讀

要實現OTA功能,至少需要兩塊設備,分別是伺服器與客戶端。伺服器只有一個,客戶端可有多個。伺服器通過串口與PC機連接,需要下載的鏡像文件存放於PC機,命令執行器給伺服器發命令及鏡像文件。

首先命令執行器控制伺服器廣播當前可用的鏡像文件信息,客戶端收到信息後進行對比,若有與自身相匹配的鏡像,則向伺服器請求數據。伺服器收到請求後向命令執行器索取固定大小的塊,再點對點傳送給客戶端。鏡像傳輸完畢後,客戶端進行校驗,完成後發送終止信號。

Ⅲ 汽車ota升級是什麼意思升級後會有安全隱患嗎

汽車ota升級是什麼意思?升級後會有安全隱患嗎?

在這個各行各業相互滲透的時代,汽車電子化、互聯網化日益加深不足為奇,這些互聯網要素的加入,如APP、電信系統無疑可以提高汽車的智能化,使汽車的功能更加豐富。 但是,車廠為什麼只滿足於此,為了更方便大家的生活,製造了OTA這種東西,最近很火的兩款車: ES8、比亞迪秦pro大力宣傳這個概念。

車也可以像手機一樣遠程升級嗎? 看起來像先進的OTA技術,其實隱藏的危險不少

很多人覺得OTA就像升級手機一樣,只要有什麼問題就會升級,但是不管OTA有多先進,它只是升級你的車的軟體,固有的硬體不會變。

Ⅳ 新手如何製作ota分差包

在make android系統後,會生成系統的img文件。
make otapackage 會生成sd卡用的全部系統升級包,有260M多。要生成增量升級包。需要按以下步驟。

mkdir ~ /OTA

source build/envsetup.sh; choosecom 1 1 7 eng

make;make otapackage

先將編譯生成的
out/target/proct/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip
拷貝並且更名放到目錄 ~ /OTA/msm8660_surf-target_files-eng.A.zip

在代碼中產生一些更新

第二次 make;make otapackage

第二次編譯生成的out/target/proct/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip 拷貝並且更名放到目錄 /OTA/msm8660_surf-target_files-eng.tangzm_B.zip

-在src根目錄下執行 ./build/tools/releasetools/ota_from_target_files -i 包 > 包 > <<span style="font-family: 'DejaVu Sans';">差分包名 >。這里必須在src根目錄下執行,因為 ota_from_target_files.py這個腳本裡面寫定了相對路徑的引用文件。
如: ./build/tools/releasetools/ota_from_target_files -v -t MMC -i
~ /OTA/msm8660_surf-target_files-eng.A.zip
~ /OTA/msm8660_surf-target_files-eng.B.zip
~ /OTA/update.zip
~ /OTA/update.zip 就是升級用的差分包。
注意:-t MMC 是指使用文件格式為ext4,默認為mtd,即yaffs2。因為我們這個系統使用了ext4文件系統的支持。具體的內容可以看分區表文件src/
具體的參數含義為 -v顯示具體命令,-i 為產生增量包。

Ⅳ 如何給Android的OTA包添加校驗標識

下面以(RK 的 Sofia3GR 方案)來分享一下給OTA添加校驗標識經驗。
1、首先必須要了解ota升級原理以及phony腳本, 這個我就不多說了,網上資料一大把。
2、給系統添加一個屬性欄位
Sofia3GR 添加屬性欄位是在device\rockchip\sofia3gr\sofia3gr.mk裡面:我添加 ro.proct.author = TangYin 屬性。
然後執行make installclean 、 make -j8 、 ./mkimage.sh SF_3GR-cars-mehome-mn34227.dtb ota 編譯生成ota 包, 利用SD卡燒寫 到板上。
在板上使用getprop 命令可以查看到, 也可cat /system/build.prop文件。

安卓系統常說的OTA升級是什麼意思

OTA(Over-the-AirTechnology)升級是指手機終端通過無線網路下載遠程伺服器上的升級包,對系統或應用進行升級的技術。

OTA(Over The Air)是一項基於短消息機制,通過手機終端或伺服器(網上)方式實現SIM卡內業務菜單的動態下載、刪除與更新,使用戶獲取個性化信息服務的數據增值業務(簡稱OTA業務),是通過移動通信(GSM或CDMA)的空中介面對SIM卡數據及應用進行遠程管理的技術。

通過OTA空中下載技術,手機用戶只要進行簡單操作,就可以按照個人喜好把網路所提供的各種業務菜單利用OTA機制下載到手機中,並且還可以根據自己的意願定製具體業務。

(6)ota命令擴展閱讀:

OTA運行原理:

1、OTA Server主要是對差分包的一個上傳、下載以及版本的管理。

2、開發者通過差分包的製作工具製作出差分包,使用客戶端進行上傳和對版本的管理。

3、手機通過WIFI/GPRS網路進行連接下載,然後完成更新。

要實現OTA功能,至少需要兩塊設備,分別是伺服器與客戶端。伺服器只有一個,客戶端可有多個。伺服器通過串口與PC機連接,需要下載的鏡像文件存放於PC機,命令執行器給伺服器發命令及鏡像文件。

首先命令執行器控制伺服器廣播當前可用的鏡像文件信息,客戶端收到信息後進行對比,若有與自身相匹配的鏡像,則向伺服器請求數據。伺服器收到請求後向命令執行器索取固定大小的塊,再點對點傳送給客戶端。鏡像傳輸完畢後,客戶端進行校驗,完成後發送終止信號。

Ⅶ ota升級是什麼意思

OTA(Over-the-AirTechnology)升級是指手機終端通過無線網路下載遠程伺服器上的升級包,對系統或應用進行升級的技術。

OTA(OverTheAir)是一項基於短消息機制,通過手機終端或伺服器(網上)方式實現SIM卡內業務菜單的動態下載、刪除與更新,使用戶獲取個性化信息服務的數據增值業務(簡稱OTA業務),是通過移動通信(GSM或CDMA)的空中介面對SIM卡數據及應用進行遠程管理的技術。

通過OTA空中下載技術,手機用戶只要進行簡單操作,就可以按照個人喜好把網路所提供的各種業務菜單利用OTA機制下載到手機中,並且還可以根據自己的意願定製具體業務。

(7)ota命令擴展閱讀:

OTA運行原理:

1、OTAServer主要是對差分包的一個上傳、下載以及版本的管理。

2、開發者通過差分包的製作工具製作出差分包,使用客戶端進行上傳和對版本的管理。

3、手機通過WIFI/GPRS網路進行連接下載,然後完成更新。

要實現OTA功能,至少需要兩塊設備,分別是伺服器與客戶端。伺服器只有一個,客戶端可有多個。伺服器通過串口與PC機連接,需要下載的鏡像文件存放於PC機,命令執行器給伺服器發命令及鏡像文件。

Ⅷ 請問固件OTA升級功能實現原理分析是什麼

OTA(Over-the-AirTechnology)升級是指手機終端通過無線網路下載遠程伺服器上的升級包,對系統或應用進行升級的技術。

OTA(Over The Air)是一項基於短消息機制,通過手機終端或伺服器(網上)方式實現SIM卡內業務菜單的動態下載、刪除與更新,使用戶獲取個性化信息服務的數據增值業務(簡稱OTA業務),是通過移動通信(GSM或CDMA)的空中介面對SIM卡數據及應用進行遠程管理的技術。

通過OTA空中下載技術,手機用戶只要進行簡單操作,就可以按照個人喜好把網路所提供的各種業務菜單利用OTA機制下載到手機中,並且還可以根據自己的意願定製具體業務。

(8)ota命令擴展閱讀:

OTA運行原理:

1、OTA Server主要是對差分包的一個上傳、下載以及版本的管理。

2、開發者通過差分包的製作工具製作出差分包,使用客戶端進行上傳和對版本的管理。

3、手機通過WIFI/GPRS網路進行連接下載,然後完成更新。

要實現OTA功能,至少需要兩塊設備,分別是伺服器與客戶端。伺服器只有一個,客戶端可有多個。伺服器通過串口與PC機連接,需要下載的鏡像文件存放於PC機,命令執行器給伺服器發命令及鏡像文件。

首先命令執行器控制伺服器廣播當前可用的鏡像文件信息,客戶端收到信息後進行對比,若有與自身相匹配的鏡像,則向伺服器請求數據。伺服器收到請求後向命令執行器索取固定大小的塊,再點對點傳送給客戶端。鏡像傳輸完畢後,客戶端進行校驗,完成後發送終止信號。

Ⅸ 軟體公司更改軟體版本,為什麼只是不斷進行OTA測試,而不測試軟體的一些命令

更改版本也不一定是前面版本出現問題,也有其他的情況,比如增加功能,修改功能什麼。

Ⅹ 如何打包安卓手機Zip升級包如何簽名不換Recovery,用官方Recovery

通過分析update.zip包在具體Android系統升級的過程,來理解Android系統中Recovery模式服務的工作原理。
我們先從update.zip包的製作開始,然後是Android系統的啟動模式分析,Recovery工作原理,如何從我們上層開始選擇system update到重啟到Recovery服務,以及在Recovery服務中具體怎樣處理update.zip包升級的,我們的安裝腳本updater-script怎樣被解析並執行的等一系列問題。分析過程中所用的Android源碼是gingerbread0919(tcc88xx開發板標配的),測試開發板是tcc88xx。
一、 update.zip包的目錄結構
|----boot.img
|----system/
|----recovery/
`|----recovery-from-boot.p
`|----etc/
`|----install-recovery.sh
|---META-INF/
`|CERT.RSA
`|CERT.SF
`|MANIFEST.MF
`|----com/
`|----google/
`|----android/
`|----update-binary
`|----updater-script
`|----android/
`|----metadata
二、 update.zip包目錄結構詳解
以上是我們用命令make otapackage 製作的update.zip包的標准目錄結構。
1、boot.img是更新boot分區所需要的文件。這個boot.img主要包括kernel+ramdisk。
2、system/目錄的內容在升級後會放在系統的system分區。主要用來更新系統的一些應用或則應用會用到的一些庫等等。可以將Android源碼編譯out/target/proct/tcc8800/system/中的所有文件拷貝到這個目錄來代替。
3、recovery/目錄中的recovery-from-boot.p是boot.img和recovery.img的補丁(patch),主要用來更新recovery分區,其中etc/目錄下的install-recovery.sh是更新腳本。
4、update-binary是一個二進制文件,相當於一個腳本解釋器,能夠識別updater-script中描述的操作。該文件在Android源碼編譯後out/target/proct/tcc8800/system bin/updater生成,可將updater重命名為update-binary得到。
該文件在具體的更新包中的名字由源碼中bootable/recovery/install.c中的宏ASSUMED_UPDATE_BINARY_NAME的值而定。
5、updater-script:此文件是一個腳本文件,具體描述了更新過程。我們可以根據具體情況編寫該腳本來適應我們的具體需求。該文件的命名由源碼中bootable/recovery/updater/updater.c文件中的宏SCRIPT_NAME的值而定。
6、 metadata文件是描述設備信息及環境變數的元數據。主要包括一些編譯選項,簽名公鑰,時間戳以及設備型號等。
7、我們還可以在包中添加userdata目錄,來更新系統中的用戶數據部分。這部分內容在更新後會存放在系統的/data目錄下。
8、update.zip包的簽名:update.zip更新包在製作完成後需要對其簽名,否則在升級時會出現認證失敗的錯誤提示。而且簽名要使用和目標板一致的加密公鑰。加密公鑰及加密需要的三個文件在Android源碼編譯後生成的具體路徑為:
out/host/linux-x86/framework/signapk.jar
build/target/proct/security/testkey.x509.pem
build/target/proct/security/testkey.pk8 。
我們用命令make otapackage製作生成的update.zip包是已簽過名的,如果自己做update.zip包時必須手動對其簽名。
具體的加密方法:$ java –jar gingerbread/out/host/linux/framework/signapk.jar –w gingerbread/build/target/proct/security/testkey.x509.pem gingerbread/build/target/proct/security/testkey.pk8 update.zip update_signed.zip
以上命令在update.zip包所在的路徑下執行,其中signapk.jar testkey.x509.pem以及testkey.pk8文件的引用使用絕對路徑。update.zip 是我們已經打好的包,update_signed.zip包是命令執行完生成的已經簽過名的包。
9、MANIFEST.MF:這個manifest文件定義了與包的組成結構相關的數據。類似Android應用的mainfest.xml文件。
10、CERT.RSA:與簽名文件相關聯的簽名程序塊文件,它存儲了用於簽名JAR文件的公共簽名。
11、CERT.SF:這是JAR文件的簽名文件,其中前綴CERT代表簽名者。
另外,在具體升級時,對update.zip包檢查時大致會分三步:①檢驗SF文件與RSA文件是否匹配。②檢驗MANIFEST.MF與簽名文件中的digest是否一致。③檢驗包中的文件與MANIFEST中所描述的是否一致。
三、 Android升級包update.zip的生成過程分析
1) 對於update.zip包的製作有兩種方式,即手動製作和命令生成。
第一種手動製作:即按照update.zip的目錄結構手動創建我們需要的目錄。然後將對應的文件拷貝到相應的目錄下,比如我們向系統中新加一個應用程序。可以將新增的應用拷貝到我們新建的update/system/app/下(system目錄是事先拷貝編譯源碼後生成的system目錄),打包並簽名後,拷貝到SD卡就可以使用了。這種方式在實際的tcc8800開發板中未測試成功。簽名部分未通過,可能與具體的開發板相關。
第二種製作方式:命令製作。Android源碼系統中為我們提供了製作update.zip刷機包的命令,即make otapackage。該命令在編譯源碼完成後並在源碼根目錄下執行。 具體操作方式:在源碼根目錄下執行
①$ . build/envsetup.sh。
②$ lunch 然後選擇你需要的配置(如17)。
③$ make otapackage。
在編譯完源碼後最好再執行一遍上面的①、②步防止執行③時出現未找到對應規則的錯誤提示。命令執行完成後生成的升級包所在位置在out/target/proct/full_tcc8800_evm_target_files-eng.mumu.20120309.111059.zip將這個包重新命名為update.zip,並拷貝到SD卡中即可使用。
這種方式(即完全升級)在tcc8800開發板中已測試成功。
2) 使用make otapackage命令生成update.zip的過程分析。
在源碼根目錄下執行make otapackage命令生成update.zip包主要分為兩步,第一步是根據Makefile執行編譯生成一個update原包(zip格式)。第二步是運行一個python腳本,並以上一步准備的zip包作為輸入,最終生成我們需要的升級包。下面進一步分析這兩個過程。
第一步:編譯Makefile。對應的Makefile文件所在位置:build/core/Makefile。從該文件的884行(tcc8800,gingerbread0919)開始會生成一個zip包,這個包最後會用來製作OTA package 或者filesystem image。先將這部分的對應的Makefile貼出來如下:

[python] view plainprint?
# -----------------------------------------------------------------
# A zip of the directories that map to the target filesystem.
# This zip can be used to create an OTA package or filesystem image
# as a post-build step.
#
根據上面的Makefile可以分析這個包的生成過程:
首先創建一個root_zip根目錄,並依次在此目錄下創建所需要的如下其他目錄
①創建RECOVERY目錄,並填充該目錄的內容,包括kernel的鏡像和recovery根文件系統的鏡像。此目錄最終用於生成recovery.img。
②創建並填充BOOT目錄。包含kernel和cmdline以及pagesize大小等,該目錄最終用來生成boot.img。
③向SYSTEM目錄填充system image。
④向DATA填充data image。
⑤用於生成OTA package包所需要的額外的內容。主要包括一些bin命令。
⑥創建META目錄並向該目錄下添加一些文本文件,如apkcerts.txt(描述apk文件用到的認證證書),misc_info.txt(描述Flash內存的塊大小以及boot、recovery、system、userdata等分區的大小信息)。
⑦使用保留連接選項壓縮我們在上面獲得的root_zip目錄。
⑧使用fs_config(build/tools/fs_config)配置上面的zip包內所有的系統文件(system/下各目錄、文件)的許可權屬主等信息。fs_config包含了一個頭文件#include「private/android_filesystem_config.h」。在這個頭文件中以硬編碼的方式設定了system目錄下各文件的許可權、屬主。執行完配置後會將配置後的信息以文本方式輸出 到META/filesystem_config.txt中。並再一次zip壓縮成我們最終需要的原始包。
第二步:上面的zip包只是一個編譯過程中生成的原始包。這個原始zip包在實際的編譯過程中有兩個作用,一是用來生成OTA update升級包,二是用來生成系統鏡像。在編譯過程中若生成OTA update升級包時會調用(具體位置在Makefile的1037行到1058行)一個名為ota_from_target_files的python腳本,位置在/build/tools/releasetools/ota_from_target_files。這個腳本的作用是以第一步生成的zip原始包作為輸入,最終生成可用的OTA升級zip包。
二 下面我們分析ota_from_target_files這個python腳本是怎樣生成最終zip包的。先講這個腳本的代碼貼出來如下:
[python] view plainprint?
import sys
if sys.hexversion < 0x02040000:
print >> sys.stderr, "Python 2.4 or newer is required."
sys.exit(1)
主函數main是python的入口函數,我們從main函數開始看,大概看一下main函數(腳本最後)里的流程就能知道腳本的執行過程了。
① 在main函數的開頭,首先將用戶設定的option選項存入OPTIONS變數中,它是一個python中的類。緊接著判斷有沒有額外的腳本,如果有就讀入到OPTIONS變數中。
解壓縮輸入的zip包,即我們在上文生成的原始zip包。然後判斷是否用到device-specific extensions(設備擴展)如果用到,隨即讀入到OPTIONS變數中。
③ 判斷是否簽名,然後判斷是否有新內容的增量源,有的話就解壓該增量源包放入一個臨時變數中(source_zip)。自此,所有的准備工作已完畢,隨即會調用該 腳本中最主要的函數WriteFullOTAPackage(input_zip,output_zip)
④ WriteFullOTAPackage函數的處理過程是先獲得腳本的生成器。默認格式是edify。然後獲得metadata元數據,此數據來至於Android的一些環境變數。然後獲得設備配置參數比如api函數的版本。然後判斷是否忽略時間戳。
⑤ WriteFullOTAPackage函數做完准備工作後就開始生成升級用的腳本文件(updater-script)了。生成腳本文件後將上一步獲得的metadata元數據寫入到輸出包out_zip。
⑥至此一個完整的update.zip升級包就生成了。生成位置在:out/target/proct/tcc8800/full_tcc8800_evm-ota-eng.mumu.20120315.155326.zip。將升級包拷貝到SD卡中就可以用來升級了。
四、 Android OTA增量包update.zip的生成
在上面的過程中生成的update.zip升級包是全部系統的升級包。大小有80M多。這對手機用戶來說,用來升級的流量是很大的。而且在實際升級中,我們只希望能夠升級我們改變的那部分內容。這就需要使用增量包來升級。生成增量包的過程也需要上文中提到的ota_from_target_files.py的參與。
下面是製作update.zip增量包的過程。
① 在源碼根目錄下依次執行下列命令
$ . build/envsetup.sh
$ lunch 選擇17
$ make
$ make otapackage
執行上面的命令後會在out/target/proct/tcc8800/下生成我們第一個系統升級包。我們先將其命名為A.zip
② 在源碼中修改我們需要改變的部分,比如修改內核配置,增加新的驅動等等。修改後再一次執行上面的命令。就會生成第二個我們修改後生成的update.zip升級包。將 其命名為B.zip。
③ 在上文中我們看了ota_from_target_files.py腳本的使用幫助,其中選項-i就是用來生成差分增量包的。使用方法是以上面的A.zip 和B.zip包作為輸入,以update.zip包作 為輸出。生成的update.zip就是我們最後需要的增量包。
具體使用方式是:將上述兩個包拷貝到源碼根目錄下,然後執行下面的命令。
$ ./build/tools/releasetools/ota_from_target_files -i A.zip B.zip update.zip。
在執行上述命令時會出現未找到recovery_api_version的錯誤。原因是在執行上面的腳本時如果使用選項i則會調用WriteIncrementalOTAPackage會從A包和B包中的META目錄下搜索misc_info.txt來讀取recovery_api_version的值。但是在執行make otapackage命令時生成的update.zip包中沒有這個目錄更沒有這個文檔。
此時我們就需要使用執行make otapackage生成的原始的zip包。這個包的位置在out/target/proct/tcc8800/obj/PACKAGING/target_files_intermediates/目錄下,它是在用命令make otapackage之後的中間生產物,是最原始的升級包。我們將兩次編譯的生成的包分別重命名為A.zip和B.zip,並拷貝到SD卡根目錄下重復執行上面的命令:
$ ./build/tools/releasetools/ota_form_target_files -i A.zip B.zip update.zip。
在上述命令即將執行完畢時,在device/telechips/common/releasetools.py會調用IncrementalOTA_InstallEnd,在這個函數中讀取包中的RADIO/bootloader.img。
而包中是沒有這個目錄和bootloader.img的。所以執行失敗,未能生成對應的update.zip。可能與我們未修改bootloader(升級firmware)有關。此問題在下一篇博客已經解決。
製作增量包失敗的原因,以及解決方案。

Android系統Recovery工作原理之使用update.zip升級過程分析(二)---update.zip差分包問題的解決
在上一篇末尾提到的生成差分包時出現的問題,現已解決,由於最近比較忙,相隔的時間也比較長,所以單列一個篇幅提示大家。這個問題居然是源碼中的問題,可能你已經製作成功了,不過我的這個問題確實是源碼中的一個問題,不知道是不是一個bug,下文會具體分析!
一、生成OTA增量包失敗的解決方案
在上一篇中末尾使用ota_from_target_files腳本製作update.zip增量包時失敗,我們先將出現的錯誤貼出來。
在執行這個腳本的最後讀取input_zip中RADIO/bootloader.img時出現錯誤,顯示DeviceSpecifiParams這個對象中沒有input_zip屬性。
我們先從腳本中出現錯誤的調用函數中開始查找。出現錯誤的調用地方是在函WriteIncrementalOTAPackage(443行)中的device_specific.IncrementalOTA_InstallEnd(),其位於WriteIncrementalOTAPackage()中的末尾。進一步跟蹤源碼發現,這是一個回調函數,他的具體執行方法位於源碼中/device/telechips/common/releasetools.py腳本中的IncrementalOTA_InstallEnd()函數。下面就分析這個函數的作用。
releasetools.py腳本中的兩個函數FullOTA_InstallEnd()和IncrementalOTA_InstallEnd()的作用都是從輸入包中讀取RADIO/下的bootloader.img文件寫到輸出包中,同時生成安裝bootloader.img時執行腳本的那部分命令。只不過一個是直接將輸入包中的bootloader.img鏡像寫到輸出包中,一個是先比較target_zip和source_zip中的bootloader.img是否不同(使用選項-i生成差分包時),然後將新的鏡像寫入輸出包中。下面先將這個函數(位於/device/telechips/common/releasetools.py)的具體實現貼出來:
我們的實際情況是,在用命令make otapackage時生成的包中是沒有這個RADIO目錄下的bootloader.img鏡像文件(因為這部分更新已被屏蔽掉了)。但是這個函數中對於從包中未讀取到bootloader.img文件的情況是有錯誤處理的,即返回。所以我們要從 出現的實際錯誤中尋找問題的原由。
真正出現錯誤的地方是:
target_bootloader=info.input_zip.read(「RADIO/bootloader.img」)。
出現錯誤的原因是:AttributeError:『DeviceSpecificParams』object has no attribute 『input_zip』,提示我們DeviceSpecificParams對象沒有input_zip這個屬性。
二、updater-script腳本執行流程分析:
先看一下在測試過程中用命令make otapackage生成的升級腳本如下:
[python] view plainprint?
assert(!less_than_int(1331176658, getprop("ro.build.date.utc")));
assert(getprop("ro.proct.device") == "tcc8800" ||
下面分析下這個腳本的執行過程:
①比較時間戳:如果升級包較舊則終止腳本的執行。
②匹配設備信息:如果和當前的設備信息不一致,則停止腳本的執行。
③顯示進度條:如果以上兩步匹配則開始顯示升級進度條。
④格式化system分區並掛載。
⑤提取包中的recovery以及system目錄下的內容到系統的/system下。
⑥為/system/bin/下的命令文件建立符號連接。
⑦設置/system/下目錄以及文件的屬性。
⑧將包中的boot.img提取到/tmp/boot.img。
⑨將/tmp/boot.img鏡像文件寫入到boot分區。
⑩完成後卸載/system。
三、總結
以上的九篇著重分析了Android系統中Recovery模式中的一種,即我們做好的update.zip包在系統更新時所走過的流程。其核心部分就是Recovery服務的工作原理。其他兩種FACTORY RESET、ENCRYPTED FILE SYSTEM ENABLE/DISABLE與OTA INSTALL是相通的。重點是要理解Recovery服務的工作原理。另外詳細分析其升級過程,對於我們在實際升級時,可以根據我們的需要做出相應的修改。

閱讀全文

與ota命令相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:577
python員工信息登記表 瀏覽:375
高中美術pdf 瀏覽:158
java實現排列 瀏覽:511
javavector的用法 瀏覽:979
osi實現加密的三層 瀏覽:230
大眾寶來原廠中控如何安裝app 瀏覽:912
linux內核根文件系統 瀏覽:241
3d的命令面板不見了 瀏覽:524
武漢理工大學伺服器ip地址 瀏覽:147
亞馬遜雲伺服器登錄 瀏覽:522
安卓手機如何進行文件處理 瀏覽:70
mysql執行系統命令 瀏覽:929
php支持curlhttps 瀏覽:142
新預演算法責任 瀏覽:443
伺服器如何處理5萬人同時在線 瀏覽:249
哈夫曼編碼數據壓縮 瀏覽:424
鎖定伺服器是什麼意思 瀏覽:383
場景檢測演算法 瀏覽:616
解壓手機軟體觸屏 瀏覽:348