區(qū)中的系統(tǒng)指紋信息。
[0016]其中,系統(tǒng)指紋信息是指終端當(dāng)前使用的系統(tǒng)版本的指紋信息,包括終端品牌、設(shè)備名、系統(tǒng)版本號(hào)、版本ID、內(nèi)控版本號(hào)、版本類型、等相關(guān)信息。
[0017]具體的,在步驟201之前,生產(chǎn)廠商會(huì)制作不同的差分升級(jí)包上傳到服務(wù)器,服務(wù)器接收開發(fā)人員制作的最新版本的升級(jí)包,將提醒終端是否進(jìn)行系統(tǒng)升級(jí)。
[0018]進(jìn)一步,若終端選擇進(jìn)行系統(tǒng)升級(jí),或者是終端用戶選擇啟動(dòng)OTA客戶端進(jìn)行系統(tǒng)升級(jí),如圖3所示,OTA客戶端根據(jù)終端用戶的請(qǐng)求發(fā)起系統(tǒng)升級(jí)的檢測(cè),觸發(fā)服務(wù)器端的控制返回策略301,服務(wù)器根據(jù)設(shè)置的升級(jí)方式、設(shè)備信息及當(dāng)前終端版本號(hào)將設(shè)定的策略返回給OTA客戶端302ATA客戶端根據(jù)服務(wù)器端返回的多個(gè)升級(jí)包的信息,將最新版本的版本號(hào)、版本信息、所有升級(jí)包大小總和顯示在終端界面上303。判斷304用戶是否選擇下載,若用戶選擇下載,繼續(xù)判斷305當(dāng)前手機(jī)的存儲(chǔ)空間是否充足,若充足則依次將從當(dāng)前使用的版本升級(jí)到目標(biāo)版本所需的全部升級(jí)包下載到終端306,若不充足則提示用戶空間不足,退出升級(jí)307。
[0019]進(jìn)一步,OTA客戶端將升級(jí)所需的所有升級(jí)包下載到終端后,OTA客戶端將升級(jí)方式、升級(jí)包路徑以及多包標(biāo)識(shí)寫到cache分區(qū)中,但是recovery模式不一定能夠識(shí)別上層傳遞下來(lái)的升級(jí)包路徑,因此需要在framework層增加路徑轉(zhuǎn)換的接口,根據(jù)與存儲(chǔ)器規(guī)定的標(biāo)準(zhǔn),將升級(jí)包路徑轉(zhuǎn)換為recovery模式下可以識(shí)別的路徑308。
[0020]進(jìn)一步,路徑轉(zhuǎn)換完成后,需要通過(guò)cache分區(qū)作為媒介將升級(jí)包路徑傳遞給recovery,并將升級(jí)方式、升級(jí)包路徑等信息寫到/cache/recovery/command中,執(zhí)行重啟進(jìn)入recovery模式309。
[0021]需要說(shuō)明的是,整個(gè)下載過(guò)程中,用戶看到的只有一個(gè)進(jìn)度條,多包的形式對(duì)用戶完全不可見(jiàn),用戶體驗(yàn)效果好。在下載過(guò)程中,若出現(xiàn)網(wǎng)絡(luò)異常等情況導(dǎo)致下載失敗,則下次連接網(wǎng)絡(luò)時(shí),能夠根據(jù)上次的下載進(jìn)行自動(dòng)續(xù)傳下載,下載完成后,提示用戶進(jìn)行升級(jí)。
[0022]進(jìn)一步,終端獲取從當(dāng)前使用的版本升級(jí)到目標(biāo)版本所需的所有升級(jí)包的方法還可以為:終端向服務(wù)器發(fā)送攜帶當(dāng)前版本的升級(jí)請(qǐng)求消息,服務(wù)器根據(jù)升級(jí)請(qǐng)求消息獲得終端的當(dāng)前版本,并檢測(cè)目標(biāo)版本,將當(dāng)前版本升級(jí)到目標(biāo)版本所需的所有升級(jí)包打包發(fā)送給終端,終端接收服務(wù)器發(fā)送的所有升級(jí)包。還可以是用戶手動(dòng)從服務(wù)器下載從當(dāng)前版本升級(jí)到目標(biāo)版本的所有升級(jí)包。
[0023]需要說(shuō)明的是,從服務(wù)器下載從當(dāng)前版本升級(jí)到目標(biāo)版本的所有升級(jí)包中每個(gè)升級(jí)包都包括兩個(gè)版本:在先版本和新版本。其中,在先版本和新版本可以是相鄰兩個(gè)版本之間的升級(jí)包,也可以是不相鄰兩個(gè)版本的升級(jí)包,在先版本用于指示該升級(jí)包需要對(duì)哪一版本進(jìn)行升級(jí),新版本則用于指示根據(jù)該升級(jí)包將終端升級(jí)到哪一版本。下載的所有升級(jí)包中一定有一個(gè)升級(jí)包的在先版本為終端當(dāng)前使用的版本,一定有一個(gè)升級(jí)包的新版本為目標(biāo)版本,且一個(gè)升級(jí)包的新版本對(duì)應(yīng)另一升級(jí)包的原始版本。
[0024]圖4為本發(fā)明實(shí)施例提供的另一種OTA多包連續(xù)升級(jí)的校驗(yàn)方法流程示意圖,如圖4所示,進(jìn)入recovery模式后,終端解析401通過(guò)執(zhí)行g(shù)et_args(&argc, &argv)獲取的OTA升級(jí)包的路徑信息、版本號(hào)等升級(jí)所需參數(shù),判斷402是否解析為多包升級(jí)。
[0025]具體的,可以在制作OTA升級(jí)包時(shí),在原有制作OTA單包的基礎(chǔ)上在觸發(fā)腳本mult1-ota-1nc-update.sh中增加多包標(biāo)識(shí)參數(shù),并在執(zhí)行腳本ota_from_target_files中增加對(duì)多包標(biāo)識(shí)參數(shù)的解析,這樣在執(zhí)行OTA升級(jí)時(shí),由于升級(jí)前所有的升級(jí)參數(shù)都被寫入/cache/recovery/command中,因此需要判斷/cache/recovery/command中是否存在多包標(biāo)識(shí)參數(shù)。也可以增加對(duì)misc分區(qū)中multi域的解析處理腳本,這樣在執(zhí)行OTA升級(jí)時(shí),通過(guò)解析misc分區(qū)的multi域中是單包還是多包,以確定進(jìn)行單包校驗(yàn)還是多包校驗(yàn)。
[0026]進(jìn)一步,若存在多包標(biāo)識(shí)參數(shù),則進(jìn)入多包校驗(yàn)流程;若不存在多包標(biāo)識(shí)參數(shù),則進(jìn)入單包校驗(yàn)流程100,如圖1所示,從終端內(nèi)存中獲取系統(tǒng)指紋信息,并與從寄存器中所讀取的升級(jí)包中的系統(tǒng)指紋信息匹配,若匹配,則校驗(yàn)成功,進(jìn)入升級(jí)流程,若不匹配,則校驗(yàn)失敗,停止升級(jí)。
[0027]進(jìn)一步,根據(jù)當(dāng)前使用的系統(tǒng)版本的版本號(hào)獲取403在先版本號(hào)與當(dāng)前使用版本號(hào)相同的第i個(gè)升級(jí)包。其中,i表示當(dāng)前所獲取的第幾個(gè)升級(jí)包,可以取1,2,3...η,η為從終端當(dāng)前使用的版本升級(jí)到目標(biāo)版本的升級(jí)包的個(gè)數(shù)。加載第i個(gè)升級(jí)包,以獲取404第i個(gè)升級(jí)包中的系統(tǒng)指紋信息,并將該系統(tǒng)指紋信息存儲(chǔ)在寄存器中。其中系統(tǒng)指紋信息中包括當(dāng)前版本的指紋信息和第i個(gè)升級(jí)包中的所要升級(jí)的版本的指紋信息。
[0028]進(jìn)一步,為了避免system分區(qū)里的設(shè)備屬性容易被修改而影響后續(xù)的升級(jí)操作,將system分區(qū)掛載405為只讀操作。加載system分區(qū)的中的bui Id.prop文件,其中bui Id.prop文件包括系統(tǒng)版本所有參數(shù)的屬性值,逐行遍歷bui Id.prop文件以得到終端的系統(tǒng)指紋信息的屬性值所在的行,獲取406該行中的系統(tǒng)指紋信息,用于后續(xù)的校驗(yàn)。
[0029]步驟202,基于從所述終端的系統(tǒng)分區(qū)中所獲取的系統(tǒng)指紋信息與從寄存器中讀取的OTA升級(jí)包中的系統(tǒng)指紋信息的校驗(yàn)結(jié)果,以判斷是否進(jìn)行OTA多包升級(jí)。
[0030]需要說(shuō)明的是,這里的OTA升級(jí)包是指OTA差分升級(jí)包,其中OTA差分升級(jí)包是由根據(jù)兩個(gè)相鄰版本的升級(jí)包對(duì)比所得的差分信息組成的升級(jí)包。示例的,差分升級(jí)包V2-V1中包含了版本V2相對(duì)于版本Vl發(fā)生變化的應(yīng)用信息,若要通過(guò)差分升級(jí)包V2-V1實(shí)現(xiàn)升級(jí),終端的當(dāng)前版本必須為VI,升級(jí)完成后客戶端的版本就變?yōu)閂2。
[0031 ]具體的,讀取寄存器中第i個(gè)升級(jí)包的系統(tǒng)指紋信息,以判斷407與從終端system分區(qū)獲取的系統(tǒng)指紋信息是否匹配,若匹配,則校驗(yàn)成功,終端進(jìn)入升級(jí)流程408,對(duì)第i個(gè)升級(jí)包進(jìn)行升級(jí),若不匹配,則校驗(yàn)失敗,退出升級(jí)409,終端仍然為當(dāng)前使用版本。
[0032]進(jìn)一步,終端進(jìn)入第i個(gè)升級(jí)包的升級(jí)流程408后,卸載system分區(qū),將第i個(gè)升級(jí)包中的patch文件拷貝到system分區(qū)下。其中patch文件為第i個(gè)升級(jí)包中的新版本的boot分區(qū)和recovery分區(qū)相對(duì)于第i個(gè)升級(jí)包中的在先版本的差分文件。這時(shí)system分區(qū)升級(jí)完成,且system分區(qū)中的系統(tǒng)指紋信息就會(huì)變?yōu)樾掳姹镜南到y(tǒng)指紋信息。
[0033]進(jìn)一步,若第i個(gè)升級(jí)包升級(jí)成功,則繼續(xù)判斷i是否小于n,其中η為從終端當(dāng)前使用的版本升級(jí)到目標(biāo)版本的升級(jí)包的個(gè)數(shù),即判斷第i個(gè)升級(jí)包是否為最后一個(gè)升級(jí)包,若不是則繼續(xù)從所獲取的所有升級(jí)包中獲取在先版本的版本號(hào)與第i個(gè)升級(jí)包中新版本的版本號(hào)相同的第i+Ι個(gè)升級(jí)包,執(zhí)行步驟201,得到終端系統(tǒng)分區(qū)中的系統(tǒng)指紋信息。其中所獲取的系統(tǒng)分區(qū)的指紋信息為第i個(gè)升級(jí)包中的新版本的指紋信息。將該系統(tǒng)分區(qū)中的系統(tǒng)指紋信息與從寄存器