專利名稱:一種在嵌入式平臺(tái)安裝軟件的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式平臺(tái)的應(yīng)用領(lǐng)域,尤其涉及一種在嵌入式平臺(tái)安裝軟件的方法和系統(tǒng)。
背景技術(shù):
APK是Android Package的縮寫,即Android安裝包。現(xiàn)有技術(shù)中,通常采用zip 的壓縮方式,將每個(gè)要安裝到Android平臺(tái)的軟件的安裝程序包里的每一個(gè)文件分別進(jìn)行 zip壓縮,然后打包為一個(gè)文件,生成后綴名為apk的安裝包,其中包含了應(yīng)用軟件的二進(jìn)制代碼、資源、配置文件等,由此,一個(gè)APK文件解壓縮后,通常包括assets目錄,該目錄中的文件不會(huì)被編譯成二進(jìn)制形式;lib目錄,存放動(dòng)態(tài)庫(kù)文件;res目錄,存放資源文件;Manifest, xml,是程序全局配置文件,每個(gè)應(yīng)用軟件都必須定義和包含,它描述了應(yīng)用軟件的名字、版本、權(quán)限等信息;classes, dex,是java源碼編譯后生成的java字節(jié)碼文。用戶下載apk文件到Android系統(tǒng)中后,執(zhí)行該apk即可安裝軟件。Zip文件格式是一種數(shù)據(jù)壓縮和歸檔格式。一個(gè)Zip文件包含一個(gè)或多個(gè)已被壓縮或未壓縮文件,Zip采用分別壓縮文件的方式,允許不必讀取另外的數(shù)據(jù)而檢索獨(dú)立的文件,Zip壓縮最常用的是DEFLATE算法?,F(xiàn)有技術(shù)的android apk的壓縮方法,對(duì)包里的每一個(gè)文件分別進(jìn)行zip壓縮,造成壓縮比率不高,安裝包的長(zhǎng)度仍然比較大,下載服務(wù)提供方和最終用戶的帶寬費(fèi)用都比較高,用戶下載安裝包的時(shí)候也比較慢。Lzma, (Lempel-Ziv-Markov chain—Algorithm 的縮寫),是一個(gè) Deflate 禾口 LZ77 算法改良和優(yōu)化后的壓縮算法,它使用類似于LZ77的字典編碼機(jī)制,在一般的情況下壓縮率比bzip2高,用于壓縮的可變字典的大小可達(dá)4GB,能提供給用戶極高的壓縮比及較快的壓縮速度,它非常適合與嵌入式應(yīng)用程序集成。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種在嵌入式平臺(tái)安裝軟件的方法和系統(tǒng),應(yīng)用Lzma算法,減少在嵌入式平臺(tái)安裝軟件包的大小,節(jié)約服務(wù)器的帶寬,縮短下載等待時(shí)間,提升用戶的使用體驗(yàn)。為解決上述問(wèn)題,本發(fā)明提供一種在嵌入式平臺(tái)安裝軟件的方法,包括壓縮步驟和解壓步驟,其中,所述壓縮步驟包括將原始的apk安裝包解壓為一個(gè)目錄;將所述目錄打包為zip格式的文件;
按照一壓縮率高于DEFLATE的算法對(duì)所述zip格式的文件進(jìn)行壓縮,得到算法壓縮文件;按照所述壓縮率高于DEFLATE的算法編譯算法解壓庫(kù),并形成所述算法解壓庫(kù)的解壓函數(shù);將所述算法壓縮文件和算法解壓庫(kù)合成到新的apk安裝包;所述解壓步驟包括執(zhí)行所述新的apk安裝包;加載所述算法解壓庫(kù)并調(diào)用所述算法解壓庫(kù)的解壓函數(shù);按照所述壓縮率高于DEFLATE的算法解壓所述算法壓縮文件為apk文件;安裝所述apk文件。進(jìn)一步的,所述嵌入式平臺(tái)為Android平臺(tái)。進(jìn)一步的,所述壓縮率高于DEFLATE的算法為L(zhǎng)zma算法或Lzma2算法。進(jìn)一步的,所述壓縮步驟中,所述目錄包含assets目錄、lib目錄、res目錄、 Manifest, xml 文件以及 classes, dex 文件。進(jìn)一步的,所述壓縮步驟中,所述算法解壓庫(kù)保存于所述新的apk安裝包的lib目錄下。進(jìn)一步的,所述壓縮步驟中,通過(guò)NDK編譯所述算法解壓庫(kù)。進(jìn)一步的,所述解壓步驟中,通過(guò)JNI接口調(diào)用所述算法解壓庫(kù)的解壓函數(shù)。相應(yīng)的,本發(fā)明還提供一種在嵌入式平臺(tái)安裝軟件的系統(tǒng),包括壓縮模塊和解壓模塊,其中,所述壓縮模塊包含apk解壓?jiǎn)卧?,用于將原始的apk安裝包解壓為一個(gè)目錄;zip打包單元,用于將所述目錄打包為zip格式的文件;算法壓縮單元,用于按照一壓縮率高于DEFLATE的算法對(duì)所述zip格式的文件進(jìn)行壓縮,得到算法壓縮文件;算法編譯單元,用于按照所述壓縮率高于DEFLATE的算法編譯算法解壓庫(kù),并形成所述算法解壓庫(kù)的解壓函數(shù);apk合成單元,用于將所述算法壓縮文件和算法解壓庫(kù)合成到新的apk安裝包;所述解壓模塊包含apk執(zhí)行單元,用于執(zhí)行所述新的apk安裝包;算法加載單元,用于加載所述算法解壓庫(kù)并調(diào)用所述算法解壓庫(kù)的解壓函數(shù);算法解壓?jiǎn)卧糜诎凑账鰤嚎s率高于DEFLATE的算法解壓所述算法壓縮文件為apk文件;apk安裝單元,安裝所述apk文件。進(jìn)一步的,所述apk合成單元保存所述算法解壓庫(kù)于所述新的apk安裝包的lib 目錄下。進(jìn)一步的,所述算法編譯單元通過(guò)NDK編譯所述算法解壓庫(kù)。進(jìn)一步的,所述算法加載單元通過(guò)JM接口調(diào)用所述算法解壓庫(kù)的解壓函數(shù)。與現(xiàn)有技術(shù)相比,本發(fā)明提供的在嵌入式平臺(tái)安裝軟件的方法和系統(tǒng),把原始的apk安裝包解壓后得到的各個(gè)目錄和文件,打包為一個(gè)zip格式的未壓縮文件,然后采用一壓縮率高于DEFLATE的算法,如Lzma算法或Lzma2算法,對(duì)該文件進(jìn)行整體壓縮,減少了安裝包的大小,算法解壓庫(kù)存放在新的apk安裝包lib目錄里面,解壓時(shí)算法解壓庫(kù)的本地代碼執(zhí)行會(huì)比現(xiàn)有技術(shù)下java代碼執(zhí)行解壓的速度快,在線安裝方式下,可節(jié)約服務(wù)器的帶寬,縮短下載等待時(shí)間,提升用戶的使用體驗(yàn)。
圖1是本發(fā)明的在嵌入式平臺(tái)安裝軟件的方法的壓縮步驟流程圖;圖2是本發(fā)明的具體實(shí)施例的zip格式的文件的文件頭結(jié)構(gòu)圖;圖3是本發(fā)明的在嵌入式平臺(tái)安裝軟件的方法的解壓步驟流程圖;圖4是本發(fā)明的在嵌入式平臺(tái)安裝軟件的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提出的在嵌入式平臺(tái)安裝軟件的方法和系統(tǒng)作進(jìn)一步詳細(xì)說(shuō)明。本發(fā)明提出一種在嵌入式平臺(tái)安裝軟件的方法,該方法包括壓縮步驟和解壓步驟。所述嵌入式平臺(tái)可以為目前較主流的Android平臺(tái)。如圖1所示,所述壓縮步驟包括步驟Si,將原始的apk安裝包解壓為一個(gè)目錄,所述目錄包含assets目錄,lib目錄,res 目錄,Manifest, xml 文件以及 classes, dex 文件。步驟S2,將所述目錄打包為zip格式的文件,所述zip格式的文件為未壓縮的,其文件頭結(jié)構(gòu)包含如圖2所示的各個(gè)組成。步驟S3,按照一壓縮率高于DEFLATE的算法對(duì)所述zip格式的文件進(jìn)行壓縮,得到算法壓縮文件。本步驟中,所述壓縮率高于DEFLATE的算法可以為L(zhǎng)zma算法或Lzma2算法,對(duì)所述zip格式的文件進(jìn)行壓縮,得到Lzma壓縮文件。步驟S4,按照所述壓縮率高于DEFLATE的算法編譯算法解壓庫(kù),并形成所述算法解壓庫(kù)的解壓函數(shù)。本步驟中,可以通過(guò)NDK來(lái)按照所述算法編譯所述算法解壓庫(kù)。NDK全(Native Development Kit)提供了一系列的工具,幫助開(kāi)發(fā)者快速開(kāi)發(fā)C(或C++)的動(dòng)態(tài)庫(kù),同時(shí), 集成了交叉編譯器,并提供了相應(yīng)的mk文件隔離CPU、平臺(tái)、ABI等差異。本步驟中,編譯算法解壓庫(kù)可以在軟件安裝前預(yù)先進(jìn)行,即步驟S4可以與步驟Sl至S3中的任意一個(gè)調(diào)換位置。步驟S5,將所述算法壓縮文件和算法解壓庫(kù)合成到新的apk安裝包。本步驟中,所述算法解壓庫(kù)保存于所述新的apk安裝包的lib目錄下。如圖3所示,所述解壓步驟包括步驟S6,執(zhí)行所述新的apk安裝包;步驟S7,加載所述算法解壓庫(kù)并調(diào)用所述算法解壓庫(kù)的解壓函數(shù);本步驟中,可以通過(guò)JNI接口調(diào)用所述算法解壓庫(kù)的解壓函數(shù),JNI是JavaNative Interface的縮寫,中文為JAVA本地調(diào)用,它允許Java代碼和其他語(yǔ)言寫的代碼進(jìn)行交互,JNI 一開(kāi)始是為了本地已編譯語(yǔ)言,尤其是C和C++而設(shè)計(jì)的;步驟S8,按照所述壓縮率高于DEFLATE的算法解壓所述算法壓縮文件為apk文件;步驟S9,安裝所述apk文件,即將軟件安裝到所述嵌入式平臺(tái)中。需要說(shuō)明的是,所述算法壓縮文件在S5步驟中存放的位置不同,為在嵌入式平臺(tái)安裝軟件提供了兩種不同的方式加殼安裝方式和在線安裝方式。在步驟S5中,當(dāng)所述算法壓縮文件保存于所述新的apk安裝包的assets目錄或其他目錄下時(shí),產(chǎn)生了加殼安裝方式下,相應(yīng)的,所述步驟S8中,按照所述壓縮率高于DEFLATE的算法解壓所述assets目錄里的算法壓縮文件為apk文件;而當(dāng)所述算法壓縮文件保存于網(wǎng)絡(luò)服務(wù)器中時(shí),產(chǎn)生了在線安裝方式,相應(yīng)的,所述步驟S9中,要先從網(wǎng)絡(luò)服務(wù)器下載所述算法壓縮文件,再按照所述算法解壓為apk文件。相應(yīng)的,本發(fā)明提供一種在嵌入式平臺(tái)安裝軟件的系統(tǒng),該系統(tǒng)包括壓縮模塊10 和解壓模塊20。請(qǐng)參考圖4,所述壓縮模塊10包含apk解壓?jiǎn)卧?01,用于將原始的apk安裝包解壓為一個(gè)目錄;zip打包單元102,用于將所述目錄打包為zip格式的文件;算法壓縮單元103,用于按照一壓縮率高于DEFLATE的算法對(duì)所述zip格式的文件進(jìn)行壓縮,得到算法壓縮文件,其中,所述壓縮率高于DEFLATE的算法可以為L(zhǎng)zma算法或 Lzma2算法,算法壓縮單元103按照Lzma算法或Lzma2算法對(duì)所述zip格式的文件進(jìn)行壓縮,得到Lzma壓縮文件;算法編譯單元104,用于按照所述壓縮率高于DEFLATE的算法編譯算法解壓庫(kù),并形成所述算法解壓庫(kù)的解壓函數(shù),所述算法編譯單元104通過(guò)NDK編譯所述算法解壓庫(kù);apk合成單元105,用于將所述算法壓縮文件和算法解壓庫(kù)合成到新的apk安裝包,所述apk合成單元保存所述算法解壓庫(kù)于所述新的apk安裝包的lib目錄下;進(jìn)一步的,所述apk合成單元105在所述加殼安裝方式下將所述算法壓縮文件保存于所述新的apk 安裝包的assets目錄或其他目錄下,在所述在線安裝方式下將所述算法壓縮文件保存于網(wǎng)絡(luò)服務(wù)器中。請(qǐng)繼續(xù)參考圖4,所述解壓模塊20包含apk執(zhí)行單元201,用于執(zhí)行所述新的apk安裝包;算法加載單元202,用于加載所述算法解壓庫(kù)并調(diào)用所述算法解壓庫(kù)的解壓函數(shù), 其中,所述算法加載單元202可以通過(guò)JNI接口調(diào)用所述算法解壓庫(kù)的解壓函數(shù);算法解壓?jiǎn)卧?03,用于按照所述壓縮率高于DEFLATE的算法解壓所述算法壓縮文件為apk文件,在所述加殼安裝方式下,所述算法解壓?jiǎn)卧?03按照所述壓縮率高于 DEFLATE的算法解壓所述assets目錄里的算法壓縮文件為apk文件;在所述在線安裝方式下,所述算法解壓?jiǎn)卧?03從網(wǎng)絡(luò)服務(wù)器下載所述算法壓縮文件,并按照所述壓縮率高于 DEFLATE的算法解壓為apk文件;apk安裝單元204,安裝所述apk文件。綜上所述,本發(fā)明提供的在嵌入式平臺(tái)安裝軟件的方法和系統(tǒng),把原始的apk安
7裝包解壓后得到的各個(gè)目錄和文件,打包為一個(gè)zip格式的未壓縮文件,然后采用一壓縮率高于DEFLATE的算法,如Lzma算法或Lzma2算法,對(duì)該文件進(jìn)行整體壓縮,減少了安裝包的大小,算法解壓庫(kù)存放在新的apk安裝包lib目錄里面,解壓時(shí)算法解壓庫(kù)的本地代碼執(zhí)行會(huì)比現(xiàn)有技術(shù)下java代碼執(zhí)行解壓的速度快,在線安裝方式下,可節(jié)約服務(wù)器的帶寬, 縮短下載等待時(shí)間,提升用戶的使用體驗(yàn)。 顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種在嵌入式平臺(tái)安裝軟件的方法,其特征在于,包括壓縮步驟和解壓步驟,其中, 所述壓縮步驟包括將原始的apk安裝包解壓為一個(gè)目錄; 將所述目錄打包為zip格式的文件;按照一壓縮率高于DEFLATE的算法對(duì)所述zip格式的文件進(jìn)行壓縮,得到算法壓縮文件;按照所述壓縮率高于DEFLATE的算法編譯算法解壓庫(kù),并形成所述算法解壓庫(kù)的解壓函數(shù);將所述算法壓縮文件和算法解壓庫(kù)合成到新的apk安裝包; 所述解壓步驟包括 執(zhí)行所述新的apk安裝包;加載所述算法解壓庫(kù)并調(diào)用所述算法解壓庫(kù)的解壓函數(shù);按照所述壓縮率高于DEFLATE的算法解壓所述算法壓縮文件為apk文件;安裝所述apk文件。
2.如權(quán)利要求1所述的在嵌入式平臺(tái)安裝軟件的方法,其特征在于,所述嵌入式平臺(tái)為Android平臺(tái),所述壓縮率高于DEFLATE的算法為L(zhǎng)zma算法或Lzma2算法。
3.如權(quán)利要求1所述的在嵌入式平臺(tái)安裝軟件的方法,其特征在于,所述壓縮步驟中, 所述目錄包含assets目錄、lib目錄、res目錄、Manifest, xml文件以及classes, dex文件。
4.如權(quán)利要求3所述的在嵌入式平臺(tái)安裝軟件的方法,其特征在于,所述壓縮步驟中, 所述算法解壓庫(kù)保存于所述新的apk安裝包的lib目錄下。
5.如權(quán)利要求1至4中任一項(xiàng)所述的在嵌入式平臺(tái)安裝軟件的方法,其特征在于,所述壓縮步驟中,通過(guò)NDK編譯所述算法解壓庫(kù)。
6.如權(quán)利要求1至4中任一項(xiàng)所述的在嵌入式平臺(tái)安裝軟件的方法,其特征在于,所述解壓步驟中,通過(guò)JNI接口調(diào)用所述算法解壓庫(kù)的解壓函數(shù)。
7.—種在嵌入式平臺(tái)安裝軟件的系統(tǒng),其特征在于,包括壓縮模塊和解壓模塊,其中, 所述壓縮模塊包含apk解壓?jiǎn)卧?,用于將原始的apk安裝包解壓為一個(gè)目錄; zip打包單元,用于將所述目錄打包為zip格式的文件;算法壓縮單元,用于按照一壓縮率高于DEFLATE的算法對(duì)所述zip格式的文件進(jìn)行壓縮,得到算法壓縮文件;算法編譯單元,用于按照所述壓縮率高于DEFLATE的算法編譯算法解壓庫(kù),并形成所述算法解壓庫(kù)的解壓函數(shù);apk合成單元,用于將所述壓縮率高于DEFLATE的算法壓縮文件和算法解壓庫(kù)合成到新的apk安裝包;所述解壓模塊包含apk執(zhí)行單元,用于執(zhí)行所述新的apk安裝包;算法加載單元,用于加載所述算法解壓庫(kù)并調(diào)用所述算法解壓庫(kù)的解壓函數(shù); 算法解壓?jiǎn)卧?,用于按照所述壓縮率高于DEFLATE的算法解壓所述算法壓縮文件為apk文件;apk安裝單元,安裝所述apk文件。
8.如權(quán)利要求7所述在嵌入式平臺(tái)安裝軟件的系統(tǒng),其特征在于,所述嵌入式平臺(tái)為 Android平臺(tái),所述一壓縮率高于DEFLATE的算法為L(zhǎng)zma算法或Lzma2算法。
9.如權(quán)利要求7所述在嵌入式平臺(tái)安裝軟件的系統(tǒng),其特征在于,所述apk解壓?jiǎn)卧鈮旱玫降乃瞿夸洶琣ssets目錄、lib目錄、res目錄、Manifest, xml文件以及classes, dex文件。
10.如權(quán)利要求9所述在嵌入式平臺(tái)安裝軟件的系統(tǒng),其特征在于,所述apk合成單元保存所述算法解壓庫(kù)于所述新的apk安裝包的lib目錄下。
11.如權(quán)利要求7至10中任一項(xiàng)所述的在嵌入式平臺(tái)安裝軟件的方法,其特征在于,所述算法編譯單元通過(guò)NDK編譯所述算法解壓庫(kù)。
12.如權(quán)利要求7至10中任一項(xiàng)所述的在嵌入式平臺(tái)安裝軟件的方法,其特征在于,所述算法加載單元通過(guò)JNI接口調(diào)用所述算法解壓庫(kù)的解壓函數(shù)。
全文摘要
本發(fā)明提供一種在嵌入式平臺(tái)安裝軟件的方法和系統(tǒng),把原始的apk安裝包解壓后得到的各個(gè)目錄和文件,打包為一個(gè)zip格式的未壓縮文件,然后采用一壓縮率高于DEFLATE的算法,如Lzma算法或Lzma2算法,對(duì)該文件進(jìn)行整體壓縮,減少了安裝包的大小,算法解壓庫(kù)存放在新的apk安裝包lib目錄里面,解壓時(shí)算法解壓庫(kù)的本地代碼執(zhí)行會(huì)比現(xiàn)有技術(shù)下java代碼執(zhí)行解壓的速度快,在線安裝方式下,可節(jié)約服務(wù)器的帶寬,縮短下載等待時(shí)間,提升用戶的使用體驗(yàn)。
文檔編號(hào)G06F17/30GK102231117SQ20111019115
公開(kāi)日2011年11月2日 申請(qǐng)日期2011年7月8日 優(yōu)先權(quán)日2011年7月8日
發(fā)明者郭忠祥, 陳大年, 馬飛濤 申請(qǐng)人:盛樂(lè)信息技術(shù)(上海)有限公司