本發(fā)明屬于通信
技術(shù)領域:
,尤其涉及一種終端應用的更新方法、服務器、和終端。
背景技術(shù):
:軟件系統(tǒng)在使用過程中,會暴露各種類型的問題,如功能不完善、安全漏洞等。一般會通過由服務器發(fā)布補丁包、由終端進行更新的方式,對上述問題進行解決?,F(xiàn)有的更新方式如下:(1)終端發(fā)送查詢更新的請求信息;(2)服務器返回更新信息;(3)終端補丁包請求信息;(4)服務器向服務器返回補丁包;(5)終端將本地原包與補丁包合成產(chǎn)生新包。然而,現(xiàn)有的更新方式存在更新等待的時間長、且對內(nèi)存占用較大、且合成的失敗率較高等技術(shù)問題,進而導致用戶對于軟件更新產(chǎn)生反感。技術(shù)實現(xiàn)要素:有鑒于此,本發(fā)明的目的在于提供一種終端應用的更新方法、服務器和終端,可以解決現(xiàn)有技術(shù)中更新等待的時間長、且對內(nèi)存占用較大、且合成的失敗率較高等技術(shù)問題。為解決上述技術(shù)問題,本發(fā)明實施例提供了一種終端應用的更新方法,包括:確定終端應用存在更新數(shù)據(jù)時,向終端推送用于描述更新數(shù)據(jù)的更新信息,所述更新信息包括服務器中APK的新版本號;接收所述終端根據(jù)所述更新信息發(fā)送的補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號;根據(jù)所述舊版本號對應的舊APK與所述新版本號對應的新APK生成差異補丁包,所述差異補丁包包括多個補丁包分片;以及發(fā)送所述多個補丁包分片給所述終端,以便所述終端根據(jù)所述多個補丁包分片對所述終端應用進行更新。為解決上述技術(shù)問題,本發(fā)明實施例提供了一種服務器,包括:推送模塊,用于確定終端應用存在更新數(shù)據(jù)時,向終端推送用于描述更新數(shù)據(jù)的更新信息,所述更新信息包括服務器中APK的新版本號;存儲模塊,連接于所述推送模塊,用于將所述更新數(shù)據(jù)存儲為所述終端應用的不同版本的APK;接收模塊,用于接收所述終端根據(jù)所述更新信息發(fā)送的補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號;補丁包模塊,連接于所述接收模塊與所述存儲模塊,用于根據(jù)所述舊版本號讀取對應的舊APK與根據(jù)所述新版本號讀取對應的新APK,并對比后生成差異補丁包,所述差異補丁包包括多個補丁包分片;以及所述推送模塊,連接于所述補丁包模塊,還用于發(fā)送所述多個補丁包分片給所述終端,以便終端根據(jù)所述多個補丁包分片對所述終端應用進行更新。為解決上述技術(shù)問題,本發(fā)明實施例提供了一種終端應用的更新方法,包括:向服務器發(fā)送查詢更新信息;從所述服務器獲取終端應用的更新信息,所述更新信息包括差異補丁包的新版本號;根據(jù)所述更新信息生成觸發(fā)控件,并通過所述觸發(fā)控件向所述服務器發(fā)送補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號;從所述服務器下載補丁包分片,所述補丁包分片是根據(jù)舊版本號與新版本號所對應的子文件項通過差異包算法進行計算生成的;以及根據(jù)下載的補丁包分片對所述終端應用進行更新。為解決上述技術(shù)問題,本發(fā)明實施例提供了一種終端,用于通過差異補丁包對終端應用進行更新,其中,包括:存儲器,用于存儲舊版本的APK;查詢模塊,用于向服務器發(fā)送查詢更新信息;獲取模塊,用于從所述服務器獲取終端應用的更新信息,所述更新信息包括差異補丁包的新版本號;請求模塊,連接于所述存儲器,用于根據(jù)所述更新信息生成觸發(fā)控件,并通過所述觸發(fā)控件向所述服務器發(fā)送補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號;以及補丁模塊,用于從所述服務器下載補丁包分片并通過所述補丁包分片對所述終端應用進行更新,所述補丁包分片是根據(jù)舊版本號與新版本號所對應的子文件項通過差異包算法進行計算生成的。本發(fā)明通過將新舊版本的APK進行解析,對所形成的子文件項進行逐一對比,產(chǎn)生差異補丁包,并以差異補丁包分片的方式進行更新,具有更新等待的時間短、且對內(nèi)存占用小、且合成率高等優(yōu)點。附圖說明圖1是本發(fā)明實施例提供的終端應用的更新方法、服務器、及終端的應用環(huán)境示意圖;圖2是本發(fā)明實施例一提供的終端應用的更新方法的工作流程示意圖;圖3是本發(fā)明實施例一提供的差異補丁包的生成步驟的細化示意圖;圖4是本發(fā)明實施例二提供的服務器的模塊示意圖;圖5是本發(fā)明實施例三提供的終端應用的更新方法的工作流程示意圖;圖6是本發(fā)明實施例三提供的終端的模塊示意圖;圖7是本發(fā)明實施例四提供的差異補丁包的更新步驟的細化示意圖;圖8是本發(fā)明實施例五提供的終端應用的更新方法、服務器、及終端的時序示意圖。具體實施方式請參照附圖中的圖式,其中相同的組件符號代表相同的組件,本發(fā)明的原理是以實施在一適當?shù)倪\算環(huán)境中來舉例說明。以下的說明是基于所示例的本發(fā)明的具體實施例,其不應被視為一種限制,本領域技術(shù)人員將可了解到以下所述的多種步驟及操作亦可實施在硬件當中。請參閱圖1,為本發(fā)明中提供的終端應用的更新方法、服務器、及終端的 應用環(huán)境示意圖。應用環(huán)境中包括終端10、服務器20、以及通信網(wǎng)絡30。所述終端應用,可以下載并安裝于各種類型的終端10中,以APK(ApplicationPacKagefile,終端應用的安裝程序包)形式存在。所述APK可以被解析成若干個子文件項,每個子文件項構(gòu)成終端應用的不同模塊或執(zhí)行不同的功能。終端10,比如筆記本01、蘋果電腦02、觸控電腦03、或智能手機04??梢岳斫獾氖牵翰煌慕K端10上,可能會存在不同版本的終端應用。所述終端10通過下載專屬的差異補丁包對終端應用進行更新,包括:向服務器20發(fā)送包括舊版本號的查詢更新信息;從服務器20獲取包含新版本號的終端應用的更新信息;從服務器20下載補丁包分片,所述補丁包分片是根據(jù)舊版本號與新版本號所對應的子文件項通過差異包算法進行計算生成的;并根據(jù)下載的補丁包分片對終端應用進行更新。服務器20,用于通過差異補丁包對終端應用進行更新,包括:產(chǎn)生更新數(shù)據(jù),所述更新數(shù)據(jù)包括更新信息用于描述所述更新數(shù)據(jù);向終端10發(fā)送包含新版本號的終端應用的更新信息;接收終端10根據(jù)更新信息發(fā)送的包含舊版本號的補丁包下載請求;根據(jù)舊APK與新APK生成差異補丁包,包括多個補丁包分片;并發(fā)送補丁包分片給所述終端,以供終端更新所述終端應用。通信網(wǎng)絡30,包括無線網(wǎng)絡及有線網(wǎng)絡等,在此不再贅述。本案可基于BSDIFF(BinaryDiff,二進制差異包)比較工具對不同版本的APK進行計算,產(chǎn)生增量的補丁包分片,使終端應用的更新過程無需等待、且合成的準確率高。請參照以下實施例,實施例一側(cè)重于應用于服務器測的終端應用的更新方法,實施例二側(cè)重于服務器,實施例三側(cè)重于終端側(cè)的終端應用的更新方法;實施例四側(cè)重于終端;而實施例五側(cè)重于服務器與終端之間的工作時序。雖然各實施例的側(cè)重不同,但其設計思想是一致的。且,在某個實施例中沒有詳述的部分,可以參見說明書全文的詳細描述,不再贅述。實施例一請參閱圖2,所示為終端應用的更新方法的工作流程示意圖。其應用于服務器一側(cè),用于產(chǎn)生及提供所述終端應用的差異補丁包。在步驟S20中,接收終端發(fā)送的查詢更新信息??梢岳斫獾氖牵诮邮罩蟮牟襟E還可以細化為:(1)判斷是否存在更新數(shù)據(jù);(2)確定若不存在更新數(shù)據(jù)時,向終端推送無更新信息或不進行推送;以及(3)確定終端應用存在更新數(shù)據(jù)時,執(zhí)行步驟S21。在步驟S21中,向終端推送用于描述更新數(shù)據(jù)的更新信息,所述更新信息包括服務器中APK的新版本號??梢岳斫獾氖牵龈聰?shù)據(jù)是用于更新所述終端應用的代碼、插件、補丁程序或其他可執(zhí)行文件,更新信息是文本類文件。在步驟S22中,接收所述終端根據(jù)所述更新信息發(fā)送的補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號。在步驟S23中,根據(jù)所述舊版本號對應的舊APK與所述新版本號對應的新APK生成差異補丁包,所述差異補丁包包括多個補丁包分片。可以理解的是,通過所述舊APK與所述新APK進行對比,可以生成專屬于某一版本的差異補丁包,比如當前終端應用的舊版本是V1.0,而服務器的更新信息的版本是V3.0,那么可以生成專屬的V3.0-1.0的差異補丁包,而無需升級2次,更加個性化和便捷。在步驟S24中,發(fā)送所述補丁包分片給所述終端,以便所述終端根據(jù)所述補丁包分片對所述終端應用進行更新??梢岳斫獾氖?,每一補丁包分片可與所述終端應用的舊APK的子文件項進行結(jié)合,進行某一模塊或功能的單獨更新。分片的好處是更易與舊版本結(jié)合,且緩沖了更新過程對終端應用的影響,時間短且成功率高。請參閱圖3,所示為其中生成差異補丁包的步驟的細化,即對步驟S23根據(jù)所述舊版本號對應的舊APK與所述新版本號對應的新APK生成差異補丁包進行進一步闡述。在步驟S230中,根據(jù)所述舊版本號與所述新版本號讀取對應的舊APK與新APK,并分別進行解析,以生成舊APK子文件項和新APK子文件項。其中,每一子文件項可能代表著APK的不同的功能或者模塊,即按照某一 特定方式,將所述APK解析成若干個子文件項。在步驟S231中,定義所述新APK定義子文件項的格式,包括描述部分和數(shù)據(jù)部分。可以理解的是,描述部分包括:新版本號、文件類型、以及還包括下列中的一項或多項的組合:舊版本號、MD5(信息-摘要算法)信息、文件內(nèi)容、壓縮方法、修改時間、效驗碼、磁盤起始號、文件屬性、對應本地文件頭相對地址的偏移、和/或評論內(nèi)容。具體格式設置可詳見實施例六,此處不再贅述。在步驟S232中,遍歷新APK的子文件項的描述部分,并判斷是否遍歷完成。其中若沒有完成遍歷,則執(zhí)行步驟S233,若完成遍歷則執(zhí)行步驟S2313。在步驟S233中,通過新APK的子文件項的文件名,讀取舊APK中對應的子文件項。在步驟S234中,判斷所述文件名是否是路徑。其中,若是路徑,則判斷為文件類型為目錄文件,并執(zhí)行步驟S235;若不是路徑,則判斷為非目錄文件,繼續(xù)執(zhí)行步驟S236。在步驟S235中,當文件類型為目錄文件時,從新APK的子文件項中讀取描述部分寫入差異補丁包,并標記文件類型為目錄文件(FileDataType_DIR)。在步驟S236中,判斷所述子文件項在所述新APK中與所述舊APK中是否名稱相同。其中,若名稱不相同,則執(zhí)行步驟S237;若名稱相同,則執(zhí)行步驟S238。在步驟S237中,當名稱不相同時,從新APK的子文件項中讀取描述部分和數(shù)據(jù)部分寫入差異補丁包,并標記文件類型為新APK子文件(FileDataType_NewApkData)。在步驟S238中,當名稱相同時,繼續(xù)判斷是否內(nèi)容相同。其中,若內(nèi)容相同,則執(zhí)行步驟S239;若內(nèi)容不相同,則執(zhí)行步驟S2310??梢岳斫獾氖牵袛鄡?nèi)容相同的方式很多,通常選擇兩個參數(shù)即可對內(nèi)容是否相同進行驗證,如:子文件項的檢驗碼與原始大小。其中,(1)若所述檢驗碼與所述原始大小皆相同,則判斷為內(nèi)容相同;或(2)若所述檢驗碼與所述原始大小之一不相同,則判斷為實質(zhì)不相同。在步驟S239中,從新APK子文件項中讀取描述部分,寫入差異補丁包,并標記文件類型為舊APK子文件(FileDataType_OldApkData)。在步驟S2310中,從所述舊APK與所述新APK中分別提取出來舊子文件項和新子文件項。在步驟S2311中,通過差異包比較算法,對舊子文件項與新子文件項進行對比,產(chǎn)生增量補丁數(shù)據(jù)。在步驟S2312中,將所述增量補丁數(shù)據(jù)與從所述新APK中讀取所述子文件項的描述部分一并存儲在差異補丁包中,并標記所述文件類型為補丁包分片(FileDataType_RawDiffDataNocompress)。在步驟S2313中,當遍歷完成時,即形成差異補丁包,并將所述新APK子文件、所述舊APK子文件、以及所述各補丁包分片共同生成新的目錄內(nèi)容,寫入所述差異補丁包的目錄文件中。本發(fā)明通過將新舊版本的APK進行解析,對所形成的子文件項進行逐一對比,產(chǎn)生差異補丁包,并以差異補丁包分片的方式進行更新,具有更新等待的時間短、且對內(nèi)存占用小、且合成率高等優(yōu)點。實施例二請參閱圖4,所示為服務器的模塊示意圖。所述服務器20包括:存儲模塊21、接收模塊22、判斷模塊23、推送模塊24、以及補丁包模塊25。其中,存儲模塊21,用于將所述更新數(shù)據(jù)根據(jù)更新時間存儲為終端應用的不同版本的APK。接收模塊22,用于接收終端發(fā)送的查詢更新信息。判斷模塊23,連接于所述接收模塊22與所述存儲模塊21,用于判斷是否存在更新數(shù)據(jù),以響應所述查詢更新信息。推送模塊24,連接于所示判斷模塊23與存儲模塊21,用于確定若不存在更新數(shù)據(jù)時,向終端推送無更新信息或不進行推送;以及確定終端應用存在更新數(shù)據(jù)時,向終端推送用于描述更新數(shù)據(jù)的更新信息,所述更新信息包括服務器中APK的新版本號??梢岳斫獾氖?,所述新版本號,是指服務器中所述APK的當前版本號。接收模塊22,還用于接收終端根據(jù)更新信息發(fā)送的補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號??梢岳斫獾氖牵雠f版本號,是指終端中所應用的APK的當前版本號。補丁包模塊25,連接于所述接收模塊22與所述存儲模塊21,用于根據(jù)所述舊版本號從存儲模塊21中讀取對應的舊APK與根據(jù)所述新版本號從接收模塊22中讀取對應的新APK,并對比后生成差異補丁包,所述差異補丁包包括多個補丁包分片。推送模塊24,還用于推送所述多個補丁包分片給所述終端,以便終端根據(jù)所述多個補丁包分片對所述終端應用進行更新。具體而言,所述補丁包模塊25,還包括:第一解析子模塊251、定義子模塊252、第一遍歷子模塊253、目錄判斷子模塊254、版本判斷子模塊255、寫入子模塊256、提取子模塊257、以及第一補丁子模塊258。第一解析子模塊251,用于對所述舊APK與所述新APK進行解析,以生成多個舊APK子文件項與多個新APK子文件項。定義子模塊252,用于定義所述新APK的子文件項的格式,所述子文件項包括描述部分和數(shù)據(jù)部分。第一遍歷子模塊253,用于遍歷新APK的子文件項的描述部分,以及判斷對所述新APK的子文件項的描述部分是否遍歷完成。目錄判斷子模塊254,連接于所述第一遍歷子模塊253用于在遍歷時根據(jù)子文件項的文件名是否路徑來判斷其是否是目錄文件。版本判斷子模塊255,用于在遍歷時判斷每一子文件項在所述新APK中與所述舊APK中是否相同。所述版本判斷子模塊255包括名稱判斷子模塊、內(nèi)容判斷子模塊。名稱判斷子模塊用于判斷舊APK中是否有相同名稱的子文件項;內(nèi)容判斷子模塊用于當所述名稱判斷子模塊的判斷結(jié)果為有相同名稱的子文件項時,繼續(xù)判斷所述子文件項在所述新APK中與所述舊APK中是否內(nèi)容相同。寫入子模塊256,用于根據(jù)子文件項的類型,從新APK中讀取描述部分、或/和數(shù)據(jù)部分寫入所述差異包,并標記對應的文件類型。具體而言,所述寫入子模塊256,用于當子文件項是目錄文件時,讀取描 述部分寫入差異補丁包,并標記文件類型為目錄文件;當沒有相同名稱的子文件項時,讀取描述部分和數(shù)據(jù)部分寫入差異補丁包,并標記文件類型為新APK子文件;當內(nèi)容相同時,讀取描述部分寫入差異補丁包,并標記文件類型為舊APK子文件。提取子模塊257,用于當所述版本判斷子模塊的判斷結(jié)果為內(nèi)容不相同時,從所述舊APK與所述新APK中分別提取出來舊子文件項和新子文件項。第一補丁子模塊258,用于通過差異包比較算法對舊子文件項與新子文件項進行對比產(chǎn)生增量補丁數(shù)據(jù),并將增量補丁數(shù)據(jù)與從所述新APK中讀取的子文件項的描述部分一并存儲在差異補丁包中,標記文件類型為所述補丁包分片。寫入子模塊255,還用于將所述新APK子文件、所述舊APK子文件、以及所述各補丁包分片共同生成新的目錄內(nèi)容,寫入所述目錄文件中。本發(fā)明通過將新舊版本的APK進行解析,對所形成的子文件項進行逐一對比,產(chǎn)生差異補丁包,并以差異補丁包分片的方式進行更新,具有更新等待的時間短、且對內(nèi)存占用小、且合成率高等優(yōu)點。實施例三請參閱圖5,所示為終端應用的更新方法的工作流程示意圖。其應用于終端一側(cè),用于接收與安裝終端應用的差異補丁包。在步驟S51中,向服務器發(fā)送查詢更新信息。在步驟S52中,從所述服務器獲取終端應用的更新信息,所述更新信息包括差異補丁包的新版本號。其中,差異補丁包的新版本號與服務器中的APK新版本號具有對應關(guān)系。在步驟S53中,根據(jù)所述更新信息生成觸發(fā)控件,并通過所述觸發(fā)控件向所述服務器發(fā)送補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號。在步驟S54中,從所述服務器下載補丁包分片,所述補丁包分片是根據(jù)舊版本號與新版本號所對應的子文件項通過差異包算法進行計算生成的;以及在步驟S55中,根據(jù)下載的補丁包分片對所述終端應用進行更新。可以理解的是,每一補丁包分片可與所述終端應用的舊APK的子文件項進 行結(jié)合,進行某一模塊或功能的單獨更新。分片的好處是更易與舊版本結(jié)合,且緩沖了更新過程對終端應用的影響,時間短且成功率高。請參閱圖6,所示為從所述服務器下載補丁包分片的步驟的細化,即對步驟S54進行進一步闡述。在步驟S540中,根據(jù)所述舊版本號與所述新版本號讀取對應的舊APK與差異補丁包,并分別進行解析,生成舊APK的子文件項與新APK的子文件項。在步驟S541中,讀取所述差異補丁包的子文件,所述子文件項包括描述部分和數(shù)據(jù)部分。在步驟S542中,遍歷差異補丁包的子文件項,并判斷是否遍歷完成。在步驟S543中,讀取每一子文件項的文件類型。在步驟S544中,判斷文件類型是否是目錄文件。其中,若是目錄文件則執(zhí)行步驟S545,若不是目錄文件則執(zhí)行步驟S546。在步驟S545中,從所述差異補丁包中讀取目錄文件進行下載,供所述終端應用進行更新。在步驟S546中,判斷文件類型是否是新APK文件。其中,若是新APK文件,則執(zhí)行步驟S547;若不是新APK文件,則執(zhí)行步驟S548。在步驟S547中,下載所述新APK子文件,其中,所述新APK子文件包括描述部分和數(shù)據(jù)部分。在步驟S548中,繼續(xù)判斷文件類型是否是舊APK子文件,其中,若是舊APK子文件,則執(zhí)行步驟S549,若不是舊APK子文件,則執(zhí)行步驟S5410。在步驟S549中,下載所述舊APK子文件,其中,所述舊APK子文件包括描述部分。在步驟S5410中,下載所述補丁包分片,并從差異補丁包和舊APK中分別提取出對應的子文件項??梢岳斫獾氖牵诒静襟E之前,還可以包括判斷所述文件類型是否是補丁包分片,在圖中忽略該判斷的步驟是因為經(jīng)過上述步驟S544、S546、以及S548的排除之后,所剩的文件類型即為補丁包分片。在上述步驟中,通過將差異補丁包內(nèi)的子文件項分成不同的類型,如目錄 文件、新APK文件、舊APK文件以及補丁包分片,每種不同的文件類型,其對應的格式不同,如僅需下載描述部分,使需下載的內(nèi)容降低到最少。進而使更新的時間縮短,且不重復下載也有利于減少更新失敗的風險。在步驟S5411中,通過差異包比較算法,將舊APK中對應的子文件項與所述補丁包分片進行合并,產(chǎn)生合并補丁數(shù)據(jù)。在步驟S5412中,將所述補丁數(shù)據(jù)與從所述差異補丁包中讀取描述部分一并形成合成子文件項。在步驟S5413中,若判斷遍歷完成,則若所有補丁包分片下載完成,則更新所述終端應用的目錄信息。本發(fā)明通過將新舊版本的APK進行解析,對所形成的子文件項進行逐一對比,產(chǎn)生差異補丁包,并以差異補丁包分片的方式進行更新,具有更新等待的時間短、且對內(nèi)存占用小、且合成率高等優(yōu)點。實施例四請參閱圖7,所示為終端的模塊示意圖。所述終端10中存儲一舊版本的APK,并通過獲取服務器的差異補丁包進行更新,生成適合所述終端的新APK。所述終端10包括:存儲器11、查詢模塊12、獲取模塊13、請求模塊14、以及補丁模塊15。存儲器11,用于存儲所述終端應用的舊版本APK??梢岳斫獾氖牵觥芭f”是相對于更新之前而言,即當前版本。為了對比更清楚,全文皆用舊版本來指代終端的當前版本。查詢模塊12,用于向服務器發(fā)送查詢更新信息。獲取模塊13,用于從所述服務器獲取終端應用的更新信息,所述更新信息包括差異補丁包的新版本號。請求模塊14,用于根據(jù)所述更新信息產(chǎn)生觸發(fā)控件,并通過所述觸發(fā)控件向所述服務器發(fā)送補丁包下載請求,所述補丁包下載請求中包括終端應用的舊版本號??梢岳斫獾氖?,服務器會根據(jù)新舊版本號對應的APK生成差異補丁包,并提供給所述服務器進行下載和更新。補丁模塊15,用于從所述服務器下載補丁包分片并通過所述補丁包分片對所述終端應用進行更新,所述補丁包分片是根據(jù)舊版本號與新版本號所對應的子文件項通過差異包算法進行計算生成的。具體而言,所述補丁模塊15,包括:第二解析子模塊151、第二遍歷子模塊152、類型判斷子模塊153、下載子模塊154、第二補丁子模塊155、以及目錄更新子模塊156。第二解析子模塊151,用于根據(jù)所述舊版本號與所述新版本號讀取對應的舊APK與差異補丁包,并分別進行解析,生成舊APK的子文件項與差異補丁包的子文件項所述。其中,所述子文件項包括描述部分和數(shù)據(jù)部分。第二遍歷子模塊152,用于讀取所述差異補丁包的子文件項進行遍歷。類型判斷子模塊153,用于讀取每一子文件項的文件類型,并判斷所述文件類型是否是補丁包分片、目錄文件、新APK子文件、或舊APK子文件??梢岳斫獾氖牵鑫募愋捅欢x于所述子文件項的描述部分中。下載子模塊154,用于當所述文件類型是補丁包分片時,下載所述補丁包分片;當所述文件類型是目錄文件時,下載所述目錄文件;當所述文件類型是新APK子文件,下載所述新APK子文件,其中,所述新APK子文件包括描述部分和數(shù)據(jù)部分;以及當所述文件類型是舊APK子文件時,下載所述舊APK子文件,其中,所述舊APK子文件包括描述部分。第二補丁子模塊155,用于通過差異包比較算法將舊APK中對應的子文件項與補丁包分片進行合并產(chǎn)生合并補丁數(shù)據(jù),并將所述補丁數(shù)據(jù)與從所述差異補丁包中讀取描述部分一并形成合成子文件項作為補丁包,供舊APK更新。目錄更新子模塊156,用于根據(jù)所述更新信息判斷是否差異補丁包包中的所有的補丁包分片下載完成;并當所有補丁包分片下載完成后,更新所述終端應用的目錄信息。本發(fā)明通過將新舊版本的APK進行解析,對所形成的子文件項進行逐一對比,產(chǎn)生差異補丁包,并以差異補丁包分片的方式進行更新,具有更新等待的時間短、且對內(nèi)存占用小、且合成率高等優(yōu)點。實施例五請參閱圖8,所示為終端應用的更新方法、服務器、及終端的時序示意圖。A、服務器中生成新版本的APK。B、終端向服務器發(fā)送查詢更新的請求。C、服務器向終端發(fā)送更新信息。D、終端向服務器發(fā)送補丁包下載請求。其中,可以理解的是,終端在步驟B和D中所發(fā)送的請求包含其當前的APK版本信息,即APK的舊版本號。E、服務器根據(jù)舊APK與新APK生成差異補丁包,所述差異補丁包包括多個補丁包分片。F、終端接收補丁包分片,并通過遍歷差異補丁包的子文件項,匹配到對應的舊APK子文件中使用TMADIFF算法進行合并。G、終端判斷是否完成接收,并更新舊APK的目錄。本發(fā)明通過將新舊版本的APK進行解析,對所形成的子文件項進行逐一對比,產(chǎn)生差異補丁包,并以差異補丁包分片的方式進行更新,具有更新等待的時間短、且對內(nèi)存占用小、且合成率高等優(yōu)點。實施例六本發(fā)明為了形成差異補丁包,并支持差異補丁包分片進行發(fā)送、以及分片進行接收與更新,還設計了一組差異補丁包的文件格式、以及差異補丁包子文件項的文件格式,以更好的支持本發(fā)明的終端應用的更新方法、服務器、及終端??梢岳斫獾氖?,本實施例所提供的格式定義,并不是唯一的格式也不是所有數(shù)據(jù)均是必選項,僅用于理解本發(fā)明之精髓,而不應視為對文件格式的限制。差異補丁包的格式是補丁算法產(chǎn)生數(shù)據(jù)的封裝,便于傳輸和保存。該文件格式是一個容器,目前支持由BSDIFF和TMADIFF算法產(chǎn)生的補丁包。表1差異補丁包格式定義定義:數(shù)據(jù)部分定義:當Alorithms=Bsdiff(0x01)該部分是BSDIFF算法產(chǎn)生的補丁包當Alorithms=Tmadiff(0x02)該部分是TMADIFF算法產(chǎn)生的補丁包,此時Content中重復補丁片,每一個分片由FileHeadDesc和FileData組成。表2數(shù)據(jù)部分定義名稱占用字節(jié)描述FileHeadDescN文件項的文件頭描述,參考表3-FileHeadDesc定義FileDataN若FileDataLen是0,該項為空。表3描述部分定義表4目錄定義名稱占用字節(jié)描述Signature4固定0x504b0506,參考ZIP標準numberOfDisk2磁盤號startsDisk2中央目錄段所在磁盤號numberOfCentralDirOnThisDisk2當前磁盤中央目錄段的個數(shù)totalNumberOfCentralDir2中央目錄段的總數(shù)sizeOfCentralDir4中央目錄段的總長度(Bytes)offsetOfStartOfCentralDir4中央目錄段的偏移位置commentLen2評論長度Comment4評論內(nèi)容本發(fā)明實施例提供的終端應用的更新方法、服務器、及終端屬于同一構(gòu)思,其具體實現(xiàn)過程詳見說明書全文,此處不再贅述。綜上所述,雖然本發(fā)明已以優(yōu)選實施例揭露如上,但上述優(yōu)選實施例并非用以限制本發(fā)明,本領域的普通測試人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動與潤飾,因此本發(fā)明的保護范圍以權(quán)利要求界定的范圍為準。當前第1頁1 2 3