文件增量升級(jí)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)瀏覽器技術(shù)領(lǐng)域,更為具體地,涉及一種文件增量升級(jí)方法及系統(tǒng)。
【背景技術(shù)】
[0002]APK (Android Package,安卓安裝包)特征值可以唯一確定一個(gè)APK文件的版本以及用于增量更新時(shí)確定base文件,其中,base文件指的是原始文件。通常,APK特征值可以通過APK的版本號(hào)來獲取,但在一些特殊情況下,例如在進(jìn)行增量升級(jí)時(shí),需要準(zhǔn)確的知道APK文件的當(dāng)前版本的APK特征值,此種特征值的獲取則不能簡(jiǎn)單的用版本號(hào)來獲取。
[0003]目前,一般采用MD5 (Message-Digest Algorithm5,信息摘要算法5)或者SHA (Secure Hash Algorithm,安全散列算法)-1等傳統(tǒng)算法對(duì)整個(gè)APK文件的所有數(shù)據(jù)進(jìn)行一次計(jì)算,用以獲得該文件的APK特征值。但出于商業(yè)推廣的原因,目前各個(gè)APK開發(fā)者在發(fā)布APK的過程中,都要在APK中加入一些特殊標(biāo)識(shí)來區(qū)分不同的發(fā)行渠道。正是由于這種APK的這種發(fā)行特點(diǎn),使得傳統(tǒng)的獲取APK文件的APK特征值的方法變得不再適用。這是由于即使是同一個(gè)base文件,但經(jīng)過加入特殊標(biāo)識(shí)后也會(huì)變成不同的APK文件,如果還是利用傳統(tǒng)的獲取APK特征值的方法來獲取APK文件的APK特征值則會(huì)產(chǎn)生以下問題:
[0004]1、求取APK特征值的計(jì)算量較大,計(jì)算效率低;
[0005]2、一般一個(gè)APK文件都有上千個(gè)發(fā)行渠道,即使是同一個(gè)版本的APK文件在經(jīng)過添加不同的特殊標(biāo)識(shí)后,也會(huì)變成上千個(gè)不同的APK文件,那么其對(duì)應(yīng)的APK特征值也會(huì)有上千個(gè)。需要說明的是,在這上千個(gè)APK文件中,其大部分內(nèi)容是相同的,僅有很少的數(shù)據(jù)不一致,如果把這上千個(gè)APK文件當(dāng)做不同的文件來做增量升級(jí),其升級(jí)的后臺(tái)維護(hù)工作量是巨大的。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,本發(fā)明的目的是提供一種文件增量升級(jí)方法及系統(tǒng),以解決傳統(tǒng)的APK特征值的獲取的計(jì)算量大所導(dǎo)致的增量升級(jí)后臺(tái)維護(hù)工作量大的問題,在降低獲取APK特征值計(jì)算量的同時(shí),提高增量升級(jí)的效率。
[0007]根據(jù)本發(fā)明的一個(gè)方面,提供一種文件增量升級(jí)方法,包括:
[0008]讀取APK文件的ZIP數(shù)據(jù)信息,ZIP數(shù)據(jù)信息為ZIP數(shù)據(jù)頭或者ZIP目錄表;
[0009]根據(jù)所讀取的ZIP數(shù)據(jù)信息獲取APK文件的APK特征值;
[0010]根據(jù)APK特征值對(duì)與APK特征值對(duì)應(yīng)的APK base文件進(jìn)行增量升級(jí)。
[0011 ] 其中,根據(jù)所讀取的ZIP數(shù)據(jù)信息獲取APK文件的APK特征值的步驟包括:根據(jù)所讀取的ZIP數(shù)據(jù)信息,對(duì)APK文件進(jìn)行過濾以獲取過濾的APK文件;根據(jù)所述過濾的APK文件的ZIP數(shù)據(jù)信息獲取所述過濾的APK文件的APK特征值。
[0012]其中,在對(duì)APK文件進(jìn)行過濾獲取過濾的APK文件的過程中,根據(jù)所讀取的ZIP數(shù)據(jù)信息所包含的文件名對(duì)APK文件進(jìn)行過濾獲取過濾的APK文件。
[0013]另一方面,本發(fā)明還提供一種文件增量升級(jí)系統(tǒng),包括:
[0014]信息讀取單元,用于讀取APK文件的ZIP數(shù)據(jù)信息,ZIP數(shù)據(jù)信息為ZIP數(shù)據(jù)頭或者ZIP目錄表;
[0015]特征值獲取單元,用于根據(jù)信息讀取單元所讀取的ZIP數(shù)據(jù)信息獲取APK文件的APK特征值;
[0016]增量升級(jí)單元,用于根據(jù)特征值獲取單元所獲取的APK特征值對(duì)與APK特征值對(duì)應(yīng)的APK base文件進(jìn)行增量升級(jí)。
[0017]其中,還包括過濾單元,用于根據(jù)信息讀取單元所讀取的ZIP數(shù)據(jù)信息,對(duì)APK文件進(jìn)行過濾以獲取過濾的APK文件,根據(jù)過濾的APK文件的ZIP數(shù)據(jù)信息獲取過濾的APK文件的APK特征值。
[0018]利用上述根據(jù)本發(fā)明的文件增量升級(jí)方法及系統(tǒng),對(duì)所讀取的APK文件的ZIP數(shù)據(jù)信息(該ZIP數(shù)據(jù)信息為ZIP數(shù)據(jù)頭或者ZIP目錄表)進(jìn)行計(jì)算獲取APK文件的APK特征值,根據(jù)所獲取的APK特征值對(duì)與該APK特征值對(duì)應(yīng)的APK base文件進(jìn)行增量升級(jí),即通過對(duì)包含APK文件原始信息的ZIP數(shù)據(jù)頭信息或者存儲(chǔ)在ZIP最后的目錄表進(jìn)行計(jì)算,得到能準(zhǔn)確表示整個(gè)文件特性的特征值,進(jìn)而根據(jù)特征值對(duì)對(duì)應(yīng)的base文件進(jìn)行增量升級(jí)。通過本發(fā)明能夠在降低獲取APK特征值計(jì)算量的同時(shí),提高增量升級(jí)的效率。
[0019]為了實(shí)現(xiàn)上述以及相關(guān)目的,本發(fā)明的一個(gè)或多個(gè)方面包括后面將詳細(xì)說明并在權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細(xì)說明了本發(fā)明的某些示例性方面。然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。
【附圖說明】
[0020]通過參考以下結(jié)合附圖的說明及權(quán)利要求書的內(nèi)容,并且隨著對(duì)本發(fā)明的更全面理解,本發(fā)明的其它目的及結(jié)果將更加明白及易于理解。在附圖中:
[0021]圖1為根據(jù)本發(fā)明實(shí)施例的文件增量升級(jí)方法的第一流程示意圖;
[0022]圖2為根據(jù)本發(fā)明實(shí)施例的文件增量升級(jí)方法的第二流程示意圖;
[0023]圖3為根據(jù)本發(fā)明實(shí)施例的文件增量升級(jí)系統(tǒng)的第一邏輯結(jié)構(gòu)框圖;
[0024]圖4為根據(jù)本發(fā)明實(shí)施例的文件增量升級(jí)系統(tǒng)的第二邏輯結(jié)構(gòu)框圖。
[0025]在所有附圖中相同的標(biāo)號(hào)指示相似或相應(yīng)的特征或功能。
【具體實(shí)施方式】
[0026]以下將結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)描述。
[0027]針對(duì)前述傳統(tǒng)的APK特征值的獲取計(jì)算量大導(dǎo)致增量升級(jí)時(shí)后臺(tái)維護(hù)工作量大的問題,本發(fā)明通過對(duì)所讀取的APK文件的ZIP數(shù)據(jù)信息(該ZIP數(shù)據(jù)信息為ZIP數(shù)據(jù)頭或者ZIP目錄表)進(jìn)行計(jì)算獲取APK文件的APK特征值,根據(jù)所獲取的APK特征值對(duì)與該APK特征值對(duì)應(yīng)的APK base文件進(jìn)行增量升級(jí),通過本發(fā)明能夠在降低獲取APK特征值計(jì)算量的同時(shí),提高增量升級(jí)的效率。
[0028]為了便于理解,在對(duì)本發(fā)明進(jìn)行詳細(xì)說明之前,先對(duì)本發(fā)明的思想進(jìn)行簡(jiǎn)要描述。
[0029]本發(fā)明的最終目的是對(duì)APK文件進(jìn)行增量升級(jí),APK文件的結(jié)構(gòu)是標(biāo)準(zhǔn)的ZIP壓縮結(jié)構(gòu),而ZIP存儲(chǔ)文件的特點(diǎn)是將文件數(shù)據(jù)壓縮以后加上一個(gè)ZIP數(shù)據(jù)頭,這個(gè)ZIP數(shù)據(jù)頭中記錄了文件的原始信息,例如:文件的創(chuàng)建時(shí)間、文件名、文件的原始大小、文件壓縮后的大小、文件的壓縮方式以及文件的CRC校驗(yàn)等信息。
[0030]ZIP文件是將文件逐個(gè)、順序地存儲(chǔ)于一個(gè)文件中,然后在ZIP文件的最后加上一個(gè)ZIP目錄表,該目錄表記錄了所有ZIP數(shù)據(jù)頭偏移位置以及一些和ZIP數(shù)據(jù)頭中類似的文件原始信息。也就是說,ZIP目錄表明確了該ZIP文件中包含哪些文件以及所包含的這些文件在該ZIP文件中的位置。
[0031]另外,由于APK特征值能夠唯一確定一個(gè)APK文件的版本以及用于增量更新時(shí)確定APK base文件,因此,本發(fā)明利用上述特點(diǎn),選取那些包含APK文件原始信息的ZIP數(shù)據(jù)頭或者存儲(chǔ)在ZIP文件最后的ZIP目錄表進(jìn)行計(jì)算,以得到準(zhǔn)確表示整個(gè)文件特性的特征值。
[0032]為了說明本發(fā)明提供的文件增量升級(jí)方法,圖1示出了根據(jù)本發(fā)明實(shí)施例的文件增量升級(jí)方法的第一流程。
[0033]如圖1所示,本發(fā)明提供的文件增量升級(jí)方法包括:
[0034]SllO:讀取APK文件的ZIP數(shù)據(jù)信息,其中,該ZIP數(shù)據(jù)信息為ZIP數(shù)據(jù)頭或者ZIP
目錄表。
[0035]具體地,如上所述,由于ZIP數(shù)據(jù)頭和ZIP目錄表中都存儲(chǔ)了類似的APK文件的原始信息,因此不管利用ZIP數(shù)據(jù)頭還是利用ZIP目錄表都能夠準(zhǔn)確計(jì)算出表示整個(gè)APK文件特性的特征值,因此在實(shí)際應(yīng)用中,選擇其一即可。
[0036]S120:根據(jù)所讀取的ZIP數(shù)據(jù)信息獲取APK文件的APK特征值。
[0037]其中,根據(jù)所讀取的ZIP數(shù)據(jù)信息獲取APK文件的APK特征值的步驟包括:根據(jù)所讀取的ZIP數(shù)據(jù)信息,對(duì)APK文件進(jìn)行過濾以獲取過濾的APK文件;根據(jù)過濾的APK文件的ZIP數(shù)據(jù)信息獲取過濾的APK文件的APK特征值。其中,在根據(jù)所讀取的ZIP數(shù)據(jù)信息獲取APK文件的APK特征值的過程中,通過MD5或者SHA-1算法對(duì)所讀取的ZIP數(shù)據(jù)信息進(jìn)行計(jì)算獲取APK文件的APK特征值。
[0038]也就是說,在獲取APK文件的APK特征值之前,需要對(duì)上述APK文件進(jìn)行判斷,以確定其是否滿足文件過濾條件。即根據(jù)所讀取的ZIP數(shù)據(jù)信息對(duì)上述APK文件進(jìn)行過濾獲取過濾的APK文件。其中,在對(duì)APK文件進(jìn)行過濾以獲取過濾的APK文件的過程中,如果未獲取到過濾的APK文件,則通過MD5或者SHA-1算法對(duì)整個(gè)APK文件進(jìn)行計(jì)算獲取APK文件的APK特征值。
[0039]即:如果該APK文件滿足文件過濾條件,則采用傳統(tǒng)的方法對(duì)整個(gè)APK文件進(jìn)行MD5或者SHA-1計(jì)算以得到該APK文件的APK特征值;如果該APK文件不滿足文件過濾條件,則對(duì)所讀取的ZIP數(shù)據(jù)信息進(jìn)行MD5或者SHA-1計(jì)算以獲取該APK文件的APK特征值,其中,不滿足文件過濾條件的APK文件即為過濾的APK文件。
[0040]需要說明的是,由于APK文件的發(fā)行特點(diǎn),雖然很多APK文件不完全一樣,但這些APK文件的差異是可以預(yù)先知道的。因此如果這些差異是由一個(gè)或有限的幾個(gè)文件修改所造成的,那么在獲取APK特征值的過程中,將這些文件排除就能避開這種差異;而如果這些差異是由于附加在ZIP目錄表之后的數(shù)據(jù)引起的,那么通過對(duì)APK文件的判斷也能避開這
—Tr ο
[0041]也就是說,由于滿足文件過濾條件的APK文件是那些預(yù)先明確知道會(huì)有差異的極少數(shù)文件,因此可以以文件名為文件過濾條件對(duì)APK文件進(jìn)行判斷。即在對(duì)上述APK文件進(jìn)行過濾獲取過濾的APK文件的過程中,根據(jù)所讀取的ZIP數(shù)據(jù)信息所包含的文件名對(duì)上述APK文件進(jìn)行過濾獲取過濾的APK文件。但需要明確的是,上述的文件過濾條件還可以為文件的大小、文件的創(chuàng)建時(shí)間等。即還可以根據(jù)所讀取的ZIP數(shù)據(jù)信息所包含的文件的大小或者文件的創(chuàng)建時(shí)間對(duì)APK文件進(jìn)行過濾以獲取過濾的APK文件。
[0042]另外,由發(fā)行渠道所導(dǎo)致的APK文件的差異,但可以認(rèn)為這些APK文件都是同一個(gè)版本的,其大部分內(nèi)容都是相同的,因此在增量升級(jí)的時(shí)候可以只對(duì)相同的部分做增量升級(jí),極少的差異部分可以認(rèn)為是新增數(shù)據(jù),全量增加就能解決,進(jìn)而能夠維護(hù)版本過多的問題,這也正是APK特征值的實(shí)用價(jià)值所在。
[0043]S130:根據(jù)APK特征值對(duì)與APK特征值對(duì)應(yīng)的APK base文件進(jìn)行增量升級(jí)。
[0044]具體地,由于一個(gè)APK特征值代表一個(gè)不同的APK base文件,因此根據(jù)特征值選擇對(duì)應(yīng)的base文件即可以進(jìn)行增量升級(jí)。
[0045]其中,為了更為詳細(xì)的說明本發(fā)明提供的文件增量升級(jí)方法,圖2示出了根據(jù)本發(fā)明實(shí)施例的文件增量升級(jí)方法的第二流程。如圖2所示:
[0046]S210:讀取APK文件的ZIP數(shù)據(jù)