本發(fā)明涉及計算機
技術(shù)領(lǐng)域:
,特別是涉及一種應(yīng)用程序配置文件的更新方法及裝置。
背景技術(shù):
:AndroidManifest.xml是Android程序的全局配置文件,是每個Android程序中必須的文件。它位于開發(fā)應(yīng)用程序的根目錄下,描述了程序安裝包中的全局?jǐn)?shù)據(jù),包括安裝包中的組件、以及各種能夠被處理和啟動位置等重要信息。AndroidManifest.xml中含有大量的Android程序的配置信息,通過更新配置信息可以實現(xiàn)更新應(yīng)用行為的結(jié)果,如系統(tǒng)權(quán)限設(shè)置、音量調(diào)節(jié)等。由于Android應(yīng)用程序中AndroidManifest.xml配置文件通常采用二進(jìn)制的方式進(jìn)行存儲,如果直接從程序安裝包中解壓出配置文件會出現(xiàn)亂碼情況,使得系統(tǒng)開發(fā)人員無法直接對配置文件進(jìn)行更新?,F(xiàn)有技術(shù)中通常采用編譯工具對AndroidManifest.xml配置文件反編譯成可讀文本形式的配置文件,然后再將更新后的可讀文本形式的配置文件編譯成二進(jìn)制文件,從而實現(xiàn)對配置文件的更新。然而,在進(jìn)行配置文件更新的過程中,每次都需要對編譯工具反編譯后的配置文件進(jìn)行重新編碼、壓縮以及簽名等操作,占用系統(tǒng)運行時間。技術(shù)實現(xiàn)要素:有鑒于此,本發(fā)明實施例提供一種應(yīng)用程序配置文件的更新方法及裝置,能夠快速更新應(yīng)用程序的配置文件,節(jié)省系統(tǒng)運行時間。為達(dá)到上述目的,本發(fā)明主要提供如下技術(shù)方案:一方面,本發(fā)明實施例提供了一種應(yīng)用程序配置文件的更新方法,該方法包括:當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,解析所述應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù);根據(jù)所述更新指令中攜帶的標(biāo)簽索引,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值;對更新后的中間數(shù)據(jù)進(jìn)行序列化,得到更新后的應(yīng)用程序配置文件。另一方面,本發(fā)明實施例還提供了一種應(yīng)用程序配置文件的更新裝置,該裝置包括:解析單元,用于當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,解析所述應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù);更新單元,用于根據(jù)所述更新指令中攜帶的標(biāo)簽索引,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值;序列化處理單元,用于對更新后的中間數(shù)據(jù)進(jìn)行序列化,得到更新后的應(yīng)用程序配置文件。本發(fā)明實施例提供的一種應(yīng)用程序配置文件的更新方法及裝置,與現(xiàn)有的采用編譯工具對應(yīng)用程序配置文件進(jìn)行更新的方式相比,本發(fā)明實施例當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,通過解析應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),從而根據(jù)更新指令中攜帶的標(biāo)簽索引,更新標(biāo)簽索引對應(yīng)中間數(shù)據(jù)的屬性值,無需對翻譯工具反編譯后的配置文件進(jìn)行重新編碼、壓縮以及簽名等操作,進(jìn)而實現(xiàn)對應(yīng)用程序配置文件的更新,通過對更新后的中間數(shù)據(jù)進(jìn)行序列化,能夠快速將應(yīng)用程序配置文件還原成二進(jìn)制形式,節(jié)省了系統(tǒng)運行時間。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。附圖說明通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了本發(fā)明實施例提供的一種應(yīng)用程序配置文件的更新方法流程圖;圖2示出了本發(fā)明實施例提供的另一種應(yīng)用程序配置文件的更新方法流程圖;圖3示出了本發(fā)明實施例提供的一種應(yīng)用程序配置文件的更新裝置結(jié)構(gòu)示意圖;圖4示出了本發(fā)明實施例提供的另一種應(yīng)用程序配置文件的更新裝置結(jié)構(gòu)示意圖。具體實施方式下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。本發(fā)明實施例提供一種應(yīng)用程序配置文件的更新方法,如圖1所示,所述方法包括:101、當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,解析所述應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)。由于應(yīng)用程序配置文件中存儲有大量安卓應(yīng)用的配置信息,通常情況,在應(yīng)用程序需要發(fā)布或者升級的情況下,當(dāng)接收到對應(yīng)用程序的更新指令時,研發(fā)人員通過更新配置文件能夠?qū)崿F(xiàn)新的應(yīng)用行為,從而實現(xiàn)應(yīng)用發(fā)布或者應(yīng)用升級。這里預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)可以包括文本數(shù)組、資源數(shù)組以及標(biāo)簽樹三部分?jǐn)?shù)據(jù)組成,其中,文本數(shù)組為專有數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù),用于存放配置文件中標(biāo)簽的每一個文本,每個標(biāo)簽用文本數(shù)組的索引指向文本,資源數(shù)組用于存放應(yīng)用程序配置文件的所有資源,通常為空,標(biāo)簽樹為與應(yīng)用程序配置文件文本中結(jié)構(gòu)相一致的樹形結(jié)構(gòu),以標(biāo)簽為樹形結(jié)構(gòu)的節(jié)點。通常情況下,應(yīng)用程序配置文件是以二進(jìn)制的形式進(jìn)行存儲的,無法直接用文本的方式進(jìn)行更新,對于本發(fā)明實施例通過解析應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),使得應(yīng)用程序配置文件能夠轉(zhuǎn)換為可以更新的預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)。102、根據(jù)所述更新指令中攜帶的標(biāo)簽索引,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值。其中,由于應(yīng)用程序配置文件中包含有大量的配置信息,標(biāo)簽索引用于表明更新配置文件對應(yīng)的位置,應(yīng)用程序配置文件的更新指令中攜帶有需要更新配置文件的標(biāo)簽索引,通過標(biāo)簽索引能夠?qū)ふ业酱屡渲梦募奈恢?。對于本發(fā)明實施例,更新標(biāo)簽索引對應(yīng)中間數(shù)據(jù)的屬性信息可以包括但不局限于下述實現(xiàn)方式,首先通過標(biāo)簽索引查找到該標(biāo)簽索引對應(yīng)中間數(shù)據(jù)的位置,這里中間數(shù)據(jù)的位置通常為文本數(shù)組或標(biāo)簽樹中對應(yīng)的位置,對于不同標(biāo)簽類型對應(yīng)中間數(shù)據(jù)的位置有所不同,例如,當(dāng)標(biāo)簽類型為數(shù)字時,可以直接在標(biāo)簽樹中對標(biāo)簽的屬性值進(jìn)行修改,從而更新對應(yīng)位置中間數(shù)據(jù)的屬性值,當(dāng)標(biāo)簽類型為文本時,可以通過查找標(biāo)簽樹中對應(yīng)文本數(shù)組的文本索引,從而更新文本索引對應(yīng)文本數(shù)組的屬性值,同時對應(yīng)更新標(biāo)簽樹的文本索引。需要說明的是,這里可以通過在對應(yīng)位置中間數(shù)據(jù)的屬性信息處添加數(shù)據(jù)、修改數(shù)據(jù)或者刪除數(shù)據(jù)的方式來實現(xiàn)更新操作,本發(fā)明實施例對更新應(yīng)用程序程序配置文件的具體內(nèi)容不進(jìn)行限定。103、對更新后的中間數(shù)據(jù)進(jìn)行序列化,得到更新后的應(yīng)用程序配置文件。這里對更新后的中間數(shù)據(jù)進(jìn)行序列化的過程主要包括對文本數(shù)組進(jìn)行序列化、對資源數(shù)組進(jìn)行序列化以及對標(biāo)簽樹進(jìn)行序列化,由于資源數(shù)組在轉(zhuǎn)換為預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)過程中并未發(fā)生改動,因此對更新后的中間數(shù)據(jù)進(jìn)行序列化的過程主要包括對文本數(shù)組進(jìn)行序列化以及對標(biāo)簽樹進(jìn)行序列化。這里對更新后的中間數(shù)據(jù)進(jìn)行序列化的目的為將更新后的中間數(shù)據(jù)還原為二進(jìn)制形式的應(yīng)用程序配置文件,進(jìn)一步將序列化的文本數(shù)組、未處理的資源數(shù)組以及序列化的標(biāo)簽樹一起寫入到目標(biāo)文件中,可以得到更新后的應(yīng)用程序配置文件。這里需要說明的是,在寫入目標(biāo)文件的過程中,為了進(jìn)一步區(qū)分不同的文件類型,還需要寫入目標(biāo)文件的魔術(shù)數(shù)字以及更新后的應(yīng)用程序配置文件的整體大小。本發(fā)明實施例提供的一種應(yīng)用程序配置文件的更新方法,與現(xiàn)有的采用編譯工具對應(yīng)用程序配置文件進(jìn)行更新的方式相比,本發(fā)明實施例當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,通過解析應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),從而根據(jù)更新指令中攜帶的標(biāo)簽索引,更新標(biāo)簽索引對應(yīng)中間數(shù)據(jù)的屬性值,無需對翻譯工具反編譯后的配置文件進(jìn)行重新編碼、壓縮以及簽名等操作,進(jìn)而實現(xiàn)對應(yīng)用程序配置文件的更新,通過對更新后的中間數(shù)據(jù)進(jìn)行序列化,能夠快速將應(yīng)用程序配置文件還原成二進(jìn)制形式,節(jié)省了系統(tǒng)運行時間。進(jìn)一步地,本發(fā)明實施例提供另一種應(yīng)用程序配置文件的更新方法,如圖2所示,所述方法包括:201、加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù)。在安卓系統(tǒng)中,應(yīng)用程序配置文件通常是標(biāo)準(zhǔn)的XML文件,每個XML標(biāo)簽都有不同的含義,大部分的配置參數(shù)都放在標(biāo)簽的屬性中。XML文件標(biāo)記和屬性時區(qū)分大小寫的,它是可以按需要更改的,研發(fā)人員可以使用配置文件來更改設(shè)置,而不必要重編譯應(yīng)用程序。對于本發(fā)明實施例,加載應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù)可以采用采用下述實現(xiàn)方式,首先根據(jù)應(yīng)用程序配置文件的魔術(shù)數(shù)字讀取應(yīng)用程序配置文件的文件類型,這里的魔術(shù)數(shù)字用于標(biāo)識不同文件類型,為指定文件的最開頭的幾個唯一區(qū)別于其他文件類型的字節(jié),有了這些魔術(shù)數(shù)字,可以很方便的區(qū)分不同文件類型,從而進(jìn)一步加載應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù),例如,一個JPEG類型的文件,它開頭的一些字節(jié)可能是類似這樣的“ffd8ffe000104a464946000101010047....JFIF...G”,這里的“ffd8”就表示了這個文件是一個JPEG類型的文件,“ffe0”表示的是JFIF類型結(jié)構(gòu)。這里需要說明的時,如果配置文件的類型對應(yīng)的不是二進(jìn)制數(shù)據(jù),則不進(jìn)行加載。示例性的,對于本發(fā)明實施例中安卓應(yīng)用程序配置文件的二進(jìn)制格式如表1所示,表1主要對應(yīng)有三部分?jǐn)?shù)據(jù)組成,二進(jìn)制數(shù)據(jù)格式的文本數(shù)據(jù)、資源數(shù)據(jù)以及標(biāo)簽數(shù)據(jù)。表1Android二進(jìn)制格式其中,文本字典類型、文本字典大小、文本個數(shù)、模式個數(shù)、分節(jié)符、文本字典起始位置、模式起始位置、每個文本的起始位置、文本區(qū)、對齊位部分對應(yīng)二進(jìn)制文本數(shù)據(jù),文本區(qū)中每個文本格式如表2所示,資源區(qū)類型、資源區(qū)大小、資源區(qū)部分對應(yīng)二進(jìn)制資源數(shù)據(jù),內(nèi)容區(qū)部分對應(yīng)二進(jìn)制標(biāo)簽數(shù)據(jù),內(nèi)容區(qū)中標(biāo)簽結(jié)構(gòu)如表3所示。表2文本區(qū)中每個文本格式名稱大小描述長度2B文本長度n文本內(nèi)容n*2B每2個字節(jié)表示一個字符結(jié)束符2B內(nèi)容為0x0000其中,文本中每個文本格式可以包括長度、文本內(nèi)容以及結(jié)束符。表3內(nèi)容區(qū)中標(biāo)簽結(jié)構(gòu)其中,內(nèi)容區(qū)中標(biāo)簽結(jié)構(gòu)可以包括標(biāo)簽類型、標(biāo)簽內(nèi)容大小、源代碼所在行、補位、前綴、名稱、屬性區(qū)標(biāo)記、屬性個數(shù)、屬性源代碼行數(shù)以及屬性列表,標(biāo)簽類型如表4所示,屬性列表如表6所示。表4標(biāo)簽類型標(biāo)記描述0x00100100命名空間開始0x00100101命名空間結(jié)束0x00100102標(biāo)簽開始0x00100103標(biāo)簽結(jié)束0x00100104文本其中,標(biāo)簽類型通常包括兩種,一種是命名空間,另一種是標(biāo)簽,在XML文件中,為了避免XML的標(biāo)簽同名,XML也擁有命名空間,標(biāo)簽可以放在命名空間之中,不同的命名空間中的相同名稱標(biāo)簽是不同的標(biāo)簽。表5屬性列表其中,屬性列表可以包括屬性命名空間、屬性名稱、屬性文本值、屬性類型以及屬性值。202、將所述二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)。由于二進(jìn)制數(shù)據(jù)無法直接通過文本形式實現(xiàn)更新,本發(fā)明實施例將二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),從而實現(xiàn)應(yīng)用程序配置文件的更新,其中,預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)包括文本數(shù)組、資源數(shù)組以及標(biāo)簽樹。示例性,預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)中文本數(shù)組的數(shù)據(jù)結(jié)構(gòu)如表6所示,預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)中資源數(shù)組的數(shù)據(jù)結(jié)構(gòu)如表7所示,預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)中標(biāo)簽樹的數(shù)據(jù)結(jié)構(gòu)如表8所示,其中,標(biāo)簽樹屬性數(shù)據(jù)結(jié)構(gòu)如表9所示。表6文本數(shù)組的數(shù)據(jù)結(jié)構(gòu)表7資源數(shù)組的數(shù)據(jù)結(jié)構(gòu)名稱類型描述類型數(shù)值大小數(shù)值內(nèi)容數(shù)組數(shù)值數(shù)組表8標(biāo)簽樹的數(shù)據(jù)結(jié)構(gòu)表9標(biāo)簽樹屬性數(shù)據(jù)結(jié)構(gòu)名稱類型描述命名空間數(shù)值名稱數(shù)值文本索引屬性文本值數(shù)值文本索引屬性類型數(shù)值文本或數(shù)值屬性值數(shù)值203、遍歷所述標(biāo)簽樹,查找所述標(biāo)簽索引在所述標(biāo)簽樹中對應(yīng)的屬性類型。由于標(biāo)簽樹為與應(yīng)用程序配置文件文本中結(jié)構(gòu)相一致的樹形結(jié)構(gòu),以標(biāo)簽為樹形結(jié)構(gòu)的節(jié)點,為了實現(xiàn)對應(yīng)用程序配置文件的更新,需要根據(jù)更新指令中攜帶的標(biāo)簽索引從標(biāo)簽樹中找到對應(yīng)更新的位置,這里的標(biāo)簽索引具體可以包括標(biāo)簽名、屬性名、源文本數(shù)據(jù)以及待更新屬性名分別對應(yīng)的的索引值,然后通過遍歷標(biāo)簽樹,查找標(biāo)簽索引在標(biāo)簽樹中對應(yīng)的屬性類型,這里的屬性類型可以包括數(shù)值類型和文本類型。204、根據(jù)所述屬性類型,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值。需要說明的是,本發(fā)明實施例對于不同屬性類型的標(biāo)簽索引所采用的更新方式不同,本發(fā)明實施例通過首先通過查找標(biāo)簽樹屬性列表中的屬性類型獲取標(biāo)簽索引的屬性類型,這里的屬性類型主要包括文本和數(shù)值兩種類型,進(jìn)一步對不同屬性類型的標(biāo)簽索引對應(yīng)的屬性值進(jìn)行更新。對于本發(fā)明實施例,若屬性類型為文本類型時,更新標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值可以包括但不局限于下述實現(xiàn)方式,由于每個文本索引指向相應(yīng)標(biāo)簽,首先根據(jù)標(biāo)簽索引查找標(biāo)簽樹中對應(yīng)的文本索引,然后通過文本索引更新文本數(shù)組的屬性值,這里通常為在文本數(shù)組中增加一條數(shù)據(jù),從而對文本數(shù)組的屬性值進(jìn)行更新,在對文本數(shù)組的屬性值更新的同時,由于文本數(shù)組的屬性值發(fā)生了改變,因此根據(jù)文本數(shù)組的屬性值更新標(biāo)簽樹的文本索引。對于本發(fā)明實施例,若屬性類型為數(shù)值類型時,更新標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值可以包括但不局限于下述實現(xiàn)方式,由于標(biāo)簽樹為與文本結(jié)構(gòu)一致的樹形結(jié)構(gòu),標(biāo)簽為標(biāo)簽樹的節(jié)點,可以直接通過更新標(biāo)簽屬性列表中的屬性值,從而更新標(biāo)簽索引對應(yīng)標(biāo)簽樹的屬性值。205、分別對所述文本數(shù)組、所述資源數(shù)組以及所述標(biāo)簽樹進(jìn)行序列化,得到序列化后的二進(jìn)制數(shù)據(jù)。對于本發(fā)明實施例,對文本數(shù)組進(jìn)行序列化可以包括但不局限于下述實現(xiàn)方式,首先根據(jù)文本數(shù)組中文本所占字符串的數(shù)量進(jìn)行內(nèi)存分配,得到文本占用內(nèi)存,例如內(nèi)存的大小可以為(文本所占字符串個數(shù)+7)*4,然后分別按照文本數(shù)組的大小、文本個數(shù)、模式個數(shù)、分隔符的順序?qū)⑽谋緮?shù)組中的文本寫入內(nèi)存,每寫入一個文本,先計算寫入長度,再寫入具體內(nèi)容,最后寫入0X0000,作為結(jié)束符。為了保證寫入內(nèi)存中數(shù)據(jù)的整齊,計算文本數(shù)組中的文本偏移量,根據(jù)文本偏移量對寫入內(nèi)存中的文本進(jìn)行補齊,這里可以根據(jù)文本數(shù)組中上一個文本偏移量和上一個文本長度,計算文本數(shù)組中每個文本偏移量,如每個文本偏移量為上一個文本的偏移量+上一個文本的長度*2+4,默認(rèn)第一個文本的偏移量為0,將最后一個文本的偏移量加上最后一個文本占用內(nèi)存之和對4取對數(shù),將余數(shù)個值為0的字節(jié)寫入內(nèi)存,作為對齊,如果余數(shù)恰好為0,則直接寫4個字節(jié)的0進(jìn)入內(nèi)存。需要說明的是,由于資源數(shù)組在轉(zhuǎn)換為預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)過程中幾乎不會改動,因此對于資源數(shù)組的序列化僅需要將資源數(shù)組中的數(shù)據(jù)原樣寫入到內(nèi)存中即可。對于本發(fā)明實施例,對標(biāo)簽樹進(jìn)行序列化可以包括但不局限于下述實現(xiàn)方式,首先根據(jù)標(biāo)簽樹中標(biāo)簽的類型計算標(biāo)簽占用內(nèi)存,這里如果是標(biāo)簽類型,則占用內(nèi)存大小為4*(9+屬性個數(shù)*5),如果是命名空間類型,則占用內(nèi)存大小為4*6,根據(jù)標(biāo)簽占用內(nèi)存將標(biāo)簽樹中的標(biāo)簽寫入內(nèi)存,如果是標(biāo)簽類型,將標(biāo)簽類型、大小、源代碼行號、分隔符、前綴以及名稱一次性寫入內(nèi)存,如果是命名空間類型,將每個屬性的命名空間、名稱、屬性文本值、屬性類型以及屬性值一次性寫入內(nèi)存。對于本發(fā)明實施例,在對標(biāo)簽樹進(jìn)行序列化之后的過程中,由于標(biāo)簽樹中可能存在多個子標(biāo)簽,還需要判斷所述標(biāo)簽是否存在子標(biāo)簽;若存在,則根據(jù)子標(biāo)簽的類型計算子標(biāo)簽占用內(nèi)存,進(jìn)一步根據(jù)子標(biāo)簽占用內(nèi)存將子標(biāo)簽寫入內(nèi)存。本步驟通過分別對所述文本數(shù)組、所述資源數(shù)組以及所述標(biāo)簽樹進(jìn)行序列化,得到序列化后的二進(jìn)制數(shù)據(jù),該序列化后的二進(jìn)制數(shù)據(jù)同樣包括文本數(shù)據(jù)、資源數(shù)據(jù)以及標(biāo)簽數(shù)據(jù)三部分組成。206、將所述序列化后的二進(jìn)制數(shù)據(jù)寫入至目標(biāo)文件,得到更新后的應(yīng)用程序配置文件。對于將序列化后的二進(jìn)制數(shù)據(jù)還原為應(yīng)用程序配置文件,還需要將序列化后的文本數(shù)據(jù)、資源數(shù)據(jù)以及標(biāo)簽數(shù)據(jù)一并寫入至目標(biāo)文件后,可以得到更新后的應(yīng)用程序配置文件,在寫入的過程中還需要將魔術(shù)數(shù)字以及文件整體大小一并寫入。本發(fā)明實施例的另一種應(yīng)用程序配置文件的更新方法,無需通過安卓軟件開發(fā)工具的編譯過程,直接將應(yīng)用程序配置文件進(jìn)行解析、更新以及序列化,能夠?qū)ΧM(jìn)制形式的應(yīng)用程序配置文件實現(xiàn)快速更新與還原,提高了系統(tǒng)的運行速度。為了實現(xiàn)上述方法實施例,本實施例提供一種與上述方法實施例對應(yīng)的裝置實施例,如圖3所示,其示出了一種應(yīng)用程序配置文件的更新裝置,該裝置可以包括:解析單元31,可以用于當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,解析所述應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),該解析單元31為一種應(yīng)用程序配置文件的更新裝置中中用于解析應(yīng)用程序配置文件的主要功能模塊,從而使得應(yīng)用程序配置文件轉(zhuǎn)換為能夠被更新數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù);其中,預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)可以包括文本數(shù)組、資源數(shù)組以及標(biāo)簽樹三部分?jǐn)?shù)據(jù)組成。更新單元32,可以用于根據(jù)所述更新指令中攜帶的標(biāo)簽索引,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值,該更新單元32為一種應(yīng)用程序配置文件的更新裝置中用于更新標(biāo)簽索引對應(yīng)中間數(shù)據(jù)的屬性值的主要功能模塊,具體可以通過標(biāo)簽索引查找到該標(biāo)簽索引對應(yīng)中間數(shù)據(jù)的位置,更新對應(yīng)位置中間數(shù)據(jù)的屬性;序列化處理單元33,可以用于對更新后的中間數(shù)據(jù)進(jìn)行序列化,得到更新后的應(yīng)用程序配置文件,該序列化處理單元33為一種應(yīng)用程序配置文件的更新裝置中用于對更新后中間數(shù)據(jù)進(jìn)行序列化的主要功能模塊,從而將更新后的中間數(shù)據(jù)還原為二進(jìn)制形式的應(yīng)用程序配置文件。本發(fā)明實施例提供的一種應(yīng)用程序配置文件的更新裝置,與現(xiàn)有的采用編譯工具對應(yīng)用程序配置文件進(jìn)行更新的方式相比,本發(fā)明實施例當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,通過解析應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),從而根據(jù)更新指令中攜帶的標(biāo)簽索引,更新標(biāo)簽索引對應(yīng)中間數(shù)據(jù)的屬性值,無需對翻譯工具反編譯后的配置文件進(jìn)行重新編碼、壓縮以及簽名等操作,進(jìn)而實現(xiàn)對應(yīng)用程序配置文件的更新,通過對更新后的中間數(shù)據(jù)進(jìn)行序列化,能夠快速將應(yīng)用程序配置文件還原成二進(jìn)制形式,節(jié)省了系統(tǒng)運行時間。進(jìn)一步地,如圖4所示,本發(fā)明實施例提供了另一種應(yīng)用程序配置文件的更新裝置,由于二進(jìn)制數(shù)據(jù)無法直接通過文本形式實現(xiàn)更新,本發(fā)明實施例為進(jìn)一步了將二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為能夠被更新的預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),所述解析單元31包括:加載模塊311,可以用于加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù),具體根據(jù)應(yīng)用程序配置文件的魔術(shù)數(shù)字讀取應(yīng)用程序配置文件的文件類型,如果配置文件的類型對應(yīng)的不是二進(jìn)制數(shù)據(jù),則不進(jìn)行加載;轉(zhuǎn)換模塊312,可以用于將所述二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù),從而實現(xiàn)應(yīng)用程序配置文件的更新,其中,預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)包括文本數(shù)組、資源數(shù)組以及標(biāo)簽樹。所述加載模塊311,還可以用于根據(jù)所述應(yīng)用程序配置文件的魔術(shù)數(shù)字讀取應(yīng)用程序配置文件的文件類型;所述加載模塊311,還可以用于根據(jù)所述配置文件的文件類型加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù)。對于本發(fā)明實施例,由于更新指令中的標(biāo)簽索引對應(yīng)的屬性類型有所不同,進(jìn)一步對不同屬性類型的標(biāo)簽索引對應(yīng)的屬性值進(jìn)行更新,所述更新單元32包括:查找模塊321,可以用于遍歷所述標(biāo)簽樹,查找所述標(biāo)簽索引在所述標(biāo)簽樹中對應(yīng)的屬性類型,這里的屬性類型可以包括數(shù)值類型和文本類型;更新模塊322,可以用于根據(jù)所述屬性類型,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值。若所述屬性類型為文本類型時,所述更新單元32,具體可以用于根據(jù)所述標(biāo)簽索引查找所述標(biāo)簽樹中對應(yīng)的文本索引,根據(jù)所述文本索引更新所述文本數(shù)組的屬性值,根據(jù)所述文本數(shù)組的屬性值更新所述標(biāo)簽樹的文本索引。若所述屬性類型為數(shù)值類型時,所述更新單元32,具體還可以用于更新所述標(biāo)簽索引對應(yīng)所述標(biāo)簽樹的屬性值。對于本發(fā)明實施例,由于預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)包括文本數(shù)組、資源數(shù)組以及標(biāo)簽樹三部分?jǐn)?shù)據(jù)組成,所述序列化處理單元33包括:序列化處理模塊331,可以用于分別對所述文本數(shù)組、所述資源數(shù)組以及所述標(biāo)簽樹進(jìn)行序列化,得到序列化后的二進(jìn)制數(shù)據(jù);寫入模塊332,可以用于將所述序列化后的二進(jìn)制數(shù)據(jù)寫入至目標(biāo)文件,得到更新后的應(yīng)用程序配置文件。對于文本數(shù)組的序列化,所述序列化處理模塊331,具體可以用于根據(jù)所述文本數(shù)組中文本所占字符串的數(shù)量進(jìn)行內(nèi)存分配,得到文本占用內(nèi)存;所述序列化處理模塊331,具體還可以用于根據(jù)所述文本占用內(nèi)存將所述文本數(shù)組中的文本寫入內(nèi)存;所述序列化處理模塊331,具體還可以用于計算所述文本數(shù)組中的文本偏移量,根據(jù)所述文本偏移量對寫入內(nèi)存中的文本進(jìn)行補齊。所述序列化處理模塊331,具體還可以用于根據(jù)文本數(shù)組中上一個文本偏移量和上一個文本長度,計算文本數(shù)組中每個文本偏移量;所述序列化處理模塊331,具體還可以用于根據(jù)所述文本數(shù)組中的文本偏移量和所述文本占用內(nèi)存,對寫入內(nèi)存中的文本進(jìn)行補齊。對于標(biāo)簽樹的序列化,所述序列化處理模塊331,具體還可以用于根據(jù)標(biāo)簽樹中標(biāo)簽的類型計算標(biāo)簽占用內(nèi)存;所述序列化處理模塊331,具體還可以用于根據(jù)所述標(biāo)簽占用內(nèi)存將所述標(biāo)簽樹中的標(biāo)簽寫入內(nèi)存。所述序列化模塊331,具體還可以用于判斷所述標(biāo)簽是否存在子標(biāo)簽;所述序列化模塊331,具體還可以用于若所述標(biāo)簽存在子標(biāo)簽,則根據(jù)所述子標(biāo)簽的類型計算子標(biāo)簽占用內(nèi)存;所述序列化模塊331,具體還可以用于根據(jù)所述子標(biāo)簽占用內(nèi)存將所述子標(biāo)簽寫入內(nèi)存。本發(fā)明實施例的另一種應(yīng)用程序配置文件的更新裝置,無需通過安卓軟件開發(fā)工具的編譯過程,直接將應(yīng)用程序配置文件進(jìn)行解析、更新以及序列化,能夠?qū)ΧM(jìn)制形式的應(yīng)用程序配置文件實現(xiàn)快速更新與還原,提高了系統(tǒng)的運行速度。本發(fā)明公開了A1、一種應(yīng)用程序配置文件的更新方法,包括:當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,解析所述應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù);根據(jù)所述更新指令中攜帶的標(biāo)簽索引,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值;對更新后的中間數(shù)據(jù)進(jìn)行序列化,得到更新后的應(yīng)用程序配置文件。A2、如A1所述的方法,所述解析所述應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)包括:加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù);將所述二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)。A3、如A2所述的方法,所述加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù)包括:根據(jù)所述應(yīng)用程序配置文件的魔術(shù)數(shù)字讀取應(yīng)用程序配置文件的文件類型;根據(jù)所述配置文件的文件類型加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù)。A4、如A1-A3中任一項所述的方法,所述預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)包括文本數(shù)組、資源數(shù)組以及標(biāo)簽樹。A5、如A4所述的方法,所述根據(jù)所述更新指令中攜帶的標(biāo)簽索引,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值包括:遍歷所述標(biāo)簽樹,查找所述標(biāo)簽索引在所述標(biāo)簽樹中對應(yīng)的屬性類型;根據(jù)所述屬性類型,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值。A6、如A5所述的方法,若所述屬性類型為文本類型時,所述更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值包括:根據(jù)所述標(biāo)簽索引查找所述標(biāo)簽樹中對應(yīng)的文本索引;根據(jù)所述文本索引更新所述文本數(shù)組的屬性值;根據(jù)所述文本數(shù)組的屬性值更新所述標(biāo)簽樹的文本索引。A7、如A5所述的方法,若所述屬性類型為數(shù)值類型時,所述更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值包括:更新所述標(biāo)簽索引對應(yīng)所述標(biāo)簽樹的屬性值。A8、如A4所述的方法,所述對更新后的中間數(shù)據(jù)進(jìn)行序列化,得到更新后的應(yīng)用程序配置文件包括:分別對所述文本數(shù)組、所述資源數(shù)組以及所述標(biāo)簽樹進(jìn)行序列化,得到序列化后的二進(jìn)制數(shù)據(jù);將所述序列化后的二進(jìn)制數(shù)據(jù)寫入至目標(biāo)文件,得到更新后的應(yīng)用程序配置文件。A9、如A8所述的方法,所述對所述文本數(shù)組進(jìn)行序列化包括:根據(jù)所述文本數(shù)組中文本所占字符串的數(shù)量進(jìn)行內(nèi)存分配,得到文本占用內(nèi)存;根據(jù)所述文本占用內(nèi)存將所述文本數(shù)組中的文本寫入內(nèi)存;計算所述文本數(shù)組中的文本偏移量,根據(jù)所述文本偏移量對寫入內(nèi)存中的文本進(jìn)行補齊。A10、如A9所述的方法,所述計算文本數(shù)組中的文本偏移量,根據(jù)所述文本偏移量對寫入內(nèi)存中的文本進(jìn)行補齊包括:根據(jù)文本數(shù)組中上一個文本偏移量和上一個文本長度,計算文本數(shù)組中每個文本偏移量;根據(jù)所述文本數(shù)組中的文本偏移量和所述文本占用內(nèi)存,對寫入內(nèi)存中的文本進(jìn)行補齊。A11、如A8所述的方法,所述對所述標(biāo)簽樹進(jìn)行序列化包括:根據(jù)標(biāo)簽樹中標(biāo)簽的類型計算標(biāo)簽占用內(nèi)存;根據(jù)所述標(biāo)簽占用內(nèi)存將所述標(biāo)簽樹中的標(biāo)簽寫入內(nèi)存。A12、如11所述的方法,在所述根據(jù)所述標(biāo)簽占用內(nèi)存將所述標(biāo)簽樹中的標(biāo)簽寫入內(nèi)存之后,還包括:判斷所述標(biāo)簽是否存在子標(biāo)簽;若存在,則根據(jù)所述子標(biāo)簽的類型計算子標(biāo)簽占用內(nèi)存;根據(jù)所述子標(biāo)簽占用內(nèi)存將所述子標(biāo)簽寫入內(nèi)存。B13、一種應(yīng)用程序配置文件的更新裝置,包括:解析單元,用于當(dāng)接收到對應(yīng)用程序配置文件的更新指令時,解析所述應(yīng)用程序配置文件,得到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù);更新單元,用于根據(jù)所述更新指令中攜帶的標(biāo)簽索引,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值;序列化處理單元,用于對更新后的中間數(shù)據(jù)進(jìn)行序列化,得到更新后的應(yīng)用程序配置文件。B14、如B13所述的裝置,所述解析單元包括:加載模塊,用于加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù);轉(zhuǎn)換模塊,用于將所述二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)。B15、如B14所述的裝置,其特征在于,所述加載模塊,還用于根據(jù)所述應(yīng)用程序配置文件的魔術(shù)數(shù)字讀取應(yīng)用程序配置文件的文件類型;所述加載模塊,還用于根據(jù)所述配置文件的文件類型加載所述應(yīng)用程序配置文件中的二進(jìn)制數(shù)據(jù)。B16、如B13-B15中任一項所述的裝置,所述預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)的中間數(shù)據(jù)包括文本數(shù)組、資源數(shù)組以及標(biāo)簽樹。B17、如B16所述的裝置,所述更新單元包括:查找模塊,用于遍歷所述標(biāo)簽樹,查找所述標(biāo)簽索引在所述標(biāo)簽樹中對應(yīng)的屬性類型;更新模塊,用于根據(jù)所述屬性類型,更新所述標(biāo)簽索引對應(yīng)所述中間數(shù)據(jù)的屬性值。B18、如B17所述的裝置,若所述屬性類型為文本類型時,所述更新單元,具體用于根據(jù)所述標(biāo)簽索引查找所述標(biāo)簽樹中對應(yīng)的文本索引;所述更新單元,具體還用于根據(jù)所述文本索引更新所述文本數(shù)組的屬性值;所述更新單元,具體還用于根據(jù)所述文本數(shù)組的屬性值更新所述標(biāo)簽樹的文本索引。B19、如B17所述的裝置,若所述屬性類型為數(shù)值類型時,所述更新單元,具體還用于更新所述標(biāo)簽索引對應(yīng)所述標(biāo)簽樹的屬性值。B20、如B16所述的裝置,所述序列化處理單元包括:序列化處理模塊,用于分別對所述文本數(shù)組、所述資源數(shù)組以及所述標(biāo)簽樹進(jìn)行序列化,得到序列化后的二進(jìn)制數(shù)據(jù);寫入模塊,用于將所述序列化后的二進(jìn)制數(shù)據(jù)寫入至目標(biāo)文件,得到更新后的應(yīng)用程序配置文件。B21、如B20所述的裝置,所述序列化處理模塊,具體用于根據(jù)所述文本數(shù)組中文本所占字符串的數(shù)量進(jìn)行內(nèi)存分配,得到文本占用內(nèi)存;所述序列化處理模塊,具體還用于根據(jù)所述文本占用內(nèi)存將所述文本數(shù)組中的文本寫入內(nèi)存;所述序列化處理模塊,具體還用于計算所述文本數(shù)組中的文本偏移量,根據(jù)所述文本偏移量對寫入內(nèi)存中的文本進(jìn)行補齊。B22、如B21所述的裝置,所述序列化處理模塊,具體還用于根據(jù)文本數(shù)組中上一個文本偏移量和上一個文本長度,計算文本數(shù)組中每個文本偏移量;所述序列化處理模塊,具體還用于根據(jù)所述文本數(shù)組中的文本偏移量和所述文本占用內(nèi)存,對寫入內(nèi)存中的文本進(jìn)行補齊。B23、如B20所述的裝置,其特征在于,所述序列化處理模塊,具體還用于根據(jù)標(biāo)簽樹中標(biāo)簽的類型計算標(biāo)簽占用內(nèi)存;所述序列化處理模塊,具體還用于根據(jù)所述標(biāo)簽占用內(nèi)存將所述標(biāo)簽樹中的標(biāo)簽寫入內(nèi)存。B24、如B23所述的裝置,其特征在于,所述序列化模塊,具體還用于判斷所述標(biāo)簽是否存在子標(biāo)簽;所述序列化模塊,具體還用于若所述標(biāo)簽存在子標(biāo)簽,則根據(jù)所述子標(biāo)簽的類型計算子標(biāo)簽占用內(nèi)存;所述序列化模塊,具體還用于根據(jù)所述子標(biāo)簽占用內(nèi)存將所述子標(biāo)簽寫入內(nèi)存。在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述??梢岳斫獾氖?,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實施例中的“第一”、“第二”等是用于區(qū)分各實施例,而并不代表各實施例的優(yōu)劣。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的一種數(shù)據(jù)存儲的方法及裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。當(dāng)前第1頁1 2 3