本申請涉及移動終端技術(shù)領(lǐng)域,特別是涉及一種Android系統(tǒng)升級的方法和裝置。
背景技術(shù):
Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。正是因為Android的開源,使得Android系統(tǒng)的開發(fā)人員越來越多,Android系統(tǒng)的使用范圍也越來越廣,從原來主要支持手機逐漸擴展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機、游戲機等。
隨著科技的不斷進步,移動設(shè)備的硬件、軟件也都在不斷升級,為了適配更高級的硬件、軟件,Android系統(tǒng)也需要不斷升級。在實際應(yīng)用中,因為無線網(wǎng)絡(luò)的廣泛使用,絕大部分的Android系統(tǒng)都是通過OTA(Over the AirTechnology,空間下載技術(shù))進行升級。OTA升級是Android系統(tǒng)提供的標準軟件升級方式。它功能強大,可以無損失升級系統(tǒng),主要通過網(wǎng)絡(luò),例如WIFI、3G、4G自動下載OTA升級包,然后進行自動升級,但是也支持通過下載OTA升級包到本地存儲卡進行升級。OTA的升級包非常的小,一般幾M到十幾M,非常的方便,基本是在系統(tǒng)上點擊幾下就完成了升級,并且,最重要的是,OTA升級無需備份數(shù)據(jù),短短幾分鐘就能完成所有升級工作,所有數(shù)據(jù)都會完好無損的保留下來。
目前,Andorid系統(tǒng)的OTA升級針對系統(tǒng)的校驗存在升級前和升級后兩次校驗,如果升級前校驗成功,但是升級后校驗失敗,則會導(dǎo)致系統(tǒng)沒有被正常升級,并且升級過程中,升級失敗會進入recovery模式,在該模式下如果等待超時手機會自動重啟,此時如果用戶不注意,而且恰好手機可以開機,那么,系統(tǒng)版本信息會更改為升級后的高版本信息,所以用戶會誤認為系統(tǒng)升級成功,即使通過查看版本信息也會誤認為系統(tǒng)已經(jīng)升級成功。但實際上系統(tǒng)并沒有真正完全升級成功,還會導(dǎo)致升級后的系統(tǒng)無法進一步后續(xù)升級,嚴重的話,甚至?xí)霈F(xiàn)手機會死機、無法開機的情況,這樣,用戶只能去售后或者返廠維修,不僅用戶體驗差,而且還會增加維修成本。
技術(shù)實現(xiàn)要素:
為了解決上述用戶在升級Andorid系統(tǒng)的過程中出現(xiàn)升級失敗的情況,提出了本申請實施例一種Android系統(tǒng)升級的方法和相應(yīng)的一種Android系統(tǒng)升級的裝置。
為了解決上述問題,本申請實施例公開了一種Android系統(tǒng)升級的方法,包括:
當接收到針對所述Android系統(tǒng)的升級請求時,下載所述Android系統(tǒng)的差分升級數(shù)據(jù)包,所述差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息;
依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊;
計算所述第一目標數(shù)據(jù)塊的校驗信息;
判斷所述第一目標數(shù)據(jù)塊的校驗信息,與,所述待升級數(shù)據(jù)塊的校驗信息是否一致;
若一致,則采用所述差分升級數(shù)據(jù)包升級所述Android系統(tǒng)。
可選地,所述的方法還包括:
當所述第一目標數(shù)據(jù)塊的校驗信息,與所述待升級數(shù)據(jù)塊的校驗信息不一致時,針對所述升級請求,獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包;
采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
可選地,在所述采用所述差分升級數(shù)據(jù)包升級所述Android系統(tǒng)的步驟之后,所述的方法還包括:
校驗采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)是否升級成功;
若否,則獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包,以及,采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
可選地,所述差分升級數(shù)據(jù)包還具有與所述待升級數(shù)據(jù)塊的地址相同的已升級數(shù)據(jù)塊的校驗信息;所述校驗采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)是否升級成功的步驟包括:
確定采用所述差分升級數(shù)據(jù)包升級的第二目標數(shù)據(jù)塊;
計算所述第二目標數(shù)據(jù)塊的校驗信息;
若所述已升級數(shù)據(jù)塊的校驗信息,與所述第二目標數(shù)據(jù)塊的校驗信息一致,則判定采用所述差分升級數(shù)據(jù)包升級的Android升級成功,否則,判定采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級失敗。
可選地,所述確定采用所述差分升級數(shù)據(jù)包升級的第二目標數(shù)據(jù)塊的步驟包括:
依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中已升級的數(shù)據(jù)塊;
將所述數(shù)據(jù)塊作為第二目標數(shù)據(jù)塊。
相應(yīng)的,本申請實施例公開了一種Android系統(tǒng)升級的裝置,包括:
差分升級數(shù)據(jù)包下載模塊,用于當接收到針對所述Android系統(tǒng)的升級請求時,下載所述Android系統(tǒng)的差分升級數(shù)據(jù)包,所述差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息;
第一目標數(shù)據(jù)塊確定模塊,用于依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊;
第一目標數(shù)據(jù)塊計算模塊,用于計算所述第一目標數(shù)據(jù)塊的校驗信息;
第一目標數(shù)據(jù)塊判斷模塊,用于判斷所述第一目標數(shù)據(jù)塊的校驗信息,與,所述待升級數(shù)據(jù)塊的校驗信息是否一致;
差分升級數(shù)據(jù)包升級模塊,用于若一致,則采用所述差分升級數(shù)據(jù)包升級所述Android系統(tǒng)。
相應(yīng)的,所述的裝置還包括:
完整升級數(shù)據(jù)包獲取模塊,用于當所述第一目標數(shù)據(jù)塊的校驗信息,與所述待升級數(shù)據(jù)塊的校驗信息不一致時,針對所述升級請求,獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包;
第一完整升級數(shù)據(jù)包升級模塊,用于采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
相應(yīng)的,所述的裝置還包括:
校驗?zāi)K,用于校驗采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)是否升級成功;
第二完整升級數(shù)據(jù)包升級模塊,用于若否,則獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包,以及,采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
相應(yīng)的,所述差分升級數(shù)據(jù)包還具有與所述待升級數(shù)據(jù)塊的地址相同的已升級數(shù)據(jù)塊的校驗信息;所述校驗?zāi)K包括:
第二目標數(shù)據(jù)塊確定子模塊,用于確定采用所述差分升級數(shù)據(jù)包升級的第二目標數(shù)據(jù)塊;
第二目標數(shù)據(jù)塊計算子模塊,用于計算所述第二目標數(shù)據(jù)塊的校驗信息;
第二目標數(shù)據(jù)塊判斷子模塊,用于若所述已升級數(shù)據(jù)塊的校驗信息,與所述第二目標數(shù)據(jù)塊的校驗信息一致,則判定采用所述差分升級數(shù)據(jù)包升級的Android升級成功,否則,判定采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級失敗。
相應(yīng)的,所述第二目標數(shù)據(jù)塊確定子模塊包括:
已升級數(shù)據(jù)塊確定單元,用于依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中已升級的數(shù)據(jù)塊;
第二目標數(shù)據(jù)塊確定單元,用于將所述數(shù)據(jù)塊作為第二目標數(shù)據(jù)塊。
本申請實施例包括以下優(yōu)點:
本申請在接收到針對Android系統(tǒng)的升級請求時,下載Android系統(tǒng)的差分升級數(shù)據(jù)包,其中,差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息。然后依據(jù)待升級數(shù)據(jù)塊的地址確定Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊,并計算第一目標數(shù)據(jù)塊的校驗信息,接著判斷第一目標數(shù)據(jù)塊的校驗信息與待升級數(shù)據(jù)塊的校驗信息是否一致,如果一致,則采用差分升級數(shù)據(jù)包升級所述Android系統(tǒng)。這樣,在安裝升級包之前通過對待升級數(shù)據(jù)塊、升級包進行校驗,確定了待升級數(shù)據(jù)塊與升級包沒有問題之后再進行升級,從而確保升級可以成功執(zhí)行,保證了系統(tǒng)升級的成功率。
另外,本申請在采用差分升級數(shù)據(jù)包升級后,會校驗升級后的系統(tǒng)是否升級成功,如果沒有,會繼續(xù)采用完整升級數(shù)據(jù)對系統(tǒng)進行升級,從而確保升級可以成功執(zhí)行,進一步保證了系統(tǒng)升級的成功率。
附圖說明
圖1是本申請的一種Android系統(tǒng)升級的方法實施例的步驟流程圖一;
圖2是本申請的一種Android系統(tǒng)升級的方法實施例的步驟流程圖二;
圖3是本申請的一種Android系統(tǒng)升級的裝置實施例的結(jié)構(gòu)框圖一;
圖4是本申請的一種Android系統(tǒng)升級的裝置實施例的結(jié)構(gòu)框圖二。
具體實施方式
為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本申請作進一步詳細的說明。
本申請實施例的核心構(gòu)思之一在于,在接收到對當前Android系統(tǒng)進行升級的請求后,首先對當前系統(tǒng)進行校驗,如果校驗成功,則采用低版本系統(tǒng)到高版本系統(tǒng)的差分升級數(shù)據(jù)包對當前低版本系統(tǒng)進行升級。
現(xiàn)有技術(shù)中,Andorid系統(tǒng)的OTA升級針對系統(tǒng)的校驗存在升級前和升級后兩次校驗,如果升級前校驗成功,但是升級后校驗失敗,則會導(dǎo)致系統(tǒng)沒有被正常升級,并且升級過程中,升級失敗會進入recovery模式,在該模式下如果等待超時手機會自動重啟,此時如果用戶不注意,而且恰好手機可以開機,那么,系統(tǒng)版本信息會更改為升級后的高版本信息,所以用戶會誤認為系統(tǒng)升級成功,即使通過查看版本信息也會誤認為系統(tǒng)已經(jīng)升級成功。但實際上系統(tǒng)并沒有真正完全升級成功,還會導(dǎo)致升級后的系統(tǒng)無法進一步后續(xù)升級,嚴重的話,甚至?xí)霈F(xiàn)手機會死機、無法開機的情況。
因此,針對上述問題,本申請在接收到針對Android系統(tǒng)的升級請求時,下載Android系統(tǒng)的差分升級數(shù)據(jù)包,其中,差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息。然后依據(jù)待升級數(shù)據(jù)塊的地址確定Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊,并計算第一目標數(shù)據(jù)塊的校驗信息,接著判斷第一目標數(shù)據(jù)塊的校驗信息與待升級數(shù)據(jù)塊的校驗信息是否一致,如果一致,則采用差分升級數(shù)據(jù)包升級所述Android系統(tǒng)。這樣,在安裝升級包之前通過對待升級數(shù)據(jù)塊、升級包進行校驗,確定了待升級數(shù)據(jù)塊與升級包沒有問題之后再進行升級,從而確保升級可以成功執(zhí)行,保證了系統(tǒng)升級的成功率。
另外,本申請在采用差分升級數(shù)據(jù)包升級后,會校驗升級后的系統(tǒng)是否升級成功,如果沒有,會繼續(xù)采用完整升級數(shù)據(jù)對系統(tǒng)進行升級,從而確保升級可以成功執(zhí)行,進一步保證了系統(tǒng)升級的成功率。
參照圖1,示出了本申請的一種Android系統(tǒng)升級的方法實施例的步驟流程圖一,具體可以包括如下步驟:
步驟101,當接收到針對所述Android系統(tǒng)的升級請求時,下載所述Android系統(tǒng)的差分升級數(shù)據(jù)包,所述差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息。
數(shù)據(jù)塊,是一組按順序連續(xù)排列在一起的幾組記錄,是主存儲器與輸入、輸出設(shè)備或外存儲器之間進行傳輸?shù)囊粋€數(shù)據(jù)單位,是數(shù)據(jù)的物理記錄。數(shù)據(jù)塊的大小可以是固定的或是可變的,塊與塊之間有間隙。主存儲器與cache(Cache Memory,高速緩沖存儲器)都劃分成長度相等的數(shù)據(jù)塊,每次主存儲器與cache交換數(shù)據(jù)時都是以數(shù)據(jù)塊為單位進行的。
在本申請中,Android系統(tǒng)采用的差分升級數(shù)據(jù)包需要預(yù)先制作好并存儲在服務(wù)器中。差分升級的原理,就是將完整高版本系統(tǒng)與完整低版本系統(tǒng)具有差異的數(shù)據(jù)塊制作成差分升級數(shù)據(jù)包,完整低版本系統(tǒng)通過安裝差分升級數(shù)據(jù)包對那些有差異的數(shù)據(jù)塊里的數(shù)據(jù)進行更新,從而實現(xiàn)了低版本系統(tǒng)到高版本系統(tǒng)的升級。
具體地,在制作差分升級數(shù)據(jù)包時,因為知道了升級前完整的低版本與升級后完整的高版本之間的差異,所以可以通過diff工具對高、低兩個版本系統(tǒng)的差異進行比較,比較后就可以得知升級前完整的低版本系統(tǒng)與升級后完整的高版本系統(tǒng)之間有差異的數(shù)據(jù)塊是哪些。也就是說,在升級之前就已經(jīng)知道低版本系統(tǒng)中會被更新的數(shù)據(jù)塊,也就是待升級的數(shù)據(jù)塊的地址,此時,針對所述地址的數(shù)據(jù)塊生成校驗信息,并將所述地址與生成的校驗信息一起打包封裝在差分升級數(shù)據(jù)包里。
其中,校驗信息可以是HASH值,例如,在制作差分升級數(shù)據(jù)包時,通過比較高、低兩個版本系統(tǒng)的差異可知,完整低版本系統(tǒng)與完整高版本系統(tǒng)之間有92個數(shù)據(jù)塊是有差異的,此時,將這92個數(shù)據(jù)塊的地址記錄下來,并計算這92個數(shù)據(jù)的HASH值,然后將這92個數(shù)據(jù)塊的地址、HASH值一起打包封裝在差分升級數(shù)據(jù)包里。
校驗信息也可以是對各個數(shù)據(jù)塊的具體操作信息,例如,完整低版本系統(tǒng)與完整高版本系統(tǒng)之間有92個數(shù)據(jù)塊是有差異的,此時,分別記錄對每個數(shù)據(jù)塊的具體操作,涉及到需要修改的具體位置,例如替換哪些塊,移動哪些塊等等,然后將這92個數(shù)據(jù)的地址、對各個數(shù)據(jù)塊的具體操作信息一起打包封裝在差分升級數(shù)據(jù)包里。
當然,校驗信息還可以是其它信息,可以理解,可以用于校驗數(shù)據(jù)的方式都適用于本申請,本申請對此不作限制。
具有Android系統(tǒng)的設(shè)備在接收到針對所述Android系統(tǒng)的升級請求時,就會下載具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息的差分升級數(shù)據(jù)包。
步驟102,依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊;
具有Android系統(tǒng)的設(shè)備下載完差分升級數(shù)據(jù)包后,解封該差分升級數(shù)據(jù)包,獲取其中的待升級數(shù)據(jù)塊的地址。
因為當前低版本系統(tǒng)并不知道哪些數(shù)據(jù)塊是需要更新的,所以通過獲取差分升級數(shù)據(jù)包中的待升級數(shù)據(jù)塊的地址,就知道當前低版本系統(tǒng)中哪些數(shù)據(jù)塊是需要更新的。從而確定當前低版本系統(tǒng)中待升級的第一目標數(shù)據(jù)塊。
步驟103,計算所述第一目標數(shù)據(jù)塊的校驗信息;
確定了當前低版本系統(tǒng)中待升級的第一目標數(shù)據(jù)塊后,計算所述第一目標數(shù)據(jù)塊的校驗信息。其中,校驗信息可以是HASH值,也可以是對各個數(shù)據(jù)塊的具體操作信息。
步驟104,判斷所述第一目標數(shù)據(jù)塊的校驗信息,與,所述待升級數(shù)據(jù)塊的校驗信息是否一致;
具體的,當前低版本系統(tǒng)根據(jù)差分升級數(shù)據(jù)包中待升級的數(shù)據(jù)塊的地址計算出所述地址數(shù)據(jù)的HASH值,與差分升級數(shù)據(jù)包中待升級的數(shù)據(jù)塊的HASH值進行比較,判斷二者是否一致。
還可以判斷對當前低版本中各個待升級的數(shù)據(jù)塊的操作與差分升級數(shù)據(jù)包中記載的對各個待升級的數(shù)據(jù)塊的操作是否是一致的。比如,差分升級數(shù)據(jù)包中對某個數(shù)據(jù)塊的操作方式為刪除,但是校驗信息中記載的對該數(shù)據(jù)塊的操作方式應(yīng)該為移動,這樣,二者就不是一致了。
步驟105,若一致,則采用所述差分升級數(shù)據(jù)包升級所述Android系統(tǒng)。
若當前低版本系統(tǒng)根據(jù)差分升級數(shù)據(jù)包中待升級的數(shù)據(jù)塊的地址計算出所述地址數(shù)據(jù)的HASH值,與差分升級數(shù)據(jù)包中待升級的數(shù)據(jù)塊的HASH值相同,和/或,對當前低版本中各個待升級的數(shù)據(jù)塊的操作與差分升級數(shù)據(jù)包中記載的對各個待升級的數(shù)據(jù)塊的操作相同,則采用下載的差分升級數(shù)據(jù)包升級Android系統(tǒng)。
在本發(fā)明的一些實施方式中,在采用差分升級數(shù)據(jù)包升級Android系統(tǒng)的步驟之后,還可包括:
步驟106,校驗采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)是否升級成功。
具體的,為確保系統(tǒng)正常升級完成,需要對升級后的系統(tǒng)進行校驗,在本發(fā)明一些實施例中,所述差分升級數(shù)據(jù)包還具有與所述待升級數(shù)據(jù)塊的地址相同的已升級數(shù)據(jù)塊的校驗信息;所述步驟106包括:
確定采用所述差分升級數(shù)據(jù)包升級的第二目標數(shù)據(jù)塊;
計算所述第二目標數(shù)據(jù)塊的校驗信息;
若所述已升級數(shù)據(jù)塊的校驗信息,與所述第二目標數(shù)據(jù)塊的校驗信息一致,則判定采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級成功,否則,判定采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級失敗。
基于差分升級的原理,完整的高版本系統(tǒng)是已知的,所以可以針對完整高版本系統(tǒng)中已升級數(shù)據(jù)塊生成校驗信息。而完整高版本系統(tǒng)中已升級數(shù)據(jù)塊的地址與升級前完整低版本系統(tǒng)中待升級數(shù)據(jù)塊的地址是完全一樣的,所以,可以根據(jù)所述地址,計算出完整高版本系統(tǒng)中所述地址數(shù)據(jù)塊的校驗信息,并打包封裝在差分升級數(shù)據(jù)包中。
當前低版本系統(tǒng)采用差分升級數(shù)據(jù)包完成升級后,繼續(xù)依據(jù)待升級數(shù)據(jù)塊的地址確定Android系統(tǒng)中已升級的數(shù)據(jù)塊,并將所述數(shù)據(jù)塊作為第二目標數(shù)據(jù)塊,也就是說,第一目標數(shù)據(jù)塊和第二目標數(shù)據(jù)塊的存儲地址是一樣的,只不過第一目標數(shù)據(jù)塊里的數(shù)據(jù)是升級前的系統(tǒng)的數(shù)據(jù),第二目標數(shù)據(jù)塊里的數(shù)據(jù)是升級后的系統(tǒng)的數(shù)據(jù)。然后計算第二目標數(shù)據(jù)塊的校驗信息,若計算出的第二目標數(shù)據(jù)塊的校驗信息與差分升級數(shù)據(jù)包中已升級數(shù)據(jù)塊的校驗信息一致,則判定采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級成功,否則,判定采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級失敗。
在本發(fā)明實施例中,若采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級成功,則表示Android系統(tǒng)所有的分區(qū),包括system分區(qū)、boot分區(qū)、modem等多個分區(qū)都進行了升級,但是采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級失敗,則意味著Android系統(tǒng)僅僅升級了system分區(qū),其他分區(qū)例如:boot、modem等多個分區(qū)是沒有被正常升級的。
步驟107,當采用差分升級數(shù)據(jù)包升級當前低版本系統(tǒng)失敗時,獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包,以及,采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
在本發(fā)明實施例中,可以將完整高版本系統(tǒng)制作成一個升級包,這樣,低版本系統(tǒng)在安裝完全包升級數(shù)據(jù)包后,就完成了對當前系統(tǒng)的升級。
需要說明的是,在本發(fā)明實施例中,獲取全包升級數(shù)據(jù)包的方式可以是與差分升級數(shù)據(jù)包封裝在一起下載下來,也可以是在第一目標數(shù)據(jù)塊的校驗信息,與待升級數(shù)據(jù)塊的校驗信息不一致時,重新從服務(wù)器上下載,本發(fā)明實施例對獲取完整數(shù)據(jù)包的方式不作限制。
參照圖2,示出了本申請的一種Android系統(tǒng)升級的方法實施例的步驟流程圖二,具體可以包括如下步驟:
步驟201,當接收到針對所述Android系統(tǒng)的升級請求時,下載所述Android系統(tǒng)的差分升級數(shù)據(jù)包,所述差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息;
步驟202,依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊;
步驟203,計算所述第一目標數(shù)據(jù)塊的校驗信息;
步驟204,判斷所述第一目標數(shù)據(jù)塊的校驗信息,與,所述待升級數(shù)據(jù)塊的校驗信息是否一致;
步驟205,若一致,則采用所述差分升級數(shù)據(jù)包升級所述Android系統(tǒng);
步驟206,當所述第一目標數(shù)據(jù)塊的校驗信息,與所述待升級數(shù)據(jù)塊的校驗信息不一致時,針對所述升級請求,獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包;
采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
具體的,在當前低版本系統(tǒng)根據(jù)差分升級數(shù)據(jù)包中待升級的數(shù)據(jù)塊的地址計算出所述地址數(shù)據(jù)的HASH值,與差分升級數(shù)據(jù)包中待升級的數(shù)據(jù)塊的HASH值不相同,和/或,對當前低版本中各個待升級的數(shù)據(jù)塊的操作與差分升級數(shù)據(jù)包中記載的對各個待升級的數(shù)據(jù)塊的操作不相同時,則獲取完整高版本的完整升級數(shù)據(jù)包,然后采用完整升級數(shù)據(jù)包對當前低版本系統(tǒng)進行升級。
需要說明的是,在本發(fā)明實施例中,獲取完整升級數(shù)據(jù)包的方式可以是與差分升級數(shù)據(jù)包封裝在一起下載下來,也可以是在第一目標數(shù)據(jù)塊的校驗信息,與待升級數(shù)據(jù)塊的校驗信息不一致時,重新從服務(wù)器上下載,本發(fā)明實施例對獲取完整數(shù)據(jù)包的方式不作限制。
需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請實施例并不受所描述的動作順序的限制,因為依據(jù)本申請實施例,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于可選實施例,所涉及的動作并不一定是本申請實施例所必須的。
參照圖3,示出了本申請的一種Android系統(tǒng)升級的裝置實施例的結(jié)構(gòu)框圖一,具體可以包括如下模塊:
差分升級數(shù)據(jù)包下載模塊301,用于當接收到針對所述Android系統(tǒng)的升級請求時,下載所述Android系統(tǒng)的差分升級數(shù)據(jù)包,所述差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息;
第一目標數(shù)據(jù)塊確定模塊302,用于依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊;
第一目標數(shù)據(jù)塊計算模塊303,用于計算所述第一目標數(shù)據(jù)塊的校驗信息;
第一目標數(shù)據(jù)塊判斷模塊304,用于判斷所述第一目標數(shù)據(jù)塊的校驗信息,與,所述待升級數(shù)據(jù)塊的校驗信息是否一致;
差分升級數(shù)據(jù)包升級模塊305,用于若一致,則采用所述差分升級數(shù)據(jù)包升級所述Android系統(tǒng)。
在本發(fā)明一種可選實施例中,所述的裝置還包括:
校驗?zāi)K306,用于校驗采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)是否升級成功;
第二完整升級數(shù)據(jù)包升級模塊307,用于若否,則獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包,以及,采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
在本發(fā)明一種可選實施例中,所述差分升級數(shù)據(jù)包還具有與所述待升級數(shù)據(jù)塊的地址相同的已升級數(shù)據(jù)塊的校驗信息;所述校驗?zāi)K包括:
第二目標數(shù)據(jù)塊確定子模塊,用于確定采用所述差分升級數(shù)據(jù)包升級的第二目標數(shù)據(jù)塊;
第二目標數(shù)據(jù)塊計算子模塊,用于計算所述第二目標數(shù)據(jù)塊的校驗信息;
第二目標數(shù)據(jù)塊判斷子模塊,用于若所述已升級數(shù)據(jù)塊的校驗信息,與所述第二目標數(shù)據(jù)塊的校驗信息一致,則判定采用所述差分升級數(shù)據(jù)包升級的Android升級成功,否則,判定采用所述差分升級數(shù)據(jù)包升級的Android系統(tǒng)升級失敗。
在本發(fā)明一種可選實施例中,所述第二目標數(shù)據(jù)塊確定子模塊包括:
已升級數(shù)據(jù)塊確定單元,用于依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中已升級的數(shù)據(jù)塊;
第二目標數(shù)據(jù)塊確定單元,用于將所述數(shù)據(jù)塊作為第二目標數(shù)據(jù)塊。
參照圖4,示出了本申請的一種Android系統(tǒng)升級的裝置實施例的結(jié)構(gòu)框圖二,具體可以包括如下模塊:
差分升級數(shù)據(jù)包下載模塊401,用于當接收到針對所述Android系統(tǒng)的升級請求時,下載所述Android系統(tǒng)的差分升級數(shù)據(jù)包,所述差分升級數(shù)據(jù)包具有對應(yīng)的待升級數(shù)據(jù)塊的地址及相應(yīng)的待升級數(shù)據(jù)塊的校驗信息;
第一目標數(shù)據(jù)塊確定模塊402,用于依據(jù)所述待升級數(shù)據(jù)塊的地址確定所述Android系統(tǒng)中待升級的第一目標數(shù)據(jù)塊;
第一目標數(shù)據(jù)塊計算模塊403,用于計算所述第一目標數(shù)據(jù)塊的校驗信息;
第一目標數(shù)據(jù)塊判斷模塊404,用于判斷所述第一目標數(shù)據(jù)塊的校驗信息,與,所述待升級數(shù)據(jù)塊的校驗信息是否一致;
差分升級數(shù)據(jù)包升級模塊405,用于若一致,則采用所述差分升級數(shù)據(jù)包升級所述Android系統(tǒng)。
在本發(fā)明一種可選實施例中,所述的裝置還包括:
完整升級數(shù)據(jù)包獲取模塊406,用于當所述第一目標數(shù)據(jù)塊的校驗信息,與所述待升級數(shù)據(jù)塊的校驗信息不一致時,針對所述升級請求,獲取所述Android系統(tǒng)的完整升級數(shù)據(jù)包;
第一完整升級數(shù)據(jù)包升級模塊407,用于采用所述完整升級數(shù)據(jù)包升級所述Android系統(tǒng)。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請實施例的實施例可提供為方法、裝置、或計算機程序產(chǎn)品。因此,本申請實施例可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請實施例是參照根據(jù)本申請實施例的方法、終端設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計算機或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本申請的實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請實施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上對本申請所提供的Android系統(tǒng)升級的方法和裝置,進行了詳細介紹,本文中應(yīng)用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。