本發(fā)明涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
:,特別涉及一種差異信息文件生成及應(yīng)用方法、裝置。
背景技術(shù):
::虛擬機(jī)可執(zhí)行格式(英文:dalvikexecutableformat,簡稱:Dex)文件是指安卓(英文:android)操作系統(tǒng)上的Java虛擬機(jī)可識(shí)別的描述一系列類及其相關(guān)數(shù)據(jù)的文件格式。相關(guān)技術(shù)中在獲取用于定義原始Dex文件和新Dex文件之間的差異信息的差異信息文件時(shí),首先比較原始Dex文件和新Dex文件的二進(jìn)制數(shù)據(jù)流,找到最長的未發(fā)生改變的二進(jìn)制串,然后將其它發(fā)生改變的二進(jìn)制串及其增刪改操作作為兩個(gè)文件的差異信息保存到差異信息文件中。在應(yīng)用差異信息時(shí),再通過差異信息文件中保存的差異信息重新生成新的Dex文件。上述方式將二進(jìn)制數(shù)據(jù)流中所有發(fā)生改變的二進(jìn)制串均作為了差異信息,導(dǎo)致生成的差異信息存在大量冗余。技術(shù)實(shí)現(xiàn)要素:為了解決現(xiàn)有技術(shù)中因?qū)Ρ仍糄ex文件和新的Dex文件的二進(jìn)制數(shù)據(jù)流,將二進(jìn)制數(shù)據(jù)流中所有發(fā)生改變的二進(jìn)制串均作為了差異信息,導(dǎo)致生成的差異信息存在大量冗余的問題,本發(fā)明實(shí)施例提供了一種差異信息文件生成及應(yīng)用方法、裝置。所述技術(shù)方案如下:第一方面,提供了一種差異信息文件生成方法,所述方法包括:獲取原始安裝包文件和升級(jí)安裝包文件,所述升級(jí)安裝包文件是原始安裝包文件升級(jí)后的安裝包文件,所述原始安裝包文件和所述升級(jí)安裝包文件均包括n個(gè)節(jié),每個(gè)節(jié)中包括至少一個(gè)數(shù)據(jù)項(xiàng);對(duì)于所述原始安裝包文件中的第i節(jié),對(duì)比所述第i節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)以及所述第i節(jié)在所述升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng),得到所述第i節(jié)的差異信息,i的初始值為1;將所述第i節(jié)的差異信息添加至差異信息文件中;當(dāng)i小于n時(shí),則令i=i+1,重新執(zhí)行對(duì)比所述第i節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)以及所述第i節(jié)在所述升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng)的步驟;當(dāng)i等于n時(shí),得到所述差異信息文件。第二方面,提供了一種差異信息文件應(yīng)用方法,所述方法包括:獲取原始安裝包文件和差異信息文件,所述差異信息文件包含所述原始安裝包文件和與所述原始安裝包對(duì)應(yīng)的升級(jí)安裝包文件之間的差異信息,所述原始安裝包文件包括n個(gè)節(jié),每個(gè)節(jié)中包括至少一個(gè)數(shù)據(jù)項(xiàng);對(duì)于所述原始安裝包文件中的第i原始節(jié),根據(jù)所述第i原始節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)、所述差異信息文件中所述第i原始節(jié)的差異信息,生成與所述第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié),i的初始值為1;將所述第i升級(jí)節(jié)添加至所述升級(jí)安裝包文件中;當(dāng)i小于n時(shí),則令i=i+1,重新執(zhí)行根據(jù)所述第i原始節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)、所述差異信息文件中所述第i原始節(jié)的差異信息,生成與所述第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié)的步驟;當(dāng)i等于n時(shí),得到所述升級(jí)安裝包文件。第三方面,提供了一種差異信息文件生成裝置,所述裝置包括:獲取模塊,用于獲取原始安裝包文件和升級(jí)安裝包文件,所述升級(jí)安裝包文件是原始安裝包文件升級(jí)后的安裝包文件,所述原始安裝包文件和所述升級(jí)安裝包文件均包括n個(gè)節(jié),每個(gè)節(jié)中包括至少一個(gè)數(shù)據(jù)項(xiàng);對(duì)比模塊,用于對(duì)于所述原始安裝包文件中的第i節(jié),對(duì)比所述第i節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)以及所述第i節(jié)在所述升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng),得到所述第i節(jié)的差異信息,i的初始值為1;添加模塊,用于將所述對(duì)比模塊對(duì)比得到的所述第i節(jié)的差異信息添加至差異信息文件中;所述對(duì)比模塊,還用于當(dāng)i小于n時(shí),則令i=i+1,重新執(zhí)行對(duì)比所述第i節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)以及所述第i節(jié)在所述升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng)的步驟;當(dāng)i等于n時(shí),得到所述差異信息文件。第四方面,提供了一種差異信息文件應(yīng)用裝置,所述裝置包括:獲取模塊,用于獲取原始安裝包文件和差異信息文件,所述差異信息文件包含所述原始安裝包文件和與所述原始安裝包對(duì)應(yīng)的升級(jí)安裝包文件之間的差異信息,所述原始安裝包文件包括n個(gè)節(jié),每個(gè)節(jié)中包括至少一個(gè)數(shù)據(jù)項(xiàng);生成模塊,用于對(duì)于所述原始安裝包文件中的第i原始節(jié),根據(jù)所述第i原始節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)、所述差異信息文件中所述第i原始節(jié)的差異信息,生成與所述第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié),i的初始值為1;添加模塊,用于將所述生成模塊得到的所述第i升級(jí)節(jié)添加至所述升級(jí)安裝包文件中;所述生成模塊,還用于當(dāng)i小于n時(shí),則令i=i+1,重新執(zhí)行根據(jù)所述第i原始節(jié)在所述原始安裝包文件中的數(shù)據(jù)項(xiàng)、所述差異信息文件中所述第i原始節(jié)的差異信息,生成與所述第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié)的步驟;當(dāng)i等于n時(shí),得到所述升級(jí)安裝包文件。本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:通過將安裝包文件中的數(shù)據(jù)按節(jié)組織,不同節(jié)之間的數(shù)據(jù)項(xiàng)通過索引號(hào)或文件偏移進(jìn)行引用,對(duì)于每一節(jié),對(duì)比該節(jié)在原始安裝包文件和升級(jí)安裝包文件中的差異信息,將該節(jié)的差異信息添加至差異信息文件中;由于安裝包文件中的數(shù)據(jù)按節(jié)組織,依序?qū)υ及惭b包文件和升級(jí)安裝包文件中同一個(gè)節(jié)的數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比,確定出各個(gè)節(jié)在兩個(gè)文件之間的差異,無需記錄相同的數(shù)據(jù),優(yōu)化了原始安裝包文件和升級(jí)安裝包文件之間的差異信息,減少了差異信息文件的大小。附圖說明為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明部分實(shí)施例提供的安裝包文件的結(jié)構(gòu)示意圖;圖2A是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件生成方法的流程圖;圖2B是本發(fā)明一個(gè)實(shí)施例中提供的獲取第i節(jié)的差異信息時(shí)的流程圖;圖2C是本發(fā)明一個(gè)實(shí)施例中提供的節(jié)A和節(jié)B的結(jié)構(gòu)以及引用關(guān)系的結(jié)構(gòu)示意圖;圖2D是本發(fā)明一個(gè)實(shí)施例中提供的節(jié)A所對(duì)應(yīng)的第一數(shù)組和第二數(shù)組的示意圖;圖2E是本發(fā)明一個(gè)實(shí)施例中提供的節(jié)B所對(duì)應(yīng)的第一數(shù)組和第二數(shù)組的示意圖;圖3A是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件應(yīng)用方法的流程圖;圖3B是本發(fā)明一個(gè)實(shí)施例中提供的獲取第i升級(jí)節(jié)時(shí)的流程圖;圖3C是本發(fā)明一個(gè)實(shí)施例中提供的模擬生成節(jié)A的新節(jié)點(diǎn)時(shí)的流程示意圖;圖3D是本發(fā)明一個(gè)實(shí)施例中提供的模擬生成節(jié)B的新節(jié)點(diǎn)時(shí)的流程示意圖;圖4是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件校驗(yàn)方法的流程圖;圖5是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件生成裝置的結(jié)構(gòu)示意圖;圖6是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件應(yīng)用裝置的結(jié)構(gòu)示意圖;圖7是本發(fā)明一個(gè)實(shí)施例中提供的服務(wù)器的結(jié)構(gòu)示意圖;圖8是本發(fā)明一個(gè)實(shí)施例中提供的終端的結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。在本申請(qǐng)中,為了盡可能的減少差異信息文件的大小,將安裝包文件中的數(shù)據(jù)按節(jié)(Section)進(jìn)行了組織和劃分。這里所講的安裝包是具有節(jié)和數(shù)據(jù)項(xiàng)組織方式的文件,比如按照節(jié)和數(shù)據(jù)項(xiàng)組織的Dex文件。安裝包文件的結(jié)構(gòu)請(qǐng)參見圖1所示,每個(gè)節(jié)包括至少一個(gè)數(shù)據(jù)項(xiàng),每個(gè)數(shù)據(jù)項(xiàng)具備的屬性包括索引號(hào)和文件偏移中的前一種或兩種,索引號(hào)是對(duì)同一個(gè)節(jié)中的數(shù)據(jù)項(xiàng)進(jìn)行的編號(hào),文件偏移指示數(shù)據(jù)項(xiàng)引用的其他節(jié)的數(shù)據(jù)項(xiàng),文件偏移中包括所引用的數(shù)據(jù)項(xiàng)的索引號(hào)。當(dāng)一個(gè)節(jié)未引用其他節(jié)時(shí),該節(jié)的數(shù)據(jù)項(xiàng)的文件偏移屬性為空,也即,該節(jié)的數(shù)據(jù)項(xiàng)的屬性不包含文件偏移屬性。在實(shí)際應(yīng)用中,服務(wù)器在應(yīng)用存在bug時(shí),需要通過下發(fā)熱補(bǔ)丁文件(差異信息文件)來修復(fù)。首先,服務(wù)器使用安裝包補(bǔ)丁生成(DexPatchGenerator)邏輯對(duì)應(yīng)用安裝包的原始安裝包文件和升級(jí)后的新的安裝包文件進(jìn)行對(duì)比,利用對(duì)比得到的差異信息生成差異信息文件;然后,由安裝包補(bǔ)丁應(yīng)用(DexPatchApplier)邏輯根據(jù)原始安裝包文件和差異信息文件模擬一次新安裝包文件的生成過程;最后,由安裝包類比較(DexClassComparator)邏輯校驗(yàn)DexPatchGenerator邏輯和DexPatchApplier邏輯的正確性。此后,服務(wù)器在編譯生成熱補(bǔ)丁文件后,通過版本管理系統(tǒng)的熱補(bǔ)丁下發(fā)功能將該熱補(bǔ)丁文件下發(fā)到用戶的手機(jī)客戶端上,此時(shí)手機(jī)客戶端讀取原始安裝包中的原始安裝包文件和熱補(bǔ)丁文件,生成新安裝包文件并使其生效,其中新安裝包文件由手機(jī)上運(yùn)行的DexPatchApplier邏輯負(fù)責(zé)生成。服務(wù)器利用安裝包補(bǔ)丁生成邏輯生成差異信息文件的過程可以參見圖2A和圖2B中的各個(gè)步驟。圖2A是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件生成方法的流程圖,該差異信息文件生成應(yīng)用于服務(wù)器中,該差異信息文件生成方法包括:步驟210,獲取原始安裝包文件和升級(jí)安裝包文件。升級(jí)安裝包文件是原始安裝包文件升級(jí)后的安裝包文件,原始安裝包文件和升級(jí)安裝包文件均包括n個(gè)節(jié),每個(gè)節(jié)中包括至少一個(gè)數(shù)據(jù)項(xiàng)。步驟220,對(duì)于原始安裝包文件中的第i節(jié),對(duì)比第i節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)以及第i節(jié)在升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng),得到第i節(jié)的差異信息。i的初始值為1。對(duì)于原始安裝包文件中的第i節(jié),對(duì)比第i節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)以及該節(jié)在升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng),得到第i節(jié)的差異信息。當(dāng)應(yīng)用程序的線上版本(即原始安裝包對(duì)應(yīng)的版本)存在bug時(shí),研發(fā)人員根據(jù)bug確定修復(fù)bug的修復(fù)邏輯,根據(jù)修復(fù)邏輯修正原始安裝包文件,得到新安裝包文件,這里將該新安裝包文件記為升級(jí)安裝包文件。對(duì)于原始安裝包文件中的第i節(jié),原始安裝包文件和升級(jí)安裝包文件中均存在對(duì)應(yīng)的數(shù)據(jù)項(xiàng),因此可以對(duì)比第i節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)以及第i節(jié)在升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng),得到第i節(jié)的差異信息。步驟230,將第i節(jié)的差異信息添加至差異信息文件中。步驟240,當(dāng)i小于n時(shí),則令i=i+1,重新執(zhí)行對(duì)比第i節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)以及第i節(jié)在升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng)的步驟。當(dāng)i小于n時(shí),也即原始安裝包文件存在尚未處理的節(jié)時(shí),獲取原始安裝包文件中需要處理的下一節(jié),對(duì)獲取到的該下一節(jié),重復(fù)執(zhí)行步驟220至步驟230的步驟。步驟250,當(dāng)i等于n時(shí),得到差異信息文件。當(dāng)i等于n時(shí),也即原始安裝包文件不存在尚未處理的節(jié)時(shí),表明原始安裝包文件中所有的節(jié)均被處理過,此時(shí)則結(jié)束對(duì)比,這時(shí)差異信息文件即包含了各個(gè)具備差異的節(jié)的差異信息。綜上所述,本發(fā)明實(shí)施例提供的差異信息文件生成方法,通過將安裝包文件中的數(shù)據(jù)按節(jié)組織,不同節(jié)之間的數(shù)據(jù)項(xiàng)通過索引號(hào)或文件偏移進(jìn)行引用,對(duì)于每一節(jié),對(duì)比該節(jié)在原始安裝包文件和新安裝包文件中的差異信息,將該節(jié)的差異信息添加至差異信息文件中;由于安裝包文件中的數(shù)據(jù)按節(jié)組織,依序?qū)υ及惭b包文件和新安裝包文件中同一個(gè)節(jié)的數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比,確定出各個(gè)節(jié)在兩個(gè)文件之間的差異,無需記錄相同的數(shù)據(jù),優(yōu)化了原始安裝包文件和新安裝包文件之間的差異信息,減少了差異信息文件的大小。在實(shí)際實(shí)現(xiàn)時(shí),第i節(jié)的差異信息可以包括第i節(jié)的操作序列和第i節(jié)的修正序列。第i節(jié)的操作序列可以包括第i節(jié)在原始安裝包文件中被刪除的數(shù)據(jù)項(xiàng),和/或,第i節(jié)在升級(jí)安裝包文件中增加的數(shù)據(jù)項(xiàng)。其中,這里所講的被刪除的數(shù)據(jù)項(xiàng)位于原始安裝包文件中的,但不位于升級(jí)安裝包文件中;這里所講的增加的數(shù)據(jù)項(xiàng)不位于原始安裝包文件中的,但位于升級(jí)安裝包文件中。當(dāng)?shù)趇節(jié)的數(shù)據(jù)項(xiàng)存在被刪除的數(shù)據(jù)項(xiàng)或增加的數(shù)據(jù)項(xiàng)時(shí),會(huì)導(dǎo)致第i節(jié)中排列在被刪除的數(shù)據(jù)項(xiàng)或增加的數(shù)據(jù)項(xiàng)之后的其他數(shù)據(jù)項(xiàng)的索引號(hào)發(fā)生變化,因此還需要記錄索引號(hào)變化的數(shù)據(jù)項(xiàng)的修正數(shù)據(jù),以保證可以實(shí)現(xiàn)對(duì)引用第i節(jié)的其他節(jié)的數(shù)據(jù)項(xiàng)進(jìn)行修正。因此,第i節(jié)的修正序列包括第i節(jié)在原始安裝包文件和升級(jí)安裝包文件中相同數(shù)據(jù)項(xiàng)的修正數(shù)據(jù)。這里所講的數(shù)據(jù)項(xiàng)的修正數(shù)據(jù)限定了以下前一種或兩種:數(shù)據(jù)項(xiàng)在原始安裝包文件的索引號(hào)以及在升級(jí)安裝包文件的索引號(hào)之間的對(duì)應(yīng)關(guān)系,和,數(shù)據(jù)項(xiàng)在原始安裝包文件的文件偏移以及在升級(jí)安裝包文件的文件偏移之間的對(duì)應(yīng)關(guān)系。也就是說,當(dāng)?shù)趇節(jié)不引用其他節(jié)時(shí),該數(shù)據(jù)項(xiàng)的修正數(shù)據(jù)限定了該數(shù)據(jù)項(xiàng)在原始安裝包文件的索引號(hào)以及在升級(jí)安裝包文件的索引號(hào)之間的對(duì)應(yīng)關(guān)系;而,當(dāng)?shù)趇節(jié)引用了其他節(jié)時(shí),該數(shù)據(jù)項(xiàng)的修正數(shù)據(jù)還限定了該數(shù)據(jù)項(xiàng)在原始安裝包文件的文件偏移以及在升級(jí)安裝包文件的文件偏移之間的對(duì)應(yīng)關(guān)系。上述步驟220在實(shí)際實(shí)現(xiàn)時(shí),為了簡化對(duì)比流程,可以將第i節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)排序后添加至第一數(shù)組,將第i節(jié)在升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng)排序后添加至第二數(shù)組,然后對(duì)比第一數(shù)組和第二數(shù)組,將第一數(shù)組中被刪除的數(shù)據(jù)項(xiàng)以及第二數(shù)組中增加的數(shù)據(jù)項(xiàng)添加至第i節(jié)的操作序列中,將利用第一數(shù)組和第二數(shù)組中相同的數(shù)據(jù)項(xiàng)生成的修正數(shù)據(jù)添加至第i節(jié)的第一修正序列中,將該操作序列和第一修正序列作為第i節(jié)的差異信息,其中,第一修正序列用于對(duì)引用第i節(jié)的其他節(jié)中的數(shù)據(jù)項(xiàng)進(jìn)行修正??蛇x的,在對(duì)數(shù)據(jù)項(xiàng)進(jìn)行排序時(shí),需要按照預(yù)定排序方式,使得第一數(shù)組的排序方式和第二數(shù)組的排序方式相同,以保證對(duì)比的準(zhǔn)確性。一般來講,對(duì)于同一節(jié)中的第一數(shù)據(jù)項(xiàng)和第二數(shù)據(jù)項(xiàng),當(dāng)?shù)谝粩?shù)據(jù)項(xiàng)的索引號(hào)小于第二數(shù)據(jù)項(xiàng)的索引號(hào)時(shí),第一數(shù)據(jù)項(xiàng)小于或等于第二數(shù)據(jù)項(xiàng),對(duì)應(yīng)的,預(yù)定排序方式可以包括:首先,按照數(shù)據(jù)項(xiàng)遞增的順序排列各個(gè)數(shù)據(jù)項(xiàng);其次,在數(shù)據(jù)項(xiàng)相同時(shí),按照數(shù)據(jù)項(xiàng)的索引號(hào)遞增的順序排列各個(gè)數(shù)據(jù)項(xiàng)。也就是說,排序后的任兩個(gè)相鄰的數(shù)據(jù)項(xiàng),在前數(shù)據(jù)項(xiàng)的索引號(hào)小于在后數(shù)據(jù)項(xiàng)的索引號(hào),且在前數(shù)據(jù)項(xiàng)的值小于或等于在后數(shù)據(jù)項(xiàng)的值。由于上述預(yù)定排序方式中需要根據(jù)索引號(hào)進(jìn)行排序,因此若需要處理的第i節(jié)引用其他節(jié)時(shí),第i節(jié)中的數(shù)據(jù)項(xiàng)包含文件偏移屬性,因此需要所引用的其他節(jié)的修正序列修正第i節(jié)中的數(shù)據(jù)項(xiàng),然后按照預(yù)定排序方式對(duì)修正后的數(shù)據(jù)項(xiàng)進(jìn)行排序;而若需要處理的第i節(jié)未引用其他節(jié)時(shí),可以直接對(duì)數(shù)據(jù)項(xiàng)按照該預(yù)定排序方式進(jìn)行排序。在原始安裝包文件中第i節(jié)的數(shù)據(jù)項(xiàng)按序添加至第一數(shù)組,且升級(jí)安裝包文件中第i節(jié)的數(shù)據(jù)項(xiàng)按序添加至第二數(shù)組后,則可以對(duì)比第一數(shù)組和第二數(shù)組,以得到兩個(gè)數(shù)組之間的差異,在對(duì)比第一數(shù)組和第二數(shù)組時(shí),可以參見如下圖2B中所示的步驟。圖2B是本發(fā)明一個(gè)實(shí)施例中提供的獲取第i節(jié)的差異信息時(shí)的流程圖,服務(wù)器在獲取第i節(jié)的差異信息時(shí),包括以下步驟:步驟221,從第一數(shù)組中讀取第j數(shù)據(jù)項(xiàng)。j的初始值為1。在實(shí)際實(shí)現(xiàn)時(shí),可以在第一數(shù)組定義第一指針,第一指針依序從第一數(shù)組的第一個(gè)數(shù)據(jù)項(xiàng)開始進(jìn)行讀取。步驟222,從第二數(shù)組中讀取第k數(shù)據(jù)項(xiàng)。k的初始值為1。在實(shí)際實(shí)現(xiàn)時(shí),可以在第二數(shù)組定義第二指針,第二指針依序從第二數(shù)組的第一個(gè)數(shù)據(jù)項(xiàng)開始進(jìn)行讀取。從第一數(shù)組中讀取第j數(shù)據(jù)項(xiàng)和從第二數(shù)組中讀取第k數(shù)據(jù)項(xiàng)的大小。步驟223,在第一數(shù)組中的第j數(shù)據(jù)項(xiàng)小于第二數(shù)組中的第k數(shù)據(jù)項(xiàng)時(shí),將第j數(shù)據(jù)項(xiàng)作為刪除項(xiàng)添加至操作序列,令j=j(luò)+1,重復(fù)執(zhí)行從第一數(shù)組中讀取第j數(shù)據(jù)項(xiàng)的步驟。在第一數(shù)組中的第j數(shù)據(jù)項(xiàng)小于第二數(shù)組中的第k數(shù)據(jù)項(xiàng)時(shí),將第j數(shù)據(jù)項(xiàng)作為刪除項(xiàng)存入操作序列,將j加1,也即將第一指針向后移動(dòng)一位,指向第一數(shù)組中的第j+1數(shù)據(jù)項(xiàng),然后將讀取出的該第j+1數(shù)據(jù)項(xiàng)與第k數(shù)據(jù)項(xiàng)進(jìn)行比較。步驟224,在第一數(shù)組中的第j數(shù)據(jù)項(xiàng)大于第二數(shù)組中的第k數(shù)據(jù)項(xiàng)時(shí),將第k數(shù)據(jù)項(xiàng)作為新增項(xiàng)添加至該操作序列,令k=k+1,重復(fù)執(zhí)行從第二數(shù)組中讀取第k數(shù)據(jù)項(xiàng)的步驟。在第一數(shù)組中的第j數(shù)據(jù)項(xiàng)大于第二數(shù)組中的第k數(shù)據(jù)項(xiàng)時(shí),將第k數(shù)據(jù)項(xiàng)作為新增項(xiàng)存入操作序列,將k加1,也即將第二指針向后移動(dòng)一位,指向第二數(shù)組中的第k+1數(shù)據(jù)項(xiàng),然后將讀取出的該第k+1數(shù)據(jù)項(xiàng)與第j數(shù)據(jù)項(xiàng)的數(shù)據(jù)進(jìn)行比較。步驟225,在第一數(shù)組中的第j數(shù)據(jù)項(xiàng)等于第二數(shù)組中的第j個(gè)數(shù)據(jù)項(xiàng)時(shí),根據(jù)第j數(shù)據(jù)項(xiàng)和第k數(shù)據(jù)項(xiàng)記錄修正數(shù)據(jù),將該修正數(shù)據(jù)添加至第i節(jié)的第一修正序列中,令j=j(luò)+1、k=k+1,重復(fù)執(zhí)行該從該第一數(shù)組中讀取第j數(shù)據(jù)項(xiàng),從該第二數(shù)組中讀取第k數(shù)據(jù)項(xiàng)的步驟。在第一數(shù)組中的第j數(shù)據(jù)項(xiàng)等于第二數(shù)組中的第k數(shù)據(jù)項(xiàng)時(shí),將第k數(shù)據(jù)項(xiàng)作為新增項(xiàng)存入操作序列,將k加1,也即將第二指針向后移動(dòng)一位,指向第k+1數(shù)據(jù)項(xiàng),然后將讀取出的第k+1數(shù)據(jù)項(xiàng)與第j數(shù)據(jù)項(xiàng)的數(shù)據(jù)進(jìn)行比較。服務(wù)器在根據(jù)第j數(shù)據(jù)項(xiàng)和第k數(shù)據(jù)項(xiàng)記錄修正數(shù)據(jù)時(shí),當(dāng)?shù)趇節(jié)中的數(shù)據(jù)項(xiàng)的屬性不包括文件偏移時(shí),記錄第j數(shù)據(jù)項(xiàng)的索引號(hào)與該第k數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng);當(dāng)?shù)趇節(jié)中的數(shù)據(jù)項(xiàng)的屬性包括文件偏移時(shí),記錄第j數(shù)據(jù)項(xiàng)的索引號(hào)與第k數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng),記錄第j數(shù)據(jù)項(xiàng)的文件偏移等價(jià)于第k數(shù)據(jù)項(xiàng)的文件偏移。步驟226,當(dāng)該第一數(shù)組中的數(shù)據(jù)項(xiàng)全部被讀取完時(shí),將該第二數(shù)組中剩余的數(shù)據(jù)項(xiàng)作為新增項(xiàng)添加至該操作序列中。這里的操作序列為第i節(jié)的操作序列。步驟227,當(dāng)該第二數(shù)組中的數(shù)據(jù)項(xiàng)全部被讀取完時(shí),將該第一數(shù)組中剩余的數(shù)據(jù)項(xiàng)作為刪除項(xiàng)添加至該操作序列中。請(qǐng)參見圖2C所示,在圖2C的(1)中為原始安裝包文件中的節(jié)A和節(jié)B的構(gòu)成以及引用關(guān)系,圖2C中的(2)中為升級(jí)安裝包文件中的節(jié)A和節(jié)B的構(gòu)成以及引用關(guān)系,原始安裝包文件中的節(jié)A為原始節(jié)A,原始安裝包文件中的節(jié)B為原始節(jié)B,升級(jí)安裝包文件中的節(jié)A為升級(jí)節(jié)A,升級(jí)安裝包文件中的節(jié)B為升級(jí)節(jié)B。下面結(jié)合圖2C、圖2D和圖2E對(duì)節(jié)A和節(jié)B的處理進(jìn)行說明。圖2D是本發(fā)明一個(gè)實(shí)施例中提供的節(jié)A所對(duì)應(yīng)的第一數(shù)組和第二數(shù)組的示意圖,在圖2D中,第一數(shù)組包含排序后的原始節(jié)A的數(shù)據(jù)項(xiàng),第二數(shù)組包含排序后的升級(jí)節(jié)A的數(shù)據(jù)項(xiàng),從第一數(shù)組的第一個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為0)以及第二數(shù)組的第一個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為0)進(jìn)行對(duì)比,第一數(shù)組的第一個(gè)數(shù)據(jù)項(xiàng)和第二數(shù)組的第一個(gè)數(shù)據(jù)項(xiàng)相同,記錄修正數(shù)據(jù):原始節(jié)A中索引號(hào)0與升級(jí)節(jié)A中索引號(hào)0對(duì)應(yīng)。繼續(xù)對(duì)比第一數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為1)和第二數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為1),此時(shí)第一數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)b小于第二數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)c,判定第一數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng)小于第二數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng),將第一數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng)認(rèn)定為刪除項(xiàng)增加至操作序列中。繼續(xù)讀取第一數(shù)組的第三個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為2),將該第三個(gè)數(shù)據(jù)項(xiàng)與第二數(shù)組的第二個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為1)進(jìn)行對(duì)比,兩者的數(shù)值均為c,此時(shí)認(rèn)為兩者相同,記錄修正數(shù)據(jù):原始節(jié)A中索引號(hào)2與升級(jí)節(jié)A中索引號(hào)1對(duì)應(yīng)。繼續(xù)讀取第一數(shù)組的第四個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為3),和第二數(shù)組的第三個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為2),將兩者進(jìn)行對(duì)比,由于兩者的數(shù)值均為d,此時(shí)認(rèn)為兩者相同,記錄修正數(shù)據(jù):原始節(jié)A中索引號(hào)3與升級(jí)節(jié)A中索引號(hào)2對(duì)應(yīng)。繼續(xù)讀取第一數(shù)組的第五個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為4),和第二數(shù)組的第四個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為3),將兩者進(jìn)行對(duì)比,由于兩者的數(shù)值均為e,此時(shí)認(rèn)為兩者相同,記錄修正數(shù)據(jù):原始節(jié)A中索引號(hào)4與升級(jí)節(jié)A中索引號(hào)3對(duì)應(yīng)。繼續(xù)讀取第一數(shù)組的第六個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為5),和第二數(shù)組的第五個(gè)數(shù)據(jù)項(xiàng)(索引號(hào)為4),將兩者進(jìn)行對(duì)比,由于第一數(shù)組的第六個(gè)數(shù)據(jù)項(xiàng)的數(shù)值g大于第二數(shù)組的第五個(gè)數(shù)據(jù)項(xiàng)的數(shù)值f,此時(shí)表明第二數(shù)組的第五個(gè)數(shù)據(jù)項(xiàng)為新增項(xiàng),將該新增項(xiàng)添加至操作序列。由上述對(duì)比可知,對(duì)節(jié)A的處理過程中生成的操作序列為:刪除b、索引號(hào)為1;新增f,索引號(hào)為4。對(duì)節(jié)A的處理過程中生成的第一修正序列為:原始節(jié)A中的索引號(hào)2與升級(jí)節(jié)A中索引號(hào)1對(duì)應(yīng);原始節(jié)A中的索引號(hào)3與升級(jí)節(jié)A中索引號(hào)2對(duì)應(yīng);原始節(jié)A中的索引號(hào)4與升級(jí)節(jié)A中索引號(hào)3對(duì)應(yīng)。圖2E是本發(fā)明一個(gè)實(shí)施例中提供的節(jié)B所對(duì)應(yīng)的第一數(shù)組和第二數(shù)組的示意圖,由于節(jié)B中的數(shù)據(jù)項(xiàng)存在文件偏移,因此讀取原始節(jié)B時(shí)要根據(jù)節(jié)A的處理結(jié)果中的第一修正序列來進(jìn)行修正,然后再存入第一數(shù)組并排序。然后再讀取升級(jí)節(jié)B,同時(shí)也要根據(jù)第一修正序列來進(jìn)行修正,再存入第二數(shù)組并排序。由于此時(shí)原始節(jié)B和升級(jí)節(jié)B的數(shù)據(jù)項(xiàng)沒有差異,因此結(jié)束對(duì)比。綜上所述,本發(fā)明實(shí)施例按照相同的排序方式將節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)以及節(jié)在升級(jí)安裝包文件中的數(shù)據(jù)項(xiàng)進(jìn)行了排序,為對(duì)比節(jié)在原始安裝包文件和升級(jí)安裝包文件中的差異提供了理論基礎(chǔ)。在獲取到該節(jié)的操作序列后,由于修改的數(shù)據(jù)項(xiàng)的實(shí)現(xiàn)是刪除原有的數(shù)據(jù)項(xiàng),增加新的數(shù)據(jù)項(xiàng),因此在操作序列中會(huì)存儲(chǔ)有相鄰的且索引號(hào)相同的刪除項(xiàng)和新增項(xiàng),此時(shí)可以將相鄰的刪除項(xiàng)和新增項(xiàng)替換為替換頁,以減少操作序列的占用空間。在實(shí)際實(shí)現(xiàn)時(shí),步驟S1,按照預(yù)定排序方式對(duì)該節(jié)的操作序列中的數(shù)據(jù)項(xiàng)進(jìn)行排序;步驟S2,遍歷排序后的該操作序列,若相鄰的兩個(gè)數(shù)據(jù)項(xiàng)中在前數(shù)據(jù)項(xiàng)為刪除項(xiàng),在后數(shù)據(jù)項(xiàng)為新增項(xiàng),且該相鄰的兩個(gè)數(shù)據(jù)項(xiàng)的索引號(hào)相同時(shí),從該操作序列中刪除該相鄰的兩個(gè)數(shù)據(jù)項(xiàng),在刪除的位置插入數(shù)據(jù)項(xiàng)的數(shù)據(jù)與該新增項(xiàng)的數(shù)據(jù)相同的替換項(xiàng)。綜上所述,本發(fā)明實(shí)施例確定出操作序列中前后相鄰的且索引號(hào)相同的刪除項(xiàng)和新增項(xiàng),利用替換項(xiàng)替換操作序列中的刪除項(xiàng)和新增項(xiàng),因此減少了操作序列的存儲(chǔ)空間。服務(wù)器利用安裝包補(bǔ)丁應(yīng)用邏輯模擬生成升級(jí)安裝包文件,或者終端利用安裝包補(bǔ)丁應(yīng)用邏輯生成升級(jí)安裝包文件的過程可以參見圖3A和圖3B的各個(gè)步驟。圖3A是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件應(yīng)用方法的流程圖,該差異信息文件應(yīng)用方法應(yīng)用于服務(wù)器或終端中,以下以服務(wù)器為例進(jìn)行舉例說明,該差異信息文件應(yīng)用方法包括:步驟310,獲取原始安裝包文件和差異信息文件??蛇x的,在步驟310之前,服務(wù)器還可以讀取差異信息文件中記錄的原始安裝包的簽名,當(dāng)讀取出的簽名與原始安裝包的簽名相同時(shí),則執(zhí)行步驟310,否則輸出報(bào)錯(cuò)信息。差異信息文件包含原始安裝包文件和與原始安裝包對(duì)應(yīng)的升級(jí)安裝包文件之間的差異信息,原始安裝包文件包括n個(gè)原始節(jié)。本申請(qǐng)中,為了便于區(qū)分,將位于原始安裝包中的節(jié)記為原始節(jié),將升級(jí)安裝包文件中的節(jié)記為升級(jí)節(jié)。步驟320,對(duì)于原始安裝包文件中的第i原始節(jié),根據(jù)第i原始節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)、差異信息文件中第i原始節(jié)的差異信息,生成與第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié)。i的初始值為1。步驟330,將第i升級(jí)節(jié)添加至升級(jí)安裝包文件中。步驟340,當(dāng)i小于n時(shí),則令i=i+1,重新執(zhí)行根據(jù)第i原始節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)、差異信息文件中第i原始節(jié)的差異信息,生成與第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié)的步驟。步驟350,當(dāng)i等于n時(shí),得到升級(jí)安裝包文件。綜上所述,本發(fā)明實(shí)施例提供的差異信息文件應(yīng)用方法,通過利用原始安裝包文件以及與原始安裝包文件和升級(jí)安裝包文件對(duì)應(yīng)的差異信息文件,生成與原始安裝包文件對(duì)應(yīng)的升級(jí)安裝包文件,由于差異信息文件小于升級(jí)安裝包的大小,因此節(jié)省了下載升級(jí)安裝包的時(shí)間和流量。服務(wù)器或終端在根據(jù)第i原始節(jié)在原始安裝包文件中的數(shù)據(jù)項(xiàng)、差異信息文件中第i原始節(jié)的差異信息,生成與第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié)時(shí),可以參見圖3B中的各個(gè)步驟。圖3B是本發(fā)明一個(gè)實(shí)施例中提供的獲取第i升級(jí)節(jié)時(shí)的流程圖,服務(wù)器或終端在獲取第i升級(jí)節(jié)時(shí),包括以下步驟:步驟321,對(duì)于第i原始節(jié)中的第j數(shù)據(jù)項(xiàng),讀取原始安裝包文件中第i原始節(jié)的第j數(shù)據(jù)項(xiàng)。i和j的初始值為1。步驟322,當(dāng)?shù)趈數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)第一修正序列中的第一修正數(shù)據(jù)時(shí),將第j個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)加入第i升級(jí)節(jié),根據(jù)第一修正數(shù)據(jù)修正第i升級(jí)節(jié)中加入的第j數(shù)據(jù)項(xiàng)的屬性,記錄第二修正數(shù)據(jù),將第二修正數(shù)據(jù)添加至第二修正序列中。第i原始節(jié)的差異信息包括第i原始節(jié)的操作序列和第一修正序列,其中:第i原始節(jié)的操作序列包括原始安裝包文件中第i原始節(jié)被替換的數(shù)據(jù)項(xiàng),和/或,第一安裝包文件中第i原始節(jié)增加的數(shù)據(jù)項(xiàng)。第i原始節(jié)的第一修正序列包括第i原始節(jié)在原始安裝包文件和升級(jí)安裝包文件中相同數(shù)據(jù)項(xiàng)的第一修正數(shù)據(jù),數(shù)據(jù)項(xiàng)的第一修正數(shù)據(jù)限定了以下前一種或兩種:數(shù)據(jù)項(xiàng)在所述原始安裝包文件的索引號(hào)以及在升級(jí)安裝包文件的索引號(hào)之間的對(duì)應(yīng)關(guān)系,和,數(shù)據(jù)項(xiàng)在原始安裝包文件的文件偏移以及在升級(jí)安裝包文件的文件偏移之間的對(duì)應(yīng)關(guān)系。服務(wù)器在根據(jù)第一修正數(shù)據(jù)修正第i升級(jí)節(jié)中加入的第j數(shù)據(jù)項(xiàng)的屬性時(shí),當(dāng)?shù)趇原始節(jié)中的數(shù)據(jù)項(xiàng)的屬性不包括文件偏移時(shí),根據(jù)第一修正數(shù)據(jù)修正第i升級(jí)節(jié)中加入的第j數(shù)據(jù)項(xiàng)的索引號(hào)屬性;當(dāng)?shù)趇原始節(jié)中的數(shù)據(jù)項(xiàng)的屬性包括文件偏移時(shí),根據(jù)第一修正數(shù)據(jù)修正第i升級(jí)節(jié)中加入的第j數(shù)據(jù)項(xiàng)的索引號(hào)屬性和文件偏移屬性。當(dāng)其他原始節(jié)引用第i原始節(jié)時(shí),由于第i原始節(jié)數(shù)據(jù)項(xiàng)的屬性被進(jìn)行了修正,修正過程中會(huì)修改數(shù)據(jù)項(xiàng)的索引號(hào)和文件偏移,這會(huì)導(dǎo)致應(yīng)用該第i原始節(jié)的其他節(jié)的屬性也需要對(duì)應(yīng)修正,因此第i原始節(jié)在修正后,需要記錄修正數(shù)據(jù),將修正數(shù)據(jù)作為第二修正數(shù)據(jù),并將第二修正數(shù)據(jù)添加至第二修正序列中,以便于引用第i節(jié)的其他原始節(jié)可以根據(jù)第二修正序列對(duì)數(shù)據(jù)項(xiàng)進(jìn)行修正。該第二修正序列用于對(duì)引用第i原始節(jié)的其他節(jié)中的數(shù)據(jù)項(xiàng)進(jìn)行修正。當(dāng)該數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)第i原始節(jié)的第一修正序列中的修正數(shù)據(jù)時(shí),表明該數(shù)據(jù)項(xiàng)不為刪除項(xiàng)也不為新增項(xiàng)或替換頁,此時(shí)可以直接將該數(shù)據(jù)項(xiàng)加入第i原始節(jié)對(duì)應(yīng)的第i升級(jí)節(jié)中。每次向第i升級(jí)節(jié)中加入第j數(shù)據(jù)項(xiàng)的數(shù)據(jù)時(shí),均在第i升級(jí)節(jié)中已存儲(chǔ)的數(shù)據(jù)項(xiàng)的后面加入數(shù)據(jù)項(xiàng)。第j數(shù)據(jù)項(xiàng)的數(shù)據(jù)即為第j數(shù)據(jù)項(xiàng)本身的數(shù)據(jù)。步驟323,當(dāng)?shù)趈數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)第i升級(jí)節(jié)的操作序列中的新增項(xiàng)時(shí),將該新增項(xiàng)的數(shù)據(jù)加入與第i升級(jí)節(jié)中。新增項(xiàng)的數(shù)據(jù)即為新增項(xiàng)本身的數(shù)據(jù)。步驟324,當(dāng)?shù)趈數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)第i升級(jí)節(jié)的操作序列中的替換項(xiàng)時(shí),將該替換項(xiàng)的數(shù)據(jù)加入與第i升級(jí)節(jié)中。替換項(xiàng)的數(shù)據(jù)即為替換項(xiàng)本身的數(shù)據(jù)。步驟325,當(dāng)?shù)趇原始節(jié)存在尚未處理的數(shù)據(jù)項(xiàng)時(shí),則令i=i+1,重新執(zhí)行讀取原始安裝包文件中第i原始節(jié)的第j數(shù)據(jù)項(xiàng)的步驟。步驟326,當(dāng)?shù)趇原始節(jié)不存在尚未處理的數(shù)據(jù)項(xiàng),且第i原始節(jié)的操作序列的數(shù)據(jù)項(xiàng)均被添加至第i升級(jí)節(jié)時(shí),得到第i升級(jí)節(jié)。步驟327,在得到該原始安裝包文件中所有原始節(jié)的升級(jí)節(jié)時(shí),根據(jù)所有升級(jí)節(jié)的新節(jié)生成與該原始安裝包文件對(duì)應(yīng)的升級(jí)安裝包文件。請(qǐng)參見圖3C所示,操作序列中數(shù)據(jù)為b的數(shù)據(jù)項(xiàng)是刪除項(xiàng),數(shù)據(jù)是f的數(shù)據(jù)項(xiàng)是增加項(xiàng),第一修正序列中的第一修正數(shù)據(jù)包括:原始節(jié)A的數(shù)據(jù)項(xiàng)索引號(hào)2與升級(jí)節(jié)A的數(shù)據(jù)項(xiàng)索引號(hào)1對(duì)應(yīng)、原始節(jié)A的數(shù)據(jù)項(xiàng)索引號(hào)3與升級(jí)節(jié)A的數(shù)據(jù)項(xiàng)索引號(hào)2對(duì)應(yīng)、原始節(jié)A的數(shù)據(jù)項(xiàng)索引號(hào)4與升級(jí)節(jié)A的數(shù)據(jù)項(xiàng)索引號(hào)3對(duì)應(yīng)等。在模擬生成升級(jí)節(jié)A的過程中,對(duì)于原始節(jié)A的第j數(shù)據(jù)項(xiàng),如果第j數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)原始節(jié)A的操作序列中的刪除項(xiàng)時(shí),則不將第j數(shù)據(jù)項(xiàng)添加至升級(jí)節(jié)A中,比如數(shù)據(jù)為b、索引號(hào)為1的數(shù)據(jù)項(xiàng)。如果第j數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)操作序列中的升級(jí)增項(xiàng)或替換項(xiàng)時(shí),則將第j數(shù)據(jù)添加至升級(jí)節(jié)中,比如數(shù)據(jù)為f、索引號(hào)為5的數(shù)據(jù)項(xiàng)。如果第j數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)第一修正序列中的修正數(shù)據(jù),則將第j數(shù)據(jù)項(xiàng)添加至升級(jí)節(jié)中,比如,數(shù)據(jù)為c、索引號(hào)為2的數(shù)據(jù)項(xiàng),數(shù)據(jù)為d、索引號(hào)為3的數(shù)據(jù)項(xiàng)以及數(shù)據(jù)為e、索引號(hào)為4的數(shù)據(jù)項(xiàng),由于對(duì)應(yīng)于第一修正數(shù)據(jù)的這些數(shù)據(jù)項(xiàng)被修正過,因此將這些數(shù)據(jù)項(xiàng)添加至升級(jí)節(jié)A之后,按照第一修正數(shù)據(jù)進(jìn)行修正。比如,在將原始節(jié)A中數(shù)據(jù)為c、索引號(hào)為2的數(shù)據(jù)項(xiàng)添加至升級(jí)節(jié)A中后,利用該數(shù)據(jù)項(xiàng)所對(duì)應(yīng)的第一修正數(shù)據(jù):原始節(jié)A的數(shù)據(jù)項(xiàng)索引2相當(dāng)于升級(jí)節(jié)A的數(shù)據(jù)項(xiàng)索引1,將升級(jí)節(jié)A被添加的該數(shù)據(jù)項(xiàng)的索引號(hào)屬性修正為1,并記錄修正數(shù)據(jù)作為第二修正數(shù)據(jù),將第二修正數(shù)據(jù)添加至第二修正序列。還比如,在將原始節(jié)A中數(shù)據(jù)為d、索引號(hào)為3的數(shù)據(jù)項(xiàng)添加至升級(jí)節(jié)A中后,利用該數(shù)據(jù)項(xiàng)所對(duì)應(yīng)的第一修正數(shù)據(jù):原始節(jié)A的數(shù)據(jù)項(xiàng)索引3相當(dāng)于升級(jí)節(jié)A的數(shù)據(jù)項(xiàng)索引2,將升級(jí)節(jié)A被添加的該數(shù)據(jù)項(xiàng)的索引號(hào)屬性修正為2,并記錄修正數(shù)據(jù)作為第二修正數(shù)據(jù),將第二修正數(shù)據(jù)添加至第二修正序列。請(qǐng)參見圖3D所示,類似的,在模擬生成升級(jí)節(jié)B的過程中,對(duì)于原始節(jié)A的第j數(shù)據(jù)項(xiàng),如果第j數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)原始節(jié)B的操作序列中的刪除項(xiàng)時(shí),則不將第j數(shù)據(jù)項(xiàng)添加至升級(jí)節(jié)B中。如果第j數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)原始節(jié)B的操作序列中的新增項(xiàng)或替換項(xiàng)時(shí),則將第j數(shù)據(jù)添項(xiàng)加至升級(jí)節(jié)B中。如果第j數(shù)據(jù)項(xiàng)的索引號(hào)對(duì)應(yīng)原始節(jié)B的第二修正序列中的修正數(shù)據(jù)時(shí),則將第j數(shù)據(jù)項(xiàng)添加至升級(jí)節(jié)B中,利用所引用的原始節(jié)A的第二修正序列進(jìn)行修正。比如,數(shù)據(jù)為“引用節(jié)A第2項(xiàng)”、索引號(hào)為1的數(shù)據(jù)項(xiàng),利用該數(shù)據(jù)項(xiàng)所引用的原始節(jié)A的第二修正數(shù)據(jù):原始節(jié)A的數(shù)據(jù)項(xiàng)索引2相當(dāng)于升級(jí)節(jié)A的數(shù)據(jù)項(xiàng)索引1,將升級(jí)節(jié)B被添加的該數(shù)據(jù)項(xiàng)的文件偏移屬性修正為引用節(jié)A第1項(xiàng),并記錄修正數(shù)據(jù)。綜上所述,本發(fā)明實(shí)施例通過原始安裝包文件以及利用安裝包補(bǔ)丁生成邏輯得到的差異信息文件,模擬生成升級(jí)安裝包文件,當(dāng)服務(wù)器利用安裝包補(bǔ)丁生成邏輯模擬生成升級(jí)安裝包文件時(shí),可以便于后續(xù)對(duì)該升級(jí)安裝包文件正確性的校驗(yàn);當(dāng)終端利用安裝包補(bǔ)丁生成邏輯生成升級(jí)安裝包文件時(shí),使終端在具備較小的差異信息文件時(shí),即可根據(jù)原始安裝包文件以及差異信息文件得到升級(jí)安裝包文件,在保證終端成功升級(jí)的情況下,避免了終端下載升級(jí)后的數(shù)據(jù)量較大的安裝包。服務(wù)器利用安裝包類比較邏輯進(jìn)行校驗(yàn)的過程可以參見圖4的各個(gè)步驟。圖4是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件校驗(yàn)方法的流程圖,該差異信息文件校驗(yàn)方法應(yīng)用于服務(wù)器中,該差異信息文件校驗(yàn)方法包括:步驟410,對(duì)于第一升級(jí)安裝包文件中的第i節(jié),從第二升級(jí)安裝包文件中讀取第i節(jié)中尚未對(duì)比的第j數(shù)據(jù)項(xiàng)。第一升級(jí)安裝包文件是研發(fā)人員根據(jù)原始安裝包文件存在的bug,將修改bug的邏輯進(jìn)行編譯后生成的。第二升級(jí)安裝包文件是服務(wù)器根據(jù)安裝包PatchApplier邏輯模擬生成的與原始安裝包文件對(duì)應(yīng)的升級(jí)安裝包文件。步驟420,對(duì)第j數(shù)據(jù)項(xiàng)中的各個(gè)屬性進(jìn)行對(duì)比。服務(wù)器在對(duì)第j數(shù)據(jù)項(xiàng)中的各個(gè)屬性進(jìn)行對(duì)比時(shí),對(duì)于第j數(shù)據(jù)項(xiàng)的每個(gè)需要對(duì)比的目標(biāo)屬性,獲取目標(biāo)屬性的類型;若目標(biāo)屬性為非引用類型的屬性(比如非索引號(hào)或非文件偏移)時(shí),對(duì)從第一升級(jí)安裝包文件中讀取的第j數(shù)據(jù)項(xiàng)的目標(biāo)屬性和從第二升級(jí)安裝包文件中讀取的第j數(shù)據(jù)項(xiàng)中的目標(biāo)屬性進(jìn)行對(duì)比。若目標(biāo)屬性為引用類型的屬性(比如索引號(hào)或文件偏移),根據(jù)引用類型的屬性的引用關(guān)系查找引用的原始數(shù)據(jù)項(xiàng)和升級(jí)數(shù)據(jù)項(xiàng),遞歸的對(duì)比查找到的這兩個(gè)數(shù)據(jù)項(xiàng)的屬性,將對(duì)比結(jié)果作為這兩個(gè)目標(biāo)屬性的對(duì)比結(jié)果。步驟430,在對(duì)比的屬性不同時(shí),判定第一升級(jí)安裝包文件和第二升級(jí)安裝包文件不同,結(jié)束對(duì)比。步驟440,在對(duì)比的屬性均相同時(shí),令j=j(luò)+1,重復(fù)執(zhí)行對(duì)第j數(shù)據(jù)項(xiàng)中的各個(gè)屬性進(jìn)行對(duì)比的步驟。步驟450,若第i節(jié)中的數(shù)據(jù)項(xiàng)均對(duì)比完畢,則令i=i+1,重復(fù)執(zhí)行從第二升級(jí)安裝包文件中讀取第i節(jié)中尚未對(duì)比的第j數(shù)據(jù)項(xiàng)的步驟。步驟460,當(dāng)?shù)谝簧?jí)安裝包文件中的所有節(jié)均被對(duì)比完畢,則判定第一升級(jí)安裝包文件和第二升級(jí)安裝包文件相同。綜上所述,本發(fā)明實(shí)施例通過對(duì)升級(jí)安裝包文件和升級(jí)安裝包文件進(jìn)行驗(yàn)證,可以驗(yàn)證安裝包補(bǔ)丁生成邏輯和安裝包補(bǔ)丁應(yīng)用邏輯的正確性。圖5是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件生成裝置的結(jié)構(gòu)示意圖,該差異信息文件生成裝置以軟件、硬件或軟硬件結(jié)合的方式實(shí)現(xiàn)成為服務(wù)器或服務(wù)器的一部分,該差異信息文件生成裝置包括:獲取模塊510、對(duì)比模塊520和添加模塊530。獲取模塊510至少用于實(shí)現(xiàn)步驟210的功能。對(duì)比模塊520至少用于實(shí)現(xiàn)步驟220、步驟240和步驟250中至少一個(gè)步驟的功能。添加模塊530至少用于實(shí)現(xiàn)步驟230的功能??蛇x的,對(duì)比模塊520可以包括第一添加單元、第二添加單元和對(duì)比單元。第一添加單元、第二添加單元和對(duì)比單元分別用于實(shí)現(xiàn)步驟220、步驟240和步驟250中至少一個(gè)步驟的相應(yīng)功能??蛇x的,對(duì)比單元還可以用于實(shí)現(xiàn)步驟221至步驟227中至少一個(gè)步驟的功能??蛇x的,該差異信息文件生成裝置還可以包括排序模塊和替換模塊。排序模塊至少用于實(shí)現(xiàn)步驟S1的功能。替換模塊至少用于實(shí)現(xiàn)步驟S2的功能。綜上所述,本發(fā)明實(shí)施例提供的差異信息文件生成裝置,通過將安裝包文件中的數(shù)據(jù)按節(jié)組織,不同節(jié)之間的數(shù)據(jù)項(xiàng)通過索引號(hào)或文件偏移進(jìn)行引用,對(duì)于每一節(jié),對(duì)比該節(jié)在原始安裝包文件和新安裝包文件中的差異信息,將該節(jié)的差異信息添加至差異信息文件中;由于安裝包文件中的數(shù)據(jù)按節(jié)組織,依序?qū)υ及惭b包文件和新安裝包文件中同一個(gè)節(jié)的數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比,確定出各個(gè)節(jié)在兩個(gè)文件之間的差異,無需記錄相同的數(shù)據(jù),優(yōu)化了原始安裝包文件和新安裝包文件之間的差異信息,減少了差異信息文件的大小。圖6是本發(fā)明一個(gè)實(shí)施例中提供的差異信息文件應(yīng)用裝置的結(jié)構(gòu)示意圖,該差異信息文件生成裝置以軟件、硬件或軟硬件結(jié)合的方式實(shí)現(xiàn)成為服務(wù)器或服務(wù)器的一部分,該差異信息文件應(yīng)用裝置包括:獲取模塊610、生成模塊620和添加模塊630。獲取模塊610至少用于實(shí)現(xiàn)步驟310的功能。生成模塊620至少用于實(shí)現(xiàn)步驟320、步驟340和步驟350中任一步驟的功能。添加模塊630至少用于實(shí)現(xiàn)步驟330的功能??蛇x的,生成模塊620可以包括讀取單元、第一添加單元、第二添加單元、第三添加單元和生成單元。讀取單元至少用于實(shí)現(xiàn)步驟321、步驟325和步驟326中至少一個(gè)步驟的功能。第一添加單元至少用于實(shí)現(xiàn)步驟322的功能。第二添加單元至少用于實(shí)現(xiàn)步驟323的功能。第三添加單元至少用于實(shí)現(xiàn)步驟324的功能。生成單元至少用于實(shí)現(xiàn)步驟327的功能。綜上所述,本發(fā)明實(shí)施例提供的差異信息文件應(yīng)用裝置,通過利用原始安裝包文件以及與原始安裝包文件和升級(jí)安裝包文件對(duì)應(yīng)的差異信息文件,生成與原始安裝包文件對(duì)應(yīng)的升級(jí)安裝包文件,由于差異信息文件小于升級(jí)安裝包的大小,因此節(jié)省了下載升級(jí)安裝包的時(shí)間和流量。需要說明的是:上述實(shí)施例中提供的差異信息文件生成及應(yīng)用裝置在生成和使用差異信息文件時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將服務(wù)器及終端的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的差異信息文件生成裝置與差異信息文件生成方法實(shí)施例屬于同一構(gòu)思,上述實(shí)施例提供的差異信息文件應(yīng)用裝置與差異信息文件應(yīng)用方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。圖7是本發(fā)明一個(gè)實(shí)施例中提供的服務(wù)器的結(jié)構(gòu)示意圖。該服務(wù)器可以用于實(shí)現(xiàn)上述各個(gè)實(shí)施例中的差異信息文件生成方法以及差異信息文件應(yīng)用方法。具體來講:服務(wù)器700包括中央處理單元(英文:centralprocessingunit,簡稱:CPU)701、包括隨機(jī)存取存儲(chǔ)器(英文:random-accessmemory,簡稱:RAM)702和只讀存儲(chǔ)器(英文:readonlymemory,簡稱:ROM)703的系統(tǒng)存儲(chǔ)器704,以及連接系統(tǒng)存儲(chǔ)器704和中央處理單元701的系統(tǒng)總線705。服務(wù)器700還包括幫助計(jì)算機(jī)內(nèi)的各個(gè)器件之間傳輸信息的基本輸入/輸出(英文:input/output,簡稱:I/O)系統(tǒng)706,和用于存儲(chǔ)操作系統(tǒng)713、應(yīng)用程序714和其他程序模塊715的大容量存儲(chǔ)設(shè)備707?;据斎?輸出系統(tǒng)706包括有用于顯示信息的顯示器708和用于用戶輸入信息的諸如鼠標(biāo)、鍵盤之類的輸入設(shè)備709。其中顯示器708和輸入設(shè)備709都通過連接到系統(tǒng)總線705的輸入/輸出控制器710連接到中央處理單元701?;据斎?輸出系統(tǒng)706還可以包括輸入/輸出控制器710以用于接收和處理來自鍵盤、鼠標(biāo)、或電子觸控筆等多個(gè)其他設(shè)備的輸入。類似地,輸入/輸出控制器710還提供輸出到顯示屏、打印機(jī)或其他類型的輸出設(shè)備。大容量存儲(chǔ)設(shè)備707通過連接到系統(tǒng)總線705的大容量存儲(chǔ)控制器(未示出)連接到中央處理單元701。大容量存儲(chǔ)設(shè)備707及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為服務(wù)器700提供非易失性存儲(chǔ)。也就是說,大容量存儲(chǔ)設(shè)備707可以包括諸如硬盤或者CD-ROM驅(qū)動(dòng)器之類的計(jì)算機(jī)可讀介質(zhì)(未示出)。不失一般性,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、可擦除可編程只讀寄存器(英文:erasableprogrammablereadonlymemory,簡稱:EPROM)、帶電可擦寫可編程只讀存儲(chǔ)器(英文:electricallyerasableprogrammableread-only,簡稱:EEPROM)、閃存或其他固態(tài)存儲(chǔ)其技術(shù),CD-ROM、DVD或其他光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備。當(dāng)然,本領(lǐng)域技術(shù)人員可知計(jì)算機(jī)存儲(chǔ)介質(zhì)不局限于上述幾種。上述的系統(tǒng)存儲(chǔ)器704和大容量存儲(chǔ)設(shè)備707可以統(tǒng)稱為存儲(chǔ)器。根據(jù)本發(fā)明的各種實(shí)施例,服務(wù)器700還可以通過諸如因特網(wǎng)等網(wǎng)絡(luò)連接到網(wǎng)絡(luò)上的遠(yuǎn)程計(jì)算機(jī)運(yùn)行。也即服務(wù)器700可以通過連接在系統(tǒng)總線705上的網(wǎng)絡(luò)接口單元711連接到網(wǎng)絡(luò)712,或者說,也可以使用網(wǎng)絡(luò)接口單元711來連接到其他類型的網(wǎng)絡(luò)或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(未示出)。上述存儲(chǔ)器還包括一個(gè)或者一個(gè)以上的程序,一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,被配置由CPU執(zhí)行,用于實(shí)現(xiàn)上下文所涉及的服務(wù)器的功能。圖8是本發(fā)明一個(gè)實(shí)施例中提供的終端的結(jié)構(gòu)示意圖,該終端800用于實(shí)施上述實(shí)施例提供的差異信息文件應(yīng)用方法。本發(fā)明中的終端800可以包括一個(gè)或多個(gè)如下組成部分:用于執(zhí)行計(jì)算機(jī)程序指令以完成各種流程和方法的處理器,用于信息和存儲(chǔ)程序指令隨機(jī)接入存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM),用于存儲(chǔ)數(shù)據(jù)和信息的存儲(chǔ)器,I/O設(shè)備,界面,天線等。具體來講:終端800可以包括RF(RadioFrequency,射頻)電路810、存儲(chǔ)器820、輸入單元830、顯示單元840、傳感器850、音頻電路860、WiFi(wirelessfidelity,無線保真)模塊870、處理器880、電源882、攝像頭890等部件。本領(lǐng)域技術(shù)人員可以理解,圖8中示出的終端結(jié)構(gòu)并不構(gòu)成對(duì)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。下面結(jié)合圖8對(duì)終端800的各個(gè)構(gòu)成部件進(jìn)行具體的介紹:RF電路810可用于收發(fā)信息或通話過程中,信號(hào)的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器880處理;另外,將設(shè)計(jì)上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路包括但不限于天線、至少一個(gè)放大器、收發(fā)信機(jī)、耦合器、LNA(LowNoiseAmplifier,低噪聲放大器)、雙工器等。此外,RF電路810還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于GSM(GlobalSystemofMobilecommunication,全球移動(dòng)通訊系統(tǒng))、GPRS(GeneralPacketRadioService,通用分組無線服務(wù))、CDMA(CodeDivisionMultipleAccess,碼分多址)、WCDMA(WidebandCodeDivisionMultipleAccess,寬帶碼分多址)、LTE(LongTermEvolution,長期演進(jìn))、電子郵件、SMS(ShortMessagingService,短消息服務(wù))等。存儲(chǔ)器820可用于存儲(chǔ)軟件程序以及模塊,處理器880通過運(yùn)行存儲(chǔ)在存儲(chǔ)器820的軟件程序以及模塊,從而執(zhí)行終端800的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器820可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)終端800的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器820可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。輸入單元830可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與終端800的用戶設(shè)置以及功能控制有關(guān)的鍵信號(hào)輸入。具體地,輸入單元830可包括觸控面板831以及其他輸入設(shè)備832。觸控面板831,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板831上或在觸控面板831附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置。可選的,觸控面板831可包括觸摸檢測裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器880,并能接收處理器880發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板831。除了觸控面板831,輸入單元830還可以包括其他輸入設(shè)備832。具體地,其他輸入設(shè)備832可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。顯示單元840可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端800的各種菜單。顯示單元840可包括顯示面板841,可選的,可以采用LCD(LiquidCrystalDisplay,液晶顯示器)、OLED(OrganicLight-EmittingDiode,有機(jī)發(fā)光二極管)等形式來配置顯示面板841。進(jìn)一步的,觸控面板831可覆蓋顯示面板841,當(dāng)觸控面板831檢測到在其上或附近的觸摸操作后,傳送給處理器880以確定觸摸事件的類型,隨后處理器880根據(jù)觸摸事件的類型在顯示面板841上提供相應(yīng)的視覺輸出。雖然在圖8中,觸控面板831與顯示面板841是作為兩個(gè)獨(dú)立的部件來實(shí)現(xiàn)終端800的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板831與顯示面板841集成而實(shí)現(xiàn)終端800的輸入和輸出功能。終端800還可包括至少一種傳感器850,比如陀螺儀傳感器、磁感應(yīng)傳感器、光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板841的亮度,接近傳感器可在終端800移動(dòng)到耳邊時(shí),關(guān)閉顯示面板841和/或背光。作為運(yùn)動(dòng)傳感器的一種,加速度傳感器可檢測各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測出重力的大小及方向,可用于識(shí)別終端姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于終端800還可配置的氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。音頻電路860、揚(yáng)聲器861,傳聲器862可提供用戶與終端800之間的音頻接口。音頻電路860可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器861,由揚(yáng)聲器861轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器862將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路860接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器880處理后,經(jīng)RF電路810以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器820以便進(jìn)一步處理。WiFi屬于短距離無線傳輸技術(shù),終端800通過WiFi模塊870可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖8示出了WiFi模塊870,但是可以理解的是,其并不屬于終端800的必須構(gòu)成,完全可以根據(jù)需要在不改變公開的本質(zhì)的范圍內(nèi)而省略。處理器880是終端800的控制中心,利用各種接口和線路連接整個(gè)終端的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器820內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器820內(nèi)的數(shù)據(jù),執(zhí)行終端800的各種功能和處理數(shù)據(jù),從而對(duì)終端進(jìn)行整體監(jiān)控。可選的,處理器880可包括一個(gè)或多個(gè)處理單元;優(yōu)選的,處理器880可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信。可以理解的是,上述調(diào)制解調(diào)處理器也可以不集成到處理器880中。終端800還包括給各個(gè)部件供電的電源882(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器882邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。攝像頭890一般由鏡頭、圖像傳感器、接口、數(shù)字信號(hào)處理器、CPU、顯示屏幕等組成。其中,鏡頭固定在圖像傳感器的上方,可以通過手動(dòng)調(diào)節(jié)鏡頭來改變聚焦;圖像傳感器相當(dāng)于傳統(tǒng)相機(jī)的“膠卷”,是攝像頭采集圖像的心臟;接口用于把攝像頭利用排線、板對(duì)板連接器、彈簧式連接方式與終端主板連接,將采集的圖像發(fā)送給所述存儲(chǔ)器820;數(shù)字信號(hào)處理器通過數(shù)學(xué)運(yùn)算對(duì)采集的圖像進(jìn)行處理,將采集的模擬圖像轉(zhuǎn)換為數(shù)字圖像并通過接口發(fā)送給存儲(chǔ)器820。盡管未示出,終端800還可以包括藍(lán)牙模塊等,在此不再贅述。終端800除了包括一個(gè)或者多個(gè)處理器880,還包括有存儲(chǔ)器,以及一個(gè)或者多個(gè)程序,其中一個(gè)或者多個(gè)程序存儲(chǔ)于存儲(chǔ)器中,并被配置成由一個(gè)或者多個(gè)處理器執(zhí)行,用于實(shí)現(xiàn)上下文所涉及的終端的功能。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3