一種實(shí)現(xiàn)ota升級(jí)的方法和終端的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)OTA (Over The Air,空中下載技術(shù))升級(jí)的方法和終端。
【背景技術(shù)】
[0002]隨著智能手機(jī)愈來愈廣泛的普及,人們對(duì)智能手機(jī)的要求也越來越高,尤其是手機(jī)的信息安全更是備受重視。系統(tǒng)開發(fā)者以及設(shè)備制造商也在從各個(gè)方面嘗試加強(qiáng)手機(jī)的安全性。Android智能手機(jī)系統(tǒng)開發(fā)商Google在最新版本中推出了系統(tǒng)鏡像完整性校驗(yàn)功能,該功能通過每次開機(jī)對(duì)系統(tǒng)鏡像進(jìn)行完整性校驗(yàn)的方法確保其沒有被攻擊者進(jìn)行惡意篡改,但是這一機(jī)制不能與目前Android系統(tǒng)廣泛應(yīng)用的OTA升級(jí)機(jī)制兼容工作。具體地,Android智能平臺(tái)目前廣泛應(yīng)用OTA升級(jí)機(jī)制原理如圖1所示,該升級(jí)方法是通過在生產(chǎn)過程中比較系統(tǒng)中對(duì)應(yīng)文件的差別,計(jì)算出相應(yīng)的差分?jǐn)?shù)據(jù),打包成OTA升級(jí)包;然后在手機(jī)側(cè)通過該升級(jí)包將系統(tǒng)中對(duì)應(yīng)文件升級(jí)至新版本,達(dá)到整個(gè)系統(tǒng)升級(jí)的目的。
[0003]然后,該機(jī)制的問題是,雖然升級(jí)后系統(tǒng)文件的內(nèi)容保持與新版本一致,但是由于升級(jí)過程中每個(gè)具體文件的修改順序,修改方法都不同,所以導(dǎo)致從系統(tǒng)層面的角度上看,文件系統(tǒng)的元數(shù)據(jù)被修改了,所以當(dāng)這種方式與Android的系統(tǒng)完整性校驗(yàn)一起工作的時(shí)候,就會(huì)導(dǎo)致升級(jí)后系統(tǒng)鏡像校驗(yàn)失敗。所以,如何既可以實(shí)現(xiàn)OTA升級(jí),又可以兼容系統(tǒng)鏡像校驗(yàn)機(jī)制,成為目前亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種實(shí)現(xiàn)OTA升級(jí)的方法和終端,用以解決現(xiàn)有技術(shù)中的OTA升級(jí)技術(shù)無法兼容系統(tǒng)鏡像校驗(yàn)機(jī)制的問題。
[0005]依據(jù)本發(fā)明的一個(gè)方面,提供一種實(shí)現(xiàn)OTA升級(jí)的方法,所述方法中,待升級(jí)終端的系統(tǒng)鏡像文件以數(shù)據(jù)塊的形式存儲(chǔ);具體地,所述方法包括:
[0006]獲取并解析OTA升級(jí)包,得到面向于系統(tǒng)鏡像文件的各差分升級(jí)文件;
[0007]從系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊,對(duì)相應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,以實(shí)現(xiàn)對(duì)系統(tǒng)鏡像文件的升級(jí)。
[0008]可選地,本發(fā)明所述方法中,所述差分升級(jí)文件的文件頭中包含有用以指示該差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊在系統(tǒng)鏡像文件中的偏移量字段、以及用以指示數(shù)據(jù)塊大小的Size字段;
[0009]所述從系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊,具體包括:
[0010]根據(jù)各差分升級(jí)文件頭中的偏移量字段和Size字段,在所述系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊。
[0011]可選地,本發(fā)明所述方法中,所述差分升級(jí)文件的文件頭中還包括用以判定差分升級(jí)文件是否有效的魔術(shù)字符串字段;
[0012]所述方法還包括:當(dāng)?shù)玫矫嫦蛴谙到y(tǒng)鏡像文件的各差分升級(jí)文件時(shí),根據(jù)各差分升級(jí)文件的魔術(shù)字符串字段,檢測(cè)各差分升級(jí)文件的有效性,并在各差分升級(jí)文件有效時(shí),觸發(fā)讀取對(duì)應(yīng)數(shù)據(jù)塊的操作。
[0013]可選地,本發(fā)明所述方法中,所述對(duì)相應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,以實(shí)現(xiàn)對(duì)系統(tǒng)鏡像文件的升級(jí),具體包括:
[0014]將與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊讀入內(nèi)存;
[0015]針對(duì)內(nèi)存中的各數(shù)據(jù)塊,將各差分升級(jí)文件補(bǔ)丁應(yīng)用到對(duì)應(yīng)的數(shù)據(jù)塊中;
[0016]將升級(jí)后的數(shù)據(jù)塊寫入待升級(jí)終端設(shè)備,實(shí)現(xiàn)對(duì)系統(tǒng)鏡像文件的升級(jí)。
[0017]可選地,本發(fā)明所述方法中,所述從系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊,對(duì)相應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,具體包括:
[0018]調(diào)用系統(tǒng)函數(shù),為每個(gè)差分升級(jí)文件分別創(chuàng)建一個(gè)處理進(jìn)程,每個(gè)處理進(jìn)程調(diào)取對(duì)應(yīng)的差分升級(jí)文件,并從系統(tǒng)鏡像文件中讀取與該差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,以實(shí)現(xiàn)對(duì)各待升級(jí)數(shù)據(jù)塊的并發(fā)升級(jí)。
[0019]依據(jù)本發(fā)明的另一個(gè)方面,提供一種實(shí)現(xiàn)OAT升級(jí)的終端,所述終端中的系統(tǒng)鏡像文件以數(shù)據(jù)塊的形式存儲(chǔ);所述終端具體包括:
[0020]信息獲取模塊,用于獲取并解析OTA升級(jí)包,得到面向于系統(tǒng)鏡像文件的各差分升級(jí)文件;
[0021]升級(jí)模塊,用于從系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊,對(duì)相應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,以實(shí)現(xiàn)對(duì)系統(tǒng)鏡像文件的升級(jí)。
[0022]可選地,本發(fā)明所述終端中,所述差分升級(jí)文件的文件頭中包含有用以指示該差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊在系統(tǒng)鏡像文件中的偏移量字段、以及用以指示數(shù)據(jù)塊大小的Size字段;
[0023]所述升級(jí)模塊,具體用于根據(jù)各差分升級(jí)文件頭中的偏移量字段和Size字段,在所述系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊。
[0024]可選地,本發(fā)明所述終端中,所述差分升級(jí)文件的文件頭中還包括用以判定差分升級(jí)文件是否有效的魔術(shù)字符串字段;
[0025]所述信息獲取模塊,還用于當(dāng)所述信息獲取模塊得到面向于系統(tǒng)鏡像文件的各差分升級(jí)文件時(shí),根據(jù)各差分升級(jí)文件的魔術(shù)字符串字段,檢測(cè)各差分升級(jí)文件的有效性,并在各差分升級(jí)文件有效時(shí),觸發(fā)所述升級(jí)模塊。
[0026]可選地,本發(fā)明所述終端中,所述升級(jí)模塊,具體用于將與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊讀入內(nèi)存,針對(duì)內(nèi)存中的各數(shù)據(jù)塊,將各差分升級(jí)文件補(bǔ)丁應(yīng)用到對(duì)應(yīng)的數(shù)據(jù)塊中,將升級(jí)后的數(shù)據(jù)塊寫入終端設(shè)備,實(shí)現(xiàn)對(duì)系統(tǒng)鏡像文件的升級(jí)。
[0027]可選地,本發(fā)明所述終端中,所述升級(jí)模塊,進(jìn)一步用于調(diào)用系統(tǒng)函數(shù),為每個(gè)差分升級(jí)文件分別創(chuàng)建一個(gè)處理進(jìn)程,利用每個(gè)處理進(jìn)程調(diào)取對(duì)應(yīng)的差分升級(jí)文件,并從系統(tǒng)鏡像文件中讀取與對(duì)應(yīng)差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,以實(shí)現(xiàn)對(duì)各待升級(jí)數(shù)據(jù)塊的并發(fā)升級(jí)。
[0028]本發(fā)明有益效果如下:
[0029]首先,本發(fā)明使用拆分后的系統(tǒng)鏡像文件作為差分比較的數(shù)據(jù)而不是使用文件系統(tǒng)中的文件,這樣文件系統(tǒng)的元數(shù)據(jù)也被包含在差分?jǐn)?shù)據(jù)包中,升級(jí)過程不會(huì)修改文件系統(tǒng)的元數(shù)據(jù),升級(jí)后終端中的鏡像與生產(chǎn)過程中的鏡像完全一致,不會(huì)與系統(tǒng)校驗(yàn)機(jī)制沖突,實(shí)現(xiàn)了 OTA升級(jí)機(jī)制與系統(tǒng)鏡像校驗(yàn)機(jī)制的有效結(jié)合;
[0030]其次,本發(fā)明所使用的OTA升級(jí)可以實(shí)現(xiàn)對(duì)系統(tǒng)鏡像的并發(fā)升級(jí),極大的提高了升級(jí)效率。
【附圖說明】
[0031]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0032]圖1為現(xiàn)有技術(shù)中Android平臺(tái)OTA升級(jí)機(jī)制的示意圖;
[0033]圖2為本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)OTA升級(jí)的方法的流程圖;
[0034]圖3為本發(fā)明實(shí)施例中OTA升級(jí)包中差分升級(jí)文件的結(jié)構(gòu)圖;
[0035]圖4為本發(fā)明實(shí)施例中提供的實(shí)現(xiàn)OTA升級(jí)的方法的又一流程圖;
[0036]圖5為本發(fā)明實(shí)施例中OTA升級(jí)機(jī)制的示意圖;
[0037]圖6為本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)OTA升級(jí)的終端的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0038]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0039]為了解決現(xiàn)有技術(shù)中OTA升級(jí)技術(shù)無法兼容系統(tǒng)鏡像校驗(yàn)機(jī)制的問題,本發(fā)明提供一種實(shí)現(xiàn)OTA升級(jí)的方法和終端,該方法是一種有效可行的面向塊設(shè)備的Android平臺(tái)OTA升級(jí)方式,其能夠使Android系統(tǒng)的OTA升級(jí)機(jī)制與系統(tǒng)校驗(yàn)機(jī)制有效的結(jié)合工作。下面就通過幾個(gè)具體實(shí)施例對(duì)本發(fā)明的詳細(xì)實(shí)施過程進(jìn)行闡述。
[0040]實(shí)施例一
[0041]本發(fā)明實(shí)施例提供一種實(shí)現(xiàn)OTA升級(jí)的方法,所述方法中,待升級(jí)終端的系統(tǒng)鏡像文件以數(shù)據(jù)塊的形式存儲(chǔ)。具體的,如圖2所示,所述方法包括:
[0042]步驟S201,獲取并解析OTA升級(jí)包,得到面向于系統(tǒng)鏡像文件的各差分升級(jí)文件;
[0043]其中,差分升級(jí)文件的文件頭中至少包含有用以指示該差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊在系統(tǒng)鏡像文件中的偏移量字段、以及用以指示數(shù)據(jù)塊大小的Size字段。
[0044]可選地,差分升級(jí)文件的文件頭中還包括用以判定差分升級(jí)文件是否有效的魔術(shù)字符串字段;
[0045]此時(shí),當(dāng)?shù)玫矫嫦蛴谙到y(tǒng)鏡像文件的各差分升級(jí)文件時(shí),還需要根據(jù)各差分升級(jí)文件的魔術(shù)字符串字段,檢測(cè)各差分升級(jí)文件的有效性,并在各差分升級(jí)文件有效時(shí),觸發(fā)步驟S202。
[0046]步驟S202,從系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊,對(duì)相應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,以實(shí)現(xiàn)對(duì)系統(tǒng)鏡像文件的升級(jí)。
[0047]其中,從系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊,具體包括:
[0048]根據(jù)各差分升級(jí)文件頭中的偏移量字段和Size字段,在所述系統(tǒng)鏡像文件中讀取與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊。
[0049]進(jìn)一步地,對(duì)相應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作優(yōu)選地通過如下方式實(shí)現(xiàn):
[0050](I)將與各差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊讀入內(nèi)存;
[0051](2)針對(duì)內(nèi)存中的各數(shù)據(jù)塊,將各差分升級(jí)文件補(bǔ)丁應(yīng)用到對(duì)應(yīng)的數(shù)據(jù)塊中;
[0052](3)將升級(jí)后的數(shù)據(jù)塊寫入待升級(jí)終端設(shè)備,實(shí)現(xiàn)對(duì)系統(tǒng)鏡像文件的升級(jí)。
[0053]該方式將數(shù)據(jù)塊讀入內(nèi)存進(jìn)行升級(jí),在該方式下,即使終端突然掉電或死機(jī),只要終端重啟后,均可以將內(nèi)存內(nèi)未完成的升級(jí)操作繼續(xù)完成,保證了升級(jí)的連續(xù)性。
[0054]進(jìn)一步地,本發(fā)明實(shí)施例所述方法還可以使用多線程模式針對(duì)整個(gè)系統(tǒng)鏡像完成并發(fā)升級(jí),具體表現(xiàn)為:
[0055]調(diào)用系統(tǒng)函數(shù),為每個(gè)差分升級(jí)文件分別創(chuàng)建一個(gè)處理進(jìn)程,每個(gè)處理進(jìn)程調(diào)取對(duì)應(yīng)的差分升級(jí)文件,并從系統(tǒng)鏡像文件中讀取與該差分升級(jí)文件對(duì)應(yīng)的數(shù)據(jù)塊進(jìn)行升級(jí)操作,以實(shí)現(xiàn)對(duì)各待升級(jí)數(shù)據(jù)塊的并發(fā)升級(jí)。
[0056]綜上所述,本實(shí)施例所述方法使用拆分后的系統(tǒng)鏡像文件作為差分比較的數(shù)據(jù)而不是使用文件系統(tǒng)中的文件,這樣文件系統(tǒng)的元數(shù)據(jù)也被包含在差分?jǐn)?shù)據(jù)包中,升級(jí)過程不會(huì)修改文件系統(tǒng)的元數(shù)據(jù),升級(jí)后終端中的鏡像與生產(chǎn)過程中的鏡像完全一致,不會(huì)與系統(tǒng)校驗(yàn)機(jī)制沖突,實(shí)現(xiàn)了 OTA升級(jí)機(jī)制與系統(tǒng)鏡像校驗(yàn)機(jī)制的有效結(jié)合。
[0057]為了更清楚的闡述本發(fā)明,下面根據(jù)圖3?圖5給出本發(fā)明一個(gè)較佳的實(shí)施例,并結(jié)合對(duì)實(shí)施例的描述,進(jìn)一步給出本