本公開涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種補(bǔ)丁生成方法及裝置、補(bǔ)丁更新方法、電子設(shè)備、以及計(jì)算機(jī)可讀存儲介質(zhì)。
背景技術(shù):
patch(補(bǔ)丁)技術(shù)是指應(yīng)用程序客戶端在更新應(yīng)用程序內(nèi)容時(shí),不需要重新下載安裝客戶端,只需更新本地機(jī)器上需要的程序代碼和程序資源的技術(shù)。patch技術(shù)廣泛的應(yīng)用于當(dāng)前主流應(yīng)用平臺的各類應(yīng)用程序例如網(wǎng)絡(luò)游戲中,其中的應(yīng)用平臺例如包括ios、android等移動(dòng)平臺以及windows等pc(personalconputer,個(gè)人計(jì)算機(jī))平臺。
根據(jù)patch的策略可將其分為增量patch和全量patch。
所謂增量patch是指:應(yīng)用程序客戶端首次下載安裝完應(yīng)用程序后,記錄當(dāng)前的應(yīng)用程序內(nèi)容為v;每當(dāng)需要應(yīng)用程序客戶端對應(yīng)用程序進(jìn)行更新時(shí),便會在服務(wù)器端上傳相對于上一版本的所有變化內(nèi)容p,該變化內(nèi)容p即為增量patch;根據(jù)增量patch的版本號分別記錄變化內(nèi)容p1、變化內(nèi)容p2、……、以及變化內(nèi)容pn;當(dāng)應(yīng)用程序客戶端在更新到最新版本時(shí),需要按照版本號的順序逐個(gè)下載所有的增量patch,方可得到最新的應(yīng)用程序內(nèi)容vn,即vn=v+p1+p2+……+pn。增量patch可以支持將patch內(nèi)容壓縮成一個(gè)大文件并上傳到服務(wù)器端,之后在應(yīng)用程序客戶端本地解壓。
所謂全量patch是指:當(dāng)應(yīng)用程序客戶端需要對應(yīng)用程序進(jìn)行更新時(shí),在服務(wù)器端上傳最新的應(yīng)用程序內(nèi)容vn;應(yīng)用程序客戶端在下載patch時(shí),只需對比本地的應(yīng)用程序內(nèi)容vm與最新的應(yīng)用程序內(nèi)容vn之間的差別,并下載其中變化的部分,以使應(yīng)用程序客戶端的應(yīng)用程序內(nèi)容更新到最新版本。全量patch要求服務(wù)器端與應(yīng)用程序客戶端之間的應(yīng)用程序內(nèi)容比對精確到文件級,即要求能夠比對應(yīng)用程序內(nèi)容中的每一個(gè)文件是否有更新。
目前許多應(yīng)用程序引擎在進(jìn)行補(bǔ)丁更新時(shí)都選用全量patch,但其存在占用空間較大以及耗時(shí)較多等問題。
需要說明的是,在上述背景技術(shù)部分公開的信息僅用于加強(qiáng)對本公開的背景的理解,因此可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實(shí)現(xiàn)要素:
本公開的目的在于提供一種補(bǔ)丁生成方法及裝置、補(bǔ)丁更新方法、電子設(shè)備、以及計(jì)算機(jī)可讀存儲介質(zhì),進(jìn)而至少在一定程度上克服由于相關(guān)技術(shù)的限制和缺陷而導(dǎo)致的一個(gè)或者多個(gè)問題。
本公開的其他特性和優(yōu)點(diǎn)將通過下面的詳細(xì)描述變得顯然,或部分地通過本公開的實(shí)踐而習(xí)得。
根據(jù)本公開的一個(gè)方面,提供一種補(bǔ)丁生成方法,用于為一應(yīng)用程序生成補(bǔ)?。凰鲅a(bǔ)丁生成方法包括:
對原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件;
自所述標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件并配置于共用資源目錄下;
對于每一所述終端類型,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下;
其中,任一所述終端類型對應(yīng)的補(bǔ)丁包括所述共用資源目錄下的共用資源文件以及對應(yīng)該終端類型的專用資源目錄下的專用資源文件。
本公開的一種示例性實(shí)施例中,所述不同終端類型包括對應(yīng)第一應(yīng)用平臺的第一終端、對應(yīng)第二應(yīng)用平臺的第二終端、以及對應(yīng)第三應(yīng)用平臺的第三終端;
其中,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下包括:
自所述標(biāo)準(zhǔn)資源文件中獲取適用于所述第一終端的第一專用資源文件并將所述第一專用資源文件配置于對應(yīng)所述第一終端的第一專用資源目錄下;
自所述標(biāo)準(zhǔn)資源文件中獲取適用于所述第二終端的第二專用資源文件并將所述第二專用資源文件配置于對應(yīng)所述第二終端的第二專用資源目錄下;
自所述標(biāo)準(zhǔn)資源文件中獲取適用于所述第三終端的第三專用資源文件并將所述第三專用資源文件配置于對應(yīng)所述第三終端的第三專用資源目錄下。
本公開的一種示例性實(shí)施例中,所述第一終端為運(yùn)行ios系統(tǒng)的終端,所述第二終端為運(yùn)行android系統(tǒng)的終端,所述第三終端為運(yùn)行windows系統(tǒng)的終端。
本公開的一種示例性實(shí)施例中,所述不同終端類型包括對應(yīng)第一硬件配置的第一終端、對應(yīng)第二硬件配置的第二終端、以及對應(yīng)第三硬件配置的第三終端;
其中,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下包括:
自所述標(biāo)準(zhǔn)資源文件中獲取適用于所述第一終端的第一專用資源文件并將所述第一專用資源文件配置于對應(yīng)所述第一終端的第一專用資源目錄下;
自所述標(biāo)準(zhǔn)資源文件中獲取適用于所述第二終端的第二專用資源文件并將所述第二專用資源文件配置于對應(yīng)所述第二終端的第二專用資源目錄下;
自所述標(biāo)準(zhǔn)資源文件中獲取適用于所述第三終端的第三專用資源文件并將所述第三專用資源文件配置于對應(yīng)所述第三終端的第三專用資源目錄下。
本公開的一種示例性實(shí)施例中,將原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件包括:
根據(jù)基準(zhǔn)格式將腳本文件、美術(shù)資源文件、以及引擎配置文件進(jìn)行加密和壓縮,以得到所述標(biāo)準(zhǔn)資源文件;
其中,所述基準(zhǔn)格式為所述應(yīng)用程序的開發(fā)引擎所支持的文件格式。
本公開的一種示例性實(shí)施例中,自所述標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件包括:
自所述標(biāo)準(zhǔn)資源文件中獲取所述腳本文件、所述引擎配置文件、以及所述美術(shù)資源文件中的場景文件和骨骼動(dòng)作文件。
本公開的一種示例性實(shí)施例中,所述補(bǔ)丁生成方法還包括:
將所述補(bǔ)丁與服務(wù)器端存儲的歷史補(bǔ)丁進(jìn)行對比,以獲取所述補(bǔ)丁相對于所述歷史補(bǔ)丁的增量補(bǔ)丁以及相同部分;
將所述增量補(bǔ)丁上傳至所述服務(wù)器,并針對所述相同部分生成一指向所述服務(wù)器端存儲的歷史補(bǔ)丁的記錄標(biāo)識。
根據(jù)本公開的一個(gè)方面,提供一種補(bǔ)丁更新方法,所述補(bǔ)丁更新方法包括:
獲取根據(jù)上述補(bǔ)丁生成方法而生成的補(bǔ)??;
將獲取到的所述補(bǔ)丁與本地內(nèi)容進(jìn)行對比,以獲取待更新內(nèi)容;
自所述補(bǔ)丁相對于服務(wù)器端存儲的歷史補(bǔ)丁的增量補(bǔ)丁中下載所述待更新內(nèi)容的部分或全部;
在所述增量補(bǔ)丁中未完全包括所述待更新內(nèi)容時(shí),根據(jù)指向所述服務(wù)器端存儲的歷史補(bǔ)丁的記錄標(biāo)識自所述歷史補(bǔ)丁中下載所述待更新內(nèi)容的剩余部分。
根據(jù)本公開的一個(gè)方面,提供一種補(bǔ)丁生成裝置,用于為一應(yīng)用程序生成補(bǔ)丁;所述補(bǔ)丁生成裝置包括:
加密壓縮模塊,用于對原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件;
共用資源模塊,用于自所述標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件并配置于共用資源目錄下;
專用資源模塊,用于對于每一所述終端類型,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下;
其中,任一所述終端類型對應(yīng)的補(bǔ)丁包括所述共用資源目錄下的共用資源文件以及對應(yīng)該終端類型的專用資源目錄下的專用資源文件。
根據(jù)本公開的一個(gè)方面,提供一種電子設(shè)備,包括:
處理器;以及
存儲器,用于存儲所述處理器的可執(zhí)行指令;
其中,所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行上述的補(bǔ)丁生成方法或者上述的補(bǔ)丁更新方法。
根據(jù)本公開的一個(gè)方面,提供一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述的補(bǔ)丁生成方法或者上述的補(bǔ)丁更新方法。
本公開示例性實(shí)施方式所提供的補(bǔ)丁生成方法及裝置、補(bǔ)丁更新方法、電子設(shè)備、以及計(jì)算機(jī)可讀存儲介質(zhì),根據(jù)應(yīng)用程序所使用的資源類型的不同而將所生成的補(bǔ)丁配置于不同的資源目錄下。這樣一來,通過將各個(gè)終端類型均適用的資源文件配置于一共用資源目錄下,同時(shí)將針對特定終端類型的資源文件配置于對應(yīng)的專用資源目錄下,即可避免通用類補(bǔ)丁的重復(fù)生成,從而達(dá)到減少補(bǔ)丁生成耗時(shí)以及節(jié)約占用空間的效果;在此基礎(chǔ)上,由于針對各個(gè)終端類型均生成了對應(yīng)的資源文件,即對應(yīng)各個(gè)終端類型均生成有對應(yīng)的補(bǔ)丁,因此本實(shí)施方式可同時(shí)適用于不同的終端類型。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實(shí)施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示意性示出本公開示例性實(shí)施例中補(bǔ)丁生成方法的流程圖一;
圖2示意性示出本公開示例性實(shí)施例中補(bǔ)丁生成方法的架構(gòu)圖;
圖3示意性示出本公開示例性實(shí)施例中補(bǔ)丁存儲目錄的示意圖;
圖4示意性示出本公開示例性實(shí)施例中補(bǔ)丁生成方法的流程圖二;
圖5示意性示出本公開示例性實(shí)施例中補(bǔ)丁生成及更新方法的示意圖;
圖6示意性示出本公開示例性實(shí)施例中補(bǔ)丁更新方法的流程圖;
圖7示意性示出本公開示例性實(shí)施例中補(bǔ)丁生成裝置的示意框圖;
圖8示意性示出本公開示例性實(shí)施例中電子設(shè)備的模塊示意圖;
圖9示意性示出本公開示例性實(shí)施例中程序產(chǎn)品的示意圖。
具體實(shí)施方式
現(xiàn)在將參考附圖更全面地描述示例實(shí)施方式。然而,示例實(shí)施方式能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實(shí)施方式使得本公開將更加全面和完整,并將示例實(shí)施方式的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個(gè)或更多實(shí)施方式中。
此外,附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。附圖中所示的一些方框圖是功能實(shí)體,不一定必須與物理或邏輯上獨(dú)立的實(shí)體相對應(yīng)。可以采用軟件形式來實(shí)現(xiàn)這些功能實(shí)體,或在一個(gè)或多個(gè)硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。
本示例實(shí)施方式提出了一種補(bǔ)丁生成方法,用于為一應(yīng)用程序生成補(bǔ)?。蝗鐖D1所示,所述補(bǔ)丁生成方法可以包括:
s1、對原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件;
s2、自標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件并配置于共用資源目錄下;
s3、對于每一終端類型,自標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下。
其中,任一終端類型對應(yīng)的補(bǔ)丁包括共用資源目錄下的共用資源文件以及對應(yīng)該終端類型的專用資源目錄下的專用資源文件。
需要說明的是:本示例實(shí)施方式中的應(yīng)用程序具體可以為軟件程序或者游戲程序等。
本公開示例性實(shí)施方式所提供的補(bǔ)丁生成方法,根據(jù)應(yīng)用程序所使用的資源類型的不同而將所生成的補(bǔ)丁配置于不同的資源目錄下。這樣一來,通過將各個(gè)終端類型均適用的資源文件配置于一共用資源目錄下,同時(shí)將針對特定終端類型的資源文件配置于對應(yīng)的專用資源目錄下,即可避免通用類補(bǔ)丁的重復(fù)生成,從而達(dá)到減少補(bǔ)丁生成耗時(shí)以及節(jié)約占用空間的效果;在此基礎(chǔ)上,由于針對各個(gè)終端類型均生成了對應(yīng)的資源文件,即對應(yīng)各個(gè)終端類型均生成有對應(yīng)的補(bǔ)丁,因此本實(shí)施方式可同時(shí)適用于不同的終端類型。
下面結(jié)合附圖對本示例實(shí)施方式中的補(bǔ)丁生成方法進(jìn)行詳細(xì)的說明。
在步驟s1中,對原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件。
本示例實(shí)施方式中,所述原始資源文件是指應(yīng)用程序開發(fā)者提供的資源文件,其具體可以包括:腳本文件、美術(shù)資源文件、以及引擎配置文件;其中的美術(shù)資源文件可以包括:模型、貼圖、骨骼動(dòng)作、物理、場景、ui(userinterface,用戶界面)、聲音等。所述標(biāo)準(zhǔn)資源文件是指采用基準(zhǔn)格式的資源文件,該基準(zhǔn)格式即為應(yīng)用程序的開發(fā)引擎所支持的文件格式。
基于此,本步驟中對原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件具體可以包括:根據(jù)基準(zhǔn)格式將腳本文件、美術(shù)資源文件、以及引擎配置文件進(jìn)行加密和壓縮,以得到所述標(biāo)準(zhǔn)資源文件。
舉例來說,本實(shí)施例中的補(bǔ)丁生成方法可用于為一網(wǎng)絡(luò)游戲應(yīng)用程序生成補(bǔ)丁,根據(jù)游戲客戶端所使用的游戲引擎可將patch分為不同的類別,例如cocos引擎的patch系統(tǒng)以及unity3d引擎的patch系統(tǒng),這是由于不同的游戲引擎使用不同的腳本語言和文件系統(tǒng)、設(shè)有不同的接口、以及適用于不同的游戲平臺,因此patch系統(tǒng)需要對不同的游戲引擎進(jìn)行相應(yīng)的適配。
以一游戲引擎為例,如圖2所示,當(dāng)需要生成補(bǔ)丁時(shí),首先需要將游戲開發(fā)者提供的腳本文件、美術(shù)資源文件、以及引擎配置文件等原始資源文件轉(zhuǎn)化成該游戲引擎的游戲客戶端所支持的資源格式以及文件系統(tǒng)分布,其可以通過在windows平臺上調(diào)用該游戲引擎的chef工具對游戲使用的原始資源文件進(jìn)行cook操作而實(shí)現(xiàn)。其中,chef工具是指該游戲引擎所提供的專門用于將該游戲引擎所使用的腳本文件以及美術(shù)資源文件按照特定的格式壓縮并加密成該游戲引擎游戲所能夠支持的文件格式的工具,這個(gè)壓縮和加密的過程即為cook。例如,該過程可以通過輸入指定的參數(shù)來控制cook時(shí)的選項(xiàng),例如“--cook-script=1”用于cook腳本文件,“--cook-package=1”用于cook美術(shù)資源文件等,這樣即可分別對腳本文件、美術(shù)資源文件、以及引擎配置文件進(jìn)行加密和壓縮,以得到該游戲引擎的游戲客戶端所支持的資源格式的標(biāo)準(zhǔn)資源文件。
在步驟s2中,自標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件并配置于共用資源目錄下。
本示例實(shí)施方式中,所述終端類型可以根據(jù)終端運(yùn)行的操作系統(tǒng)進(jìn)行分類,例如運(yùn)行ios操作系統(tǒng)的終端或者運(yùn)行android操作系統(tǒng)的終端;當(dāng)然,所述終端類型還可以根據(jù)終端的系統(tǒng)配置進(jìn)行分類,例如具有ios操作系統(tǒng)的高級配置的終端或者具有ios操作系統(tǒng)的低級配置的終端;本實(shí)施例針對終端的分類標(biāo)準(zhǔn)不限于此,凡是可能影響patch生成與更新的因素,均在本實(shí)施例的保護(hù)范圍之內(nèi)。所述共用資源文件是指各個(gè)類型終端均可以適用的資源文件,其例如可以包括腳本文件、引擎配置文件、以及美術(shù)資源文件中的場景文件和骨骼動(dòng)作文件等。所述共用資源目錄是指patch目錄中指向共用資源文件的目錄。
基于此,本步驟中自所述標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件具體可以包括:自所述標(biāo)準(zhǔn)資源文件中獲取所述腳本文件、所述引擎配置文件、以及所述美術(shù)資源文件中的場景文件和骨骼動(dòng)作文件。
舉例來說,如圖3所示,在通過上述步驟s1得到標(biāo)準(zhǔn)資源文件后,可將通用于不同終端類型的腳本文件、引擎配置文件、以及美術(shù)資源文件中的場景文件和骨骼動(dòng)作文件等共用資源文件放置于一共用資源文件夾中并將其配置于patch目錄中的common共用資源目錄下。
在步驟s3中,對于每一所述終端類型,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下。
本示例實(shí)施方式中,所述專用資源文件是指僅針對于特定類型終端的資源文件,其例如可以包括美術(shù)資源文件中的模型、物理、ui、聲音等。所述專用資源目錄是指patch目錄中指向?qū)S觅Y源文件的目錄。
在本實(shí)施例中,所述終端類型可以根據(jù)終端運(yùn)行的操作系統(tǒng)進(jìn)行分類。在此情況下,所述不同終端類型可以包括對應(yīng)第一應(yīng)用平臺的第一終端、對應(yīng)第二應(yīng)用平臺的第二終端、以及對應(yīng)第三應(yīng)用平臺的第三終端;其中,所述第一終端可以為運(yùn)行ios系統(tǒng)的終端,所述第二終端可以為運(yùn)行android系統(tǒng)的終端,所述第三終端可以為運(yùn)行windows系統(tǒng)的終端。
基于此,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下可以包括:
自標(biāo)準(zhǔn)資源文件中獲取適用于第一終端的第一專用資源文件并將第一專用資源文件配置于對應(yīng)第一終端的第一專用資源目錄下;
自標(biāo)準(zhǔn)資源文件中獲取適用于第二終端的第二專用資源文件并將第二專用資源文件配置于對應(yīng)第二終端的第二專用資源目錄下;
自標(biāo)準(zhǔn)資源文件中獲取適用于第三終端的第三專用資源文件并將第三專用資源文件配置于對應(yīng)第三終端的第三專用資源目錄下。
在本實(shí)施例中,所述終端類型也可以根據(jù)終端采用的硬件配置進(jìn)行分類。在此情況下,所述不同終端類型可以包括對應(yīng)第一硬件配置的第一終端、對應(yīng)第二硬件配置的第二終端、以及對應(yīng)第三硬件配置的第三終端;其中,所述第一終端可以采用高級的硬件配置,所述第二終端可以采用中級的硬件配置,所述第三終端可以采用低級的硬件配置。這里所述的高級、中級、低級是一種相對關(guān)系,其可根據(jù)cpu(centralprocessingunit,中央處理器)、gpu(graphicprocessingunit,圖形處理器)等處理器的處理能力進(jìn)行劃分。
基于此,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下可以包括:
自標(biāo)準(zhǔn)資源文件中獲取適用于第一終端的第一專用資源文件并將第一專用資源文件配置于對應(yīng)第一終端的第一專用資源目錄下;
自標(biāo)準(zhǔn)資源文件中獲取適用于第二終端的第二專用資源文件并將第二專用資源文件配置于對應(yīng)第二終端的第二專用資源目錄下;
自標(biāo)準(zhǔn)資源文件中獲取適用于第三終端的第三專用資源文件并將第三專用資源文件配置于對應(yīng)第三終端的第三專用資源目錄下。
基于上述兩種示例性的分類方法,不同類型的終端可以根據(jù)特定的分類標(biāo)準(zhǔn)例如劃分為第一終端、第二終端、以及第三終端。但是,本實(shí)施例不排除其它的分類方法,也不限定根據(jù)特定分類方法而劃分的終端類型的數(shù)量。
需要說明的是:本示例實(shí)施方式中的終端分類方法可以單獨(dú)使用,例如僅根據(jù)終端運(yùn)行的操作系統(tǒng)進(jìn)行分類,此時(shí)可以得到運(yùn)行ios系統(tǒng)的第一終端、運(yùn)行android系統(tǒng)的第二終端、以及運(yùn)行windows系統(tǒng)的第三終端;或者僅根據(jù)終端采用的硬件配置進(jìn)行分類,此時(shí)可以得到采用高級硬件配置的第一終端、采用中級硬件配置的第二終端、以及采用低級硬件配置的第三終端。當(dāng)然,本示例實(shí)施方式中的終端分類方法也可以結(jié)合使用,例如結(jié)合終端運(yùn)行的操作系統(tǒng)和終端采用的硬件配置進(jìn)行分類,此時(shí)所得到的終端可以包括運(yùn)行ios系統(tǒng)的三種終端、運(yùn)行android系統(tǒng)的三種終端、以及運(yùn)行windows系統(tǒng)的終端。
舉例來說,參考圖3所示,在通過上述步驟s1得到標(biāo)準(zhǔn)資源文件后,可將適用于ios平臺的美術(shù)資源文件中的模型、物理、ui等專用資源文件放置于一專用資源文件夾中并將其配置于patch目錄中對應(yīng)ios平臺的ios-common專用資源目錄下,將適用于android平臺的美術(shù)資源文件中的模型、物理、ui等專用資源文件放置于一專用資源文件夾中并將其配置于patch目錄中對應(yīng)android平臺的android-common專用資源目錄下,以及將適用于windows平臺的美術(shù)資源文件中的模型、物理、ui等專用資源文件放置于一專用資源文件夾中并將其配置于patch目錄中對應(yīng)windows平臺的windows-common專用資源目錄下。
在此基礎(chǔ)上,針對適用于ios平臺或者android平臺的美術(shù)資源文件,不僅包括模型、物理、ui、聲音等這類可通用于ios平臺或者android平臺的專用資源文件,同時(shí)還包括貼圖這類適用于不同硬件配置的專用資源文件。此時(shí),針對于運(yùn)行ios平臺的終端,可根據(jù)其硬件配置的高低,將美術(shù)資源文件中的貼圖這類專用資源文件放置于一專用資源文件夾中并將其配置于patch目錄中對應(yīng)ios平臺且硬件配置不同的ios-high、ios-middle、以及ios-low專用資源目錄下;同理,針對于運(yùn)行android平臺的終端,可根據(jù)其硬件配置的高低,將美術(shù)資源文件中的貼圖這類專用資源文件放置于一專用資源文件夾中并將其配置于patch目錄中對應(yīng)android平臺且硬件配置不同的android-high、android-middle、以及android-low專用資源目錄下;而針對于運(yùn)行windows平臺的終端,可以根據(jù)上述方式進(jìn)行分配,但也可以僅將專用資源文件統(tǒng)一配置于patch目錄中對應(yīng)windows平臺的windows-normal專用資源目錄下。
這樣一來,當(dāng)各類終端需要進(jìn)行游戲內(nèi)容更新時(shí),便可以從步驟2中的共用資源目錄下的共用資源文件以及步驟3中的專用資源目錄下的專用資源文件中獲取需要的待更新補(bǔ)丁。以ios平臺的高級硬件配置的游戲客戶端為例,其需要下載的資源分別從common目錄、ios-common目錄、以及ios-high目錄中獲取。
基于上述過程,如圖4所示,所述補(bǔ)丁生成方法還可以進(jìn)一步包括:
s4、將所生成的補(bǔ)丁與服務(wù)器端存儲的歷史補(bǔ)丁進(jìn)行對比,以獲取該補(bǔ)丁相對于歷史補(bǔ)丁的增量補(bǔ)丁以及相同部分;
s5、將增量補(bǔ)丁上傳至所述服務(wù)器,并針對相同部分生成一指向服務(wù)器端存儲的歷史補(bǔ)丁的記錄標(biāo)識。
其中,所述歷史補(bǔ)丁是指已經(jīng)上傳至服務(wù)器端的補(bǔ)丁。
本示例實(shí)施方式的目的在于為應(yīng)用程序生成補(bǔ)丁,而傳統(tǒng)的補(bǔ)丁系統(tǒng)的弊端在于:每次需要應(yīng)用程序客戶端進(jìn)行更新時(shí),都需要上傳全部的程序內(nèi)容至服務(wù)器端,如果程序內(nèi)容較大,便會導(dǎo)致服務(wù)器端的占用空間增大且上傳用時(shí)也增大。針對于此,本示例實(shí)施方式通過將當(dāng)前生成的補(bǔ)丁與已經(jīng)上傳的歷史補(bǔ)丁進(jìn)行對比,根據(jù)對比結(jié)果僅上傳有變化的增量補(bǔ)丁而無需上傳未變化的相同部分,這樣可以大大減少需要上傳的文件數(shù)量,從而達(dá)到減少補(bǔ)丁上傳耗時(shí)的目的。
舉例來說,在通過上述步驟s1-s3生成游戲補(bǔ)丁之后,需要將生成的游戲補(bǔ)丁上傳至服務(wù)器端,以便于游戲客戶端下載更新。如圖5所示,在已經(jīng)上傳過一份補(bǔ)丁即歷史補(bǔ)丁至服務(wù)器端的情況下,如果游戲資源發(fā)生變化需要上傳一份新的補(bǔ)丁,則可以將根據(jù)上述方法生成的補(bǔ)丁與歷史補(bǔ)丁進(jìn)行對比,以得到發(fā)生更新變化的增量補(bǔ)丁和未變化的相同部分。針對于發(fā)生更新變化的增量補(bǔ)丁,需要將其上傳至服務(wù)器端,而針對于未變化的相同部分,則會生成一由增量補(bǔ)丁指向歷史補(bǔ)丁的patch目錄的記錄標(biāo)識。仍以上述的游戲引擎為例,經(jīng)過測試驗(yàn)證可知,采用本實(shí)施例提供的方法進(jìn)行補(bǔ)丁的生成及上傳,可將patch占用空間從7g下降到4g,有效減少42%的占用空間,生成耗時(shí)最快可從40分鐘下降到16分鐘,有效減少60%的生成耗時(shí),上傳耗時(shí)可從120分鐘下降到10分鐘,有效減少91%的上傳耗時(shí)。由此可知,本實(shí)施例優(yōu)化后的補(bǔ)丁生成方法可有效減少patch占用空間、生成耗時(shí)以及上傳耗時(shí)。
本示例實(shí)施方式中還提供一種補(bǔ)丁更新方法,如圖6所示,所述補(bǔ)丁更新方法可以包括:
s10、獲取根據(jù)上述的補(bǔ)丁生成方法而生成的補(bǔ)丁;
s20、將獲取到的補(bǔ)丁與本地內(nèi)容進(jìn)行對比,以獲取待更新內(nèi)容;
s30、自該補(bǔ)丁相對于服務(wù)器端存儲的歷史補(bǔ)丁的增量補(bǔ)丁中下載待更新內(nèi)容的部分或全部;
s40、在增量補(bǔ)丁中未完全包括待更新內(nèi)容時(shí),根據(jù)指向服務(wù)器端存儲的歷史補(bǔ)丁的記錄標(biāo)識自歷史補(bǔ)丁中下載待更新內(nèi)容的剩余部分。
舉例來說,參考圖5所示,當(dāng)游戲客戶端需要啟動(dòng)時(shí),會與新上傳的增量補(bǔ)丁進(jìn)行對比,以獲得需要更新的內(nèi)容。經(jīng)過對比之后,游戲客戶端首先會從增量補(bǔ)丁部分下載新更新的內(nèi)容,而對于增量補(bǔ)丁中沒有的內(nèi)容,游戲客戶端則會從歷史補(bǔ)丁中進(jìn)行下載。
由此可知,本實(shí)施例提供的補(bǔ)丁下載更新方法與上述的補(bǔ)丁生成方法相對應(yīng)。具體而言,在補(bǔ)丁的生成及上傳過程中,新上傳的增量補(bǔ)丁會有一記錄標(biāo)識指向之前已經(jīng)上傳的補(bǔ)丁的patch目錄,而游戲引擎的游戲客戶端在需要更新時(shí),首先會對比本地游戲資源與服務(wù)器端資源的差異,然后再從增量補(bǔ)丁部分和之前上傳的歷史補(bǔ)丁部分分別前后下載需要更新的資源。
這樣一來,在進(jìn)行補(bǔ)丁更新時(shí),便可以從增量補(bǔ)丁中直接獲取最新的更新內(nèi)容,避免了先從歷史補(bǔ)丁中下載一次補(bǔ)丁,再從增量補(bǔ)丁中對已下載且再次更新的內(nèi)容重復(fù)下載,從而節(jié)約了補(bǔ)丁更新耗時(shí)。
本示例實(shí)施方式中還提出了一種補(bǔ)丁生成裝置,用于為一應(yīng)用程序生成補(bǔ)丁。如圖7所示,所述補(bǔ)丁生成裝置可以包括:
加密壓縮模塊10,用于對原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件;
共用資源模塊20,用于自所述標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件并配置于共用資源目錄下;
專用資源模塊30,用于對于每一所述終端類型,自所述標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下;
其中,任一所述終端類型對應(yīng)的補(bǔ)丁包括所述共用資源目錄下的共用資源文件以及對應(yīng)該終端類型的專用資源目錄下的專用資源文件。
本公開示例性實(shí)施方式所提供的補(bǔ)丁生成裝置,根據(jù)應(yīng)用程序所使用的資源類型的不同而將所生成的補(bǔ)丁配置于不同的資源目錄下。這樣一來,通過將各個(gè)終端類型均適用的資源文件配置于一共用資源目錄下,同時(shí)將針對特定終端類型的資源文件配置于對應(yīng)的專用資源目錄下,即可避免通用類補(bǔ)丁的重復(fù)生成,從而達(dá)到減少補(bǔ)丁生成耗時(shí)以及節(jié)約占用空間的效果;在此基礎(chǔ)上,由于針對各個(gè)終端類型均生成了對應(yīng)的資源文件,即對應(yīng)各個(gè)終端類型均生成有對應(yīng)的補(bǔ)丁,因此本實(shí)施方式可同時(shí)適用于不同的終端類型。
需要說明的是:所述補(bǔ)丁生成裝置中各模塊單元的具體細(xì)節(jié)已經(jīng)在對應(yīng)的補(bǔ)丁生成方法中進(jìn)行了詳細(xì)的描述,這里不再贅述。
應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了用于動(dòng)作執(zhí)行的設(shè)備的若干模塊或者單元,但是這種劃分并非強(qiáng)制性的。實(shí)際上,根據(jù)本公開的實(shí)施方式,上文描述的兩個(gè)或更多模塊或者單元的特征和功能可以在一個(gè)模塊或者單元中具體化。反之,上文描述的一個(gè)模塊或者單元的特征和功能可以進(jìn)一步劃分為由多個(gè)模塊或者單元來具體化。
此外,盡管在附圖中以特定順序描述了本公開中方法的各個(gè)步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實(shí)現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,以及/或者將一個(gè)步驟分解為多個(gè)步驟執(zhí)行等。
在本公開的示例性實(shí)施例中,還提供了一種能夠?qū)崿F(xiàn)上述方法的電子設(shè)備。
所屬技術(shù)領(lǐng)域的技術(shù)人員能夠理解,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。
下面參照圖8來描述根據(jù)本發(fā)明的這種實(shí)施方式的電子設(shè)備600。附圖中的電子設(shè)備600僅僅是一個(gè)示例,不應(yīng)對本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。
如圖8所示,電子設(shè)備600以通用計(jì)算設(shè)備的形式表現(xiàn)。電子設(shè)備600的組件可以包括但不限于:上述至少一個(gè)處理單元610、上述至少一個(gè)存儲單元620、連接不同系統(tǒng)組件(包括存儲單元620和處理單元610)的總線630。
其中,所述存儲單元620存儲有程序代碼,所述程序代碼可以被所述處理單元610執(zhí)行,使得所述處理單元610執(zhí)行本說明書上述示例性方法部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的步驟。例如,所述處理單元610可以執(zhí)行如圖1中所示的步驟s1、對原始資源文件進(jìn)行加密和壓縮以得到標(biāo)準(zhǔn)資源文件;步驟s2、自標(biāo)準(zhǔn)資源文件中獲取通用于不同終端類型的共用資源文件并配置于共用資源目錄下;步驟s3、對于每一終端類型,自標(biāo)準(zhǔn)資源文件中獲取適用于該終端類型的專用資源文件并配置于對應(yīng)該終端類型的專用資源目錄下。
存儲單元620可以包括易失性存儲單元形式的可讀介質(zhì),例如隨機(jī)存取存儲單元(ram)6201和/或高速緩存存儲單元6202,還可以進(jìn)一步包括只讀存儲單元(rom)6203。
存儲單元620還可以包括具有一組(至少一個(gè))程序模塊6205的程序/實(shí)用工具6204,這樣的程序模塊6205包括但不限于:操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。
總線630可以為表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲單元總線或者存儲單元控制器、外圍總線、圖形加速端口、處理單元或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。
電子設(shè)備600也可以與一個(gè)或多個(gè)外部設(shè)備700(例如鍵盤、指向設(shè)備、藍(lán)牙設(shè)備等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該電子設(shè)備600交互的設(shè)備通信,和/或與使得該電子設(shè)備600能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如路由器、調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(i/o)接口650進(jìn)行。并且,電子設(shè)備600還可以通過網(wǎng)絡(luò)適配器660與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器660通過總線630與電子設(shè)備600的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合電子設(shè)備600使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、raid系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲系統(tǒng)等。
在本公開的示例性實(shí)施例中,還提供了一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有能夠?qū)崿F(xiàn)本說明書上述方法的程序產(chǎn)品。在一些可能的實(shí)施方式中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當(dāng)所述程序產(chǎn)品在終端設(shè)備上運(yùn)行時(shí),所述程序代碼用于使所述終端設(shè)備執(zhí)行本說明書上述示例性方法部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的步驟。
參考圖9所示,描述了根據(jù)本發(fā)明的實(shí)施方式的用于實(shí)現(xiàn)上述方法的程序產(chǎn)品800,其可以采用便攜式緊湊盤只讀存儲器(cd-rom)并包括程序代碼,并可以在終端設(shè)備,例如個(gè)人電腦上運(yùn)行。然而,本發(fā)明的程序產(chǎn)品不限于此,在本文件中,可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
所述程序產(chǎn)品可以采用一個(gè)或多個(gè)可讀介質(zhì)的任意組合。可讀介質(zhì)可以是可讀信號介質(zhì)或者可讀存儲介質(zhì)??勺x存儲介質(zhì)例如可以為但不限于電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式盤、硬盤、隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、光纖、便攜式緊湊盤只讀存儲器(cd-rom)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。
計(jì)算機(jī)可讀信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合??勺x信號介質(zhì)還可以是可讀存儲介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纜、rf等等,或者上述的任意合適的組合。
可以以一種或多種程序設(shè)計(jì)語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言—諸如java、c++等,還包括常規(guī)的過程式程序設(shè)計(jì)語言—諸如“c”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算設(shè)備上執(zhí)行、部分地在用戶設(shè)備上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算設(shè)備上部分在遠(yuǎn)程計(jì)算設(shè)備上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算設(shè)備或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算設(shè)備的情形中,遠(yuǎn)程計(jì)算設(shè)備可以通過任意種類的網(wǎng)絡(luò),包括局域網(wǎng)(lan)或廣域網(wǎng)(wan),連接到用戶計(jì)算設(shè)備,或者,可以連接到外部計(jì)算設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實(shí)施方式可以通過軟件實(shí)現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實(shí)現(xiàn)。因此,根據(jù)本公開實(shí)施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個(gè)非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動(dòng)硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、移動(dòng)終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實(shí)施方式的方法。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本公開的其它實(shí)施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由所附的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限。