:
[0065]步驟21,獲取由服務(wù)端發(fā)送的系統(tǒng)中需要升級的子模塊的差分升級包;
[0066]步驟22,根據(jù)所述差分升級包升級系統(tǒng)中對應(yīng)的子模塊。
[0067]通過圖1和圖2所示的差分升級方法可以知道,本發(fā)明為系統(tǒng)中的子模塊制定差分升級包,且子模塊之間由于不具備耦合度,因此可以獨立進行差分升級。與現(xiàn)有技術(shù)相t匕,采用本發(fā)明的差分升級方法,即便在升級過程中有部分子模塊升級失敗,也不會影響其它子模塊進行升級,因此能夠最大限度完成升級任務(wù)。且這種以子模塊為粒度的升級方法十分靈活,后續(xù)很容易單獨對之前升級失敗的子模塊再重新進行升級。
[0068]需要說明的是,上述系統(tǒng)的子模塊的劃分方法是以耦合度為基礎(chǔ)進行劃分的。當(dāng)然,本領(lǐng)域人員完全可以聯(lián)想到:在此原則上繼續(xù)利用其它策略對子模塊進一步進行劃分。例如可根據(jù)先驗知識從原先的子模塊中再分離出不穩(wěn)定的數(shù)據(jù)部分(如往往被用戶進行修改的部分)作為新的子模塊,且該新的子模塊與其它子模塊之間沒存在耦合度。
[0069]目前的系統(tǒng)差分升級主要用于對原有版本系統(tǒng)進行改進??赡茉谝淮紊夁^程中,存在不同的改進點。有些改進點是不可或缺的,有的則可有可無。作為一個合理的方案,可優(yōu)先對不可或缺的改進點所對應(yīng)的子模塊進行升級。例如在終端電源快耗盡的情況下,可以合理地使用電池資源先升級重要的子模塊。
[0070]即上述步驟11執(zhí)行完成后,服務(wù)端還對必須升級成功的子模塊的差分升級包進行標(biāo)記,使得所述終端能夠根據(jù)具有標(biāo)記的差分升級包優(yōu)先升級其系統(tǒng)中對應(yīng)的必須升級成功的子模塊。
[0071 ] 對應(yīng)的,終端側(cè)的步驟22具體包括:
[0072]步驟221,從獲取到的所有差分升級包中確定出具有標(biāo)記的差分升級包;
[0073]步驟222,先使用具有標(biāo)記的差分升級包升級本地系統(tǒng)中對應(yīng)的子模塊,之后再使用其余的差分?jǐn)?shù)據(jù)包升級系統(tǒng)中其它需要升級的子模塊。
[0074]當(dāng)然,作為另一種可行的方法,服務(wù)端也可以根據(jù)相應(yīng)的策略對差分升級包設(shè)置優(yōu)先級,從而使終端可以根據(jù)優(yōu)先級的順序陸續(xù)完成子模塊的升級。
[0075]進一步地,對于終端側(cè),若使用具有標(biāo)記的差分升級包未能成功升級系統(tǒng)中對應(yīng)的子模塊,則放棄執(zhí)行再使用其余的差分?jǐn)?shù)據(jù)包進行升級的步驟。即,放棄執(zhí)行再使用其余的差分?jǐn)?shù)據(jù)包進行升級是為了能夠快速重新向服務(wù)端獲取本次升級的所有差分?jǐn)?shù)據(jù)包,以進一步保證終端優(yōu)先升級重要程度高的子模塊。
[0076]此外,對于終端側(cè),在完成所有子模塊的升級后還包括:
[0077]步驟23,更新成功升級的子模塊的版本信息;其中,所述子模塊的版本信息與系統(tǒng)的版本信息不同;
[0078]通過上述描述可以知道,本發(fā)明的方法對子模塊也設(shè)置了版本信息。例如某手機的系統(tǒng)有V1.0和V2.0兩個大版本。進一步地,系統(tǒng)分為三個子模塊(即子模塊A、B、C)。那么,子模塊也對應(yīng)有自己的版本號,如A01、B01、C01 ;當(dāng)然,子模塊的版本信息也可以帶上系統(tǒng)的大版本號,如V1.0-A01、V1.0-B01、V1.0-C01。除此之外,子模塊的版本信息也可用于終端對差分升級包的校驗過,若某一子模塊的版本信息可對應(yīng)不上差分升級包,則不對其進行升級。
[0079]當(dāng)手機從V1.0升級到V2.0后,如果三個子模塊均都成功升級,則它們對應(yīng)版本號可以是 V2.0 (A02-B02-C02)。
[0080]如果子模塊Β升級失敗,則它們對應(yīng)版本號可以是V2.0(A02-B01_C02)。當(dāng)再次對子模塊B進行升級時,終端可向服務(wù)端上報的版本號V2.0 (A02-B01-C02),服務(wù)端即可為其重新定制子模塊B的差分升級包。即終端側(cè)的差分升級方法還包括:
[0081]步驟24,向所述服務(wù)端發(fā)送系統(tǒng)中各個子模塊的版本信息
[0082]與之對應(yīng)的,服務(wù)端則的步驟11包括:
[0083]步驟111,獲取終端發(fā)送的其系統(tǒng)中各個子模塊的版本信息;
[0084]步驟112,根據(jù)獲取到的子模塊的版本信息確定出終端需要升級的子模塊以及需要升級的子模塊的差分升級包。
[0085]在上述步驟11中,對于服務(wù)端首次發(fā)放新版本的升級服務(wù)時,則可首先確定源版本系統(tǒng)升級目標(biāo)版本系統(tǒng)的差分升級數(shù)據(jù);之后將所述差分升級數(shù)據(jù)按照系統(tǒng)的子模塊進行分包處理,即可得到需要升級的子模塊的差分升級包。
[0086]此外,對于終端側(cè),在完成所有升級后,還可向所述服務(wù)端反饋升級結(jié)果,使服務(wù)端進行相關(guān)數(shù)據(jù)統(tǒng)計。例如,操作人員可以根據(jù)服務(wù)端獲取到的反饋結(jié)果找到升級成功率低的子模塊,并對該模塊的升級數(shù)據(jù)重新進行制作。
[0087]下面以手機上的android系統(tǒng)為例,對本發(fā)明的差分升級方法進行介紹。
[0088]首先對android系統(tǒng)劃分成多個子模塊。圖3和圖4為android對系統(tǒng)劃分子模塊的兩種實例,可以根據(jù)數(shù)據(jù)的穩(wěn)定性以及耦合性進行劃分:即便用戶取得了 root權(quán)限,有些數(shù)據(jù)還是相對穩(wěn)定的,用戶不會去破壞它,這些數(shù)據(jù)就是穩(wěn)定數(shù)據(jù),例如sys目錄下的數(shù)據(jù);而另外一些數(shù)據(jù),可能正好是用戶root后想修改的部分,例如system/app目錄下的預(yù)置應(yīng)用。
[0089]圖3給出了一種粗略的劃分方法,它將android系統(tǒng)的數(shù)據(jù)文件分為三個子模塊,子模塊一為etc、sys、proc等穩(wěn)定數(shù)據(jù);子模塊二為dev數(shù)據(jù);子模塊三為system數(shù)據(jù)。圖4給出了一種區(qū)分不穩(wěn)定數(shù)據(jù)的方法,將system下更為活躍的app目錄單獨做成一個子模塊。劃分子模塊需要遵循一些原則,例如,子模塊之間不具有耦合度,可以單獨更新到老版本中不引起系統(tǒng)異常,這樣可以避免部分子模塊升級失敗導(dǎo)致其它子模塊升級成功后引起系統(tǒng)異常。此外,不穩(wěn)定的子模塊盡量拆分開,以便最大程度地升級系統(tǒng)。
[0090]對于用戶沒用利用ROOT權(quán)限修改系統(tǒng)文件,則本發(fā)明執(zhí)行如下步驟:
[0091]步驟S1,終端與服務(wù)端進行交互,終端向服務(wù)端下載需要升級的子模塊的差分升級包。
[0092]步驟S2,終端對需要升級的子模塊進行校驗,由于用戶沒用利用ROOT權(quán)限修改系統(tǒng)文件,本次過程子模塊全部校驗成功。
[0093]步驟S3,終端對下的差分升級包進行版本校驗。
[0094]步驟S4,終端進入升級工作模式依次執(zhí)行子模塊對應(yīng)的差分升級包,升級完成后,上報升級結(jié)果給服務(wù)端,本次升級結(jié)束。
[0095]對于用戶利用ROOT權(quán)限修改了系統(tǒng)文件,則本發(fā)明執(zhí)行如下步驟:
[0096]步驟S1丨,終端與服務(wù)端進行交互,終端向服務(wù)端下載需要升級的子模塊的差分升級包。
[0097]步驟S2丨,終端對需要升級的子模塊進行校驗,發(fā)現(xiàn)部分子模塊的系統(tǒng)文件已經(jīng)破壞,即部分子模塊校驗失敗。
[0098]步驟S3',終端校驗成功的子模塊的差分升級包進行版本校驗。
[0099]步驟S4丨,終端進入升級工作模式依次執(zhí)行校驗成功的差分升級包升級沒有破壞的子模塊,升級完成后,上報升級結(jié)果給服務(wù)端,本次升級結(jié)束。
[0100]綜上所述,本發(fā)明的方法提供一種分塊執(zhí)行差分升級(F0TA)的方案,拓寬F0TA升級可以適用的場景,并進一步的提高F0TA升級的成功率,使得廠商的重要更新、重大故障修復(fù)順利push到用戶設(shè)備中,最終達(dá)到提升用戶體驗的目的。
[0101]此外,如圖5所示,本發(fā)明還提供一種服務(wù)端,包括:
[0102]確定模塊,用于確定系統(tǒng)中需要升級的子模塊的差分升級包;其中,系統(tǒng)的子模塊之間不具備耦合度,且每個子模塊均能夠進行獨立升級;
[0103]第一發(fā)送模塊,用于將所述差分升級包發(fā)送至終端,使得所述終端能夠根據(jù)所述差分升級包升級其系統(tǒng)中對應(yīng)的子模塊。
[0104]在上述實施例的基礎(chǔ)之上,所述服務(wù)端還進一步包括:
[0105]標(biāo)記模塊,用于,在所述確定模塊確定系統(tǒng)中需要升級的子模塊的差分升級包后,對必須升級成功的子模塊的差分升級包進行標(biāo)記,使得所述終端能夠根據(jù)具有標(biāo)記的差分升級包優(yōu)先升級其系統(tǒng)中對應(yīng)的必須升級成功的子模塊。
[0106]進一步地,在上述實施例的基礎(chǔ)之上,所述確定模塊包括:
[0107]第一確定子模塊,用于確定源版本系統(tǒng)升級目標(biāo)版本系統(tǒng)的差分升級數(shù)據(jù);
[0108]分包子模塊,將所述差分升級數(shù)據(jù)按照系統(tǒng)的子模塊進行分包處理,得到需要升級的子模塊的差分升級包。