本發(fā)明涉及信息技術(shù)(IT,Information Technology)領(lǐng)域,尤其涉及一種動(dòng)態(tài)庫(kù)文件的處理方法及裝置。
背景技術(shù):
目前,隨著應(yīng)用程序中應(yīng)用功能的不斷豐富,應(yīng)用程序的安裝包大小變得越來(lái)越大。由于單純通過(guò)編寫應(yīng)用程序的上層代碼已經(jīng)無(wú)法實(shí)現(xiàn)特殊的功能,通常采用某些調(diào)用接口技術(shù)來(lái)完成應(yīng)用層和底層代碼的互相調(diào)用,例如,在Java中調(diào)用本地C/C++代碼的Java本地接口(JNI)機(jī)制。
但是,使用這些調(diào)用接口技術(shù)往往會(huì)生成比較大的動(dòng)態(tài)庫(kù)文件,或者數(shù)量比較多的動(dòng)態(tài)庫(kù)文件,例如so庫(kù)文件,這需要使用大量的存儲(chǔ)空間來(lái)存儲(chǔ)這些動(dòng)態(tài)庫(kù)文件時(shí),并且在應(yīng)用程序調(diào)用這些動(dòng)態(tài)庫(kù)文件時(shí)不夠靈活,耗時(shí)較長(zhǎng),降低了電子設(shè)備的資源利用率。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種動(dòng)態(tài)庫(kù)文件的處理方法及裝置,可以節(jié)省電子設(shè)備的資源占用,提高電子設(shè)備的資源利用率。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
本發(fā)明提供了一種動(dòng)態(tài)庫(kù)文件的處理方法,應(yīng)用于電子設(shè)備中的操作系統(tǒng)客戶端,操作系統(tǒng)客戶端通過(guò)壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包,并生成針對(duì)壓縮包的接口文件和解壓縮處理文件,當(dāng)操作系統(tǒng)客戶端中運(yùn)行的一應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),方法包括:通過(guò)加載接口文件獲取調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口;當(dāng)通過(guò)調(diào)用應(yīng)用程序接口判斷出內(nèi)存中不存在原始動(dòng)態(tài)庫(kù)文件時(shí),使用解壓縮處理文件對(duì)壓縮包進(jìn)行解壓縮以得到原 始動(dòng)態(tài)庫(kù)文件。
本發(fā)明還提供了一種動(dòng)態(tài)庫(kù)文件的處理裝置,應(yīng)用于電子設(shè)備中的操作系統(tǒng)客戶端,裝置包括:壓縮模塊,用于通過(guò)壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包;生成模塊,用于生成針對(duì)壓縮模塊生成的壓縮包的接口文件和解壓縮處理文件;當(dāng)操作系統(tǒng)客戶端中運(yùn)行的一應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),裝置還包括:獲取模塊,用于通過(guò)加載生成模塊生成的接口文件獲取調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口;第一判斷模塊,用于通過(guò)調(diào)用獲取模塊得到的應(yīng)用程序接口判斷內(nèi)存中是否存在原始動(dòng)態(tài)庫(kù)文件;及,解壓縮模塊,用于當(dāng)?shù)谝慌袛嗄K判斷出內(nèi)存中不存在原始動(dòng)態(tài)庫(kù)文件時(shí),使用生成模塊生成的解壓縮處理文件對(duì)壓縮模塊生成的壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
與現(xiàn)有技術(shù)相比,本發(fā)明通過(guò)壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包,節(jié)省電子設(shè)備的資源占用;通過(guò)生成針對(duì)壓縮包的接口文件,無(wú)需破壞原有動(dòng)態(tài)庫(kù)文件的程序邏輯;以及通過(guò)加載接口文件調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口進(jìn)行判斷,進(jìn)而使用解壓縮處理文件對(duì)壓縮包進(jìn)行解壓縮,提高了調(diào)用原始動(dòng)態(tài)庫(kù)文件的靈活性,提高電子設(shè)備的資源利用率。
附圖說(shuō)明
圖1為依據(jù)本發(fā)明一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理方法的流程示意圖;
圖2為依據(jù)本發(fā)明另一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理方法的流程示意圖;
圖3為依據(jù)本發(fā)明又一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理方法的流程示意圖;
圖4a為依據(jù)本發(fā)明一實(shí)施例的選擇壓縮包存儲(chǔ)方式的用戶界面示意圖;
圖4b為依據(jù)本發(fā)明一實(shí)施例的顯示解壓提示信息的用戶界面示意圖;
圖4c為依據(jù)本發(fā)明一實(shí)施例的顯示下載提示信息的用戶界面示意圖;
圖5為依據(jù)本發(fā)明一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理裝置的組成示意圖;
圖6為依據(jù)本發(fā)明另一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理裝置的組成示意圖;
圖7為依據(jù)本發(fā)明一實(shí)例的電子設(shè)備的硬件結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為依據(jù)本發(fā)明一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理方法的流程示意圖。該方法應(yīng)用于電子設(shè)備中的操作系統(tǒng)客戶端,參見圖1,該方法包括:
步驟101、操作系統(tǒng)客戶端通過(guò)壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包,并生成針對(duì)壓縮包的接口文件和解壓縮處理文件。
本步驟中,操作系統(tǒng)可以為開放式操作系統(tǒng),例如安卓系統(tǒng),也可以為封閉式操作系統(tǒng),例如蘋果的IOS系統(tǒng)。原始動(dòng)態(tài)庫(kù)文件可以為應(yīng)用程序的so庫(kù)文件,該so庫(kù)文件是一種用c/c++語(yǔ)言編譯、在基于linux語(yǔ)言開發(fā)的安卓系統(tǒng)中運(yùn)行的動(dòng)態(tài)庫(kù)文件。所生成的壓縮包作為該應(yīng)用程序的安裝包來(lái)使用。
在一實(shí)施例中,可以使用LZMA(Lempel-Ziv-Markov chain-Algorithm)算法對(duì)原始動(dòng)態(tài)庫(kù)文件進(jìn)行壓縮以生成壓縮包。LZMA算法是一種優(yōu)化了的壓縮算法,使用區(qū)間編碼支持的LZ77改進(jìn)壓縮算法以及特殊的用于二進(jìn)制的預(yù)處理程序,對(duì)數(shù)據(jù)流、重復(fù)序列大小以及重續(xù)序列位置單獨(dú)進(jìn)行壓縮。和現(xiàn)有壓縮技術(shù)中通過(guò)混淆代碼(例如,java代碼)來(lái)減小代碼的體積空間或者通過(guò)混淆安裝包中的資源名字來(lái)減小資源描述文件的體積以減小壓縮包的大小相比,LZMA算法具有高壓縮比、解壓縮代碼量小、速度快等特點(diǎn)。
例如,以一個(gè)1600KB大小的so庫(kù)為例,在使用現(xiàn)有壓縮技術(shù)的情況下,該so庫(kù)中的文件被打包成壓縮包后的大小為760KB,相比壓縮前減小了840KB。而使用LZMA算法可以將該so庫(kù)中的文件壓縮到570KB,相比壓縮前減小了1030KB,相比現(xiàn)有壓縮技術(shù)得到的壓縮包減少了200KB的大小。
這里,將多個(gè)原始動(dòng)態(tài)庫(kù)文件進(jìn)行壓縮,可以生成一個(gè)壓縮包文件,也可以生成多個(gè)壓縮包文件,使得應(yīng)用程序在調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),可以只調(diào)用所需的部分動(dòng)態(tài)庫(kù)文件。
在一實(shí)施例中,所生成的接口文件可以命名為.jar文件,并且存儲(chǔ)于內(nèi)存中的庫(kù)文件夾中,例如,將接口文件so_compress.jar文件放于libs文件夾中。解壓縮處理文件可以命名為.so文件,并且存儲(chǔ)于庫(kù)文件夾的子文件夾中,根據(jù)電子設(shè)備所使用處理器的類型來(lái)確定子文件夾的名稱,例如,根據(jù)中央處理器(CPU)的類型確定該子文件夾為libs/x86或者libs/armeabi,可以將解壓縮處理文so_compress.so文件放于所確定的子文件夾中。
步驟102、當(dāng)操作系統(tǒng)客戶端中運(yùn)行的一應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),通過(guò)加載接口文件獲取調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口。
本步驟中,當(dāng)應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),通過(guò)訪問(wèn)庫(kù)文件夾來(lái)加載接口文件以獲取應(yīng)用程序接口。例如,訪問(wèn)libs文件夾,加載so_compress.jar文件,獲取應(yīng)用程序接口SoCompress.getSoPath(libSoName),其中l(wèi)ibSoName為原so庫(kù)的名字。
步驟103、當(dāng)通過(guò)調(diào)用應(yīng)用程序接口判斷出內(nèi)存中不存在原始動(dòng)態(tài)庫(kù)文件時(shí),使用解壓縮處理文件對(duì)壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
本步驟中,通過(guò)調(diào)用應(yīng)用程序接口判斷內(nèi)存中是否存在要調(diào)用的原始動(dòng)態(tài)庫(kù)文件,若存在,則直接調(diào)用該原始動(dòng)態(tài)庫(kù)文件;若不存在,訪問(wèn)庫(kù)文件夾的子文件夾獲取解壓縮處理文件。例如,訪問(wèn)libs/x86或者libs/armeabi,獲取so_compress.so文件,對(duì)壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
在本發(fā)明實(shí)施例中,操作系統(tǒng)客戶端通過(guò)使用LZMA算法壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包,能夠比現(xiàn)有壓縮技術(shù)提供更小的壓縮包,節(jié)省了電子設(shè)備的存儲(chǔ)資源;并生成針對(duì)壓縮包的接口文件,無(wú)需破壞原有動(dòng)態(tài)庫(kù)文件的程序邏輯,通過(guò)加載接口文件來(lái)調(diào)用應(yīng)用程序接口以確定要調(diào)用的原始動(dòng)態(tài)庫(kù)文件是否在內(nèi)存中,提高了調(diào)用原始動(dòng)態(tài)庫(kù)文件的靈活性。
圖2為依據(jù)本發(fā)明另一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理方法的流程示意圖。 該方法應(yīng)用于電子設(shè)備中的操作系統(tǒng)客戶端,參見圖2,該方法包括:
步驟201、操作系統(tǒng)客戶端通過(guò)壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包,并生成針對(duì)壓縮包的接口文件和解壓縮處理文件。
在一實(shí)施例中,對(duì)原始動(dòng)態(tài)庫(kù)文件進(jìn)行壓縮之前,可以將應(yīng)用程序需要的so庫(kù)文件放入一個(gè)庫(kù)文件夾中,例如libs文件夾,并在同級(jí)目錄中創(chuàng)建資源文件夾,例如assets文件夾,用于存放壓縮好的so庫(kù)文件。在使用本發(fā)明所提供的壓縮工具進(jìn)行壓縮之前,首先使用壓縮軟件(例如7z或winrar)將libs文件夾以及assets文件夾一同打包成一個(gè)文件包,例如打包成so.zip。
然后,使用本發(fā)明所提供的壓縮工具,例如名稱為L(zhǎng)ibSoCompress.jar,對(duì)該文件包so.zip進(jìn)行壓縮。具體應(yīng)用時(shí),可以使用命令“java-jar-a LibSoCompress.jar#文件包路徑#”,其中“#文件包路徑#”為so.zip的路徑,通過(guò)該命令使用LZMA算法將so.zip壓縮成壓縮包so_compressed.zip。
所生成的壓縮包可以選擇存儲(chǔ)于本地或者上傳到后臺(tái)服務(wù)器。例如,將so_compressed.zip存儲(chǔ)于本地assets文件夾下。若將壓縮包so_compressed.zip解zip壓縮,將得到so_compressed文件,該so_compressed文件對(duì)應(yīng)了使用LZMA算法壓縮前放入assets文件夾中的原始so庫(kù)文件。或者,也可以選擇將壓縮包上傳到后臺(tái)服務(wù)器,可以進(jìn)一步節(jié)省本地存儲(chǔ)資源。例如該后臺(tái)服務(wù)器為云端服務(wù)器,這時(shí)可以使用命令“java-jar-a LibSoCompress.jar#文件包路徑#-c#云端網(wǎng)址#”,其中“#文件包路徑#”為so.zip的路徑,“#云端網(wǎng)址#”為云端服務(wù)器的地址,例如http://libsocompress/so/。
步驟202、當(dāng)操作系統(tǒng)客戶端中運(yùn)行的一應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),通過(guò)加載接口文件獲取調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口。
此步驟描述和步驟102相同,在此不再贅述。
步驟203、通過(guò)調(diào)用應(yīng)用程序接口判斷內(nèi)存中是否存在原始動(dòng)態(tài)庫(kù)文件。若是,執(zhí)行步驟204;否則,執(zhí)行步驟205。
本步驟的目的是利用接口文件中給出的應(yīng)用程序接口對(duì)動(dòng)態(tài)庫(kù)文件的 調(diào)用進(jìn)行攔截,例如上述的SoCompress.getSoPath(libSoName)接口。在操作系統(tǒng)中運(yùn)行一應(yīng)用程序時(shí),會(huì)在內(nèi)存中針對(duì)該應(yīng)用程序自動(dòng)生成一個(gè)項(xiàng)目目錄用于存放所需的資源文件,例如/files文件夾,通過(guò)訪問(wèn)該項(xiàng)目目錄下的文件夾來(lái)判斷是否包含原始動(dòng)態(tài)庫(kù)文件。
步驟204、應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件。
具體應(yīng)用時(shí),在步驟203中確定了內(nèi)存中有原始動(dòng)態(tài)庫(kù)文件后,應(yīng)用程序可以直接訪問(wèn)內(nèi)存中項(xiàng)目目錄下的files文件夾,獲取原始動(dòng)態(tài)庫(kù)文件并進(jìn)行調(diào)用。
步驟205、判斷壓縮包是否被解壓過(guò)。
若判斷出內(nèi)存中沒(méi)有原始動(dòng)態(tài)庫(kù)文件后,再進(jìn)一步判斷之前是否曾經(jīng)解壓過(guò)壓縮包。在一實(shí)施例中,可以通過(guò)檢測(cè)內(nèi)存中是否存在解壓壓縮包時(shí)所生成的配置文件來(lái)判斷。若在內(nèi)存中檢測(cè)到該配置文件,則判斷出該壓縮包被解壓過(guò),依次執(zhí)行步驟206、步驟207和步驟204;否則,執(zhí)行步驟208。
步驟206、確定內(nèi)存中針對(duì)該應(yīng)用程序建立的存儲(chǔ)文件夾。
在內(nèi)存中針對(duì)該應(yīng)用程序建立的項(xiàng)目目錄下,找到用于存儲(chǔ)解壓縮后的動(dòng)態(tài)庫(kù)文件的存儲(chǔ)文件夾,例如,/files/so-uncompressed來(lái)獲取解壓縮后的原始動(dòng)態(tài)庫(kù)文件。
步驟207、將調(diào)用原始動(dòng)態(tài)庫(kù)文件的路徑地址替換成存儲(chǔ)文件夾的路徑地址。
具體應(yīng)用時(shí),對(duì)調(diào)用原始動(dòng)態(tài)庫(kù)文件的路徑地址進(jìn)行重置,替換為文件夾/files/so-uncompressed的路徑地址,將此作為解壓后的so庫(kù)路徑傳遞給System.load(path),以用于so庫(kù)文件的調(diào)用操作。
然后,再執(zhí)行步驟204,從而完成對(duì)調(diào)用原始動(dòng)態(tài)庫(kù)文件的調(diào)用。
步驟208、檢測(cè)內(nèi)存中是否包含壓縮包。
若步驟205中判斷壓縮包從未被解壓過(guò),即需要進(jìn)行初次解壓,那么進(jìn)一步檢測(cè)內(nèi)存中是否包含所需的壓縮包。若是,依次執(zhí)行步驟209、步驟210、步驟207和步驟204;否則,執(zhí)行步驟211。
步驟209、使用解壓縮處理文件對(duì)壓縮包進(jìn)行解壓以得到原始動(dòng)態(tài)庫(kù)文件。
在具體應(yīng)用時(shí),在assets文件夾中找到了壓縮包so_compressed文件后,使用解壓縮處理文件so_compress.so對(duì)壓縮包進(jìn)行解壓,從而得到原始so庫(kù)文件。
步驟210、將解壓得到的原始動(dòng)態(tài)庫(kù)文件存儲(chǔ)于內(nèi)存中針對(duì)該應(yīng)用程序建立的存儲(chǔ)文件夾中。
在具體應(yīng)用時(shí),將解壓得到的原始so庫(kù)文件存儲(chǔ)于內(nèi)存中針對(duì)該應(yīng)用程序建立的/files/so-uncompressed文件夾中。然后,再執(zhí)行步驟207以及步驟204,從而完成對(duì)調(diào)用原始動(dòng)態(tài)庫(kù)文件的調(diào)用。
步驟211、從服務(wù)器將壓縮包下載到本地。
若步驟208中檢測(cè)到內(nèi)存中不包含壓縮包,操作系統(tǒng)客戶端可以向后臺(tái)服務(wù)器請(qǐng)求獲得壓縮包,根據(jù)調(diào)用的需求可以選擇請(qǐng)求獲得部分壓縮包文件,從服務(wù)器下載壓縮包,并存儲(chǔ)到本地。例如,從云端服務(wù)器將壓縮包so_compressed.zip下載到電子設(shè)備的sd卡上。然后,依次執(zhí)行步驟209、步驟210、步驟207和步驟204,從而完成對(duì)調(diào)用原始動(dòng)態(tài)庫(kù)文件的調(diào)用。
此外,下載壓縮包時(shí)可以采用異步下載的方式,并且通過(guò)用戶界面接口顯示下載進(jìn)度。
在本發(fā)明實(shí)施例中,通過(guò)調(diào)用應(yīng)用程序接口判斷內(nèi)存中是否存在原始動(dòng)態(tài)庫(kù)文件,若不存在,判斷壓縮包是否被解壓過(guò),若為初次解壓,進(jìn)一步檢測(cè)內(nèi)存中是否包含壓縮包,實(shí)現(xiàn)對(duì)原始動(dòng)態(tài)庫(kù)文件的多種獲取方式,提高了靈活的調(diào)用方式;其中,將所生成的壓縮包存儲(chǔ)于本地或者上傳到云端服務(wù)器,可以實(shí)現(xiàn)對(duì)本地存儲(chǔ)資源的控制,提高了電子設(shè)備的資源利用率。
圖3為依據(jù)本發(fā)明又一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理方法的流程示意圖。該方法應(yīng)用于電子設(shè)備中的操作系統(tǒng)客戶端,參見圖3,該方法包括:
步驟301、使用LZMA算法壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包。
步驟302、選擇將壓縮包存儲(chǔ)于本地資源文件夾或者上傳至云端服務(wù)器。
在一個(gè)實(shí)施例中,接收用戶操作,根據(jù)用戶的指令進(jìn)行選擇。圖4a為依據(jù)本發(fā)明一實(shí)施例的選擇壓縮包存儲(chǔ)方式的用戶界面410示意圖。如圖4a所示,向用戶提供選項(xiàng):可以將生成的壓縮包存儲(chǔ)于本地文件夾,點(diǎn)擊按鈕411瀏覽本地資源管理器中的文件夾,進(jìn)而存儲(chǔ);或者,可以將生成的壓縮包上傳至云端,點(diǎn)擊按鈕412發(fā)送給服務(wù)器。
在其他實(shí)施例中,操作系統(tǒng)客戶端可以根據(jù)本地存儲(chǔ)資源的大小,自行判斷如何選擇。若本地存儲(chǔ)資源受限,剩余空間很小,那么選擇上傳至云端,將不會(huì)占用任何本地存儲(chǔ)資源。
步驟303、生成針對(duì)壓縮包的接口文件和解壓縮處理文件,并存儲(chǔ)于庫(kù)文件夾中。
例如,將接口文件so_compress.jar文件放于libs文件夾中,將解壓縮處理文so_compress.so文件放于libs/x86或者libs/armeabi中。
步驟304、當(dāng)操作系統(tǒng)客戶端中運(yùn)行的一應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),通過(guò)加載接口文件獲取調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口。
此步驟描述和步驟102相同,在此不再贅述。
步驟305、通過(guò)調(diào)用應(yīng)用程序接口判斷出內(nèi)存中是否存在原始動(dòng)態(tài)庫(kù)文件。若是,執(zhí)行步驟306;否則,執(zhí)行步驟307。
步驟306、應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件。
步驟307、檢測(cè)內(nèi)存中是否包含壓縮包。若是,依次執(zhí)行步驟308、步驟309/步驟310和步驟306;否則,執(zhí)行步驟311。
步驟308、使用解壓縮處理文件對(duì)壓縮包進(jìn)行解壓以得到原始動(dòng)態(tài)庫(kù)文件,并存儲(chǔ)于內(nèi)存中針對(duì)該應(yīng)用程序建立的存儲(chǔ)文件夾中。
此步驟描述和步驟209、步驟210相同,在此不再贅述。
步驟309、將調(diào)用原始動(dòng)態(tài)庫(kù)文件的路徑地址替換成存儲(chǔ)文件夾的路徑地址。
此步驟描述和步驟207相同,在此不再贅述。
步驟310、當(dāng)對(duì)壓縮包進(jìn)行解壓時(shí),在用戶界面上顯示解壓提示信息。
圖4b為依據(jù)本發(fā)明一實(shí)施例的顯示解壓提示信息的用戶界面420示意圖。如圖所示,當(dāng)對(duì)壓縮包進(jìn)行解壓縮時(shí),提示用戶正在解壓縮中,通過(guò)進(jìn)度顯示條421中的陰影部分來(lái)顯示已解壓的文件的比例。
步驟311、從服務(wù)器將壓縮包下載到本地,并在用戶界面上顯示下載提示信息。
圖4c為依據(jù)本發(fā)明一實(shí)施例的顯示下載提示信息的用戶界面430示意圖。如圖所示,從云端下載壓縮包時(shí),提示用戶正在下載中,通過(guò)進(jìn)度顯示條431中顯示所需的時(shí)間,其中的陰影部分顯示已下載文件的比例。
本發(fā)明實(shí)施例還提供了一種動(dòng)態(tài)庫(kù)文件的處理裝置。圖5為依據(jù)本發(fā)明一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理裝置500的組成示意圖,應(yīng)用于電子設(shè)備中的操作系統(tǒng)客戶端,包括:
壓縮模塊510,用于通過(guò)壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包;
生成模塊520,用于生成針對(duì)壓縮模塊510生成的壓縮包的接口文件和解壓縮處理文件:
當(dāng)操作系統(tǒng)客戶端中運(yùn)行的一應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),裝置500還包括:
獲取模塊530,用于通過(guò)加載生成模塊520生成的接口文件獲取調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口;
第一判斷模塊540,用于通過(guò)調(diào)用獲取模塊530得到的應(yīng)用程序接口判斷內(nèi)存中是否存在原始動(dòng)態(tài)庫(kù)文件;及,
解壓縮模塊550,用于當(dāng)?shù)谝慌袛嗄K540判斷出內(nèi)存中不存在原始動(dòng)態(tài)庫(kù)文件時(shí),使用生成模塊520生成的解壓縮處理文件對(duì)壓縮模塊510生成的壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
圖6為依據(jù)本發(fā)明另一實(shí)施例的動(dòng)態(tài)庫(kù)文件的處理裝置600的組成示意圖。在圖5所示的裝置500的基礎(chǔ)之上,裝置600還包括:
第二判斷模塊560,用于當(dāng)?shù)谝慌袛嗄K540判斷出內(nèi)存中不存在原始動(dòng)態(tài)庫(kù)文件時(shí),判斷壓縮包是否被解壓過(guò);
檢測(cè)模塊570,用于當(dāng)?shù)诙袛嗄K560判斷出壓縮包未被解壓過(guò)時(shí),檢測(cè)內(nèi)存中是否包含壓縮包;
相應(yīng)地,解壓縮模塊550,用于當(dāng)檢測(cè)模塊570檢測(cè)到內(nèi)存中包含壓縮包時(shí),使用生成模塊520生成的解壓縮處理文件對(duì)壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
在一實(shí)施例中,裝置600還包括:
發(fā)送模塊580,用于將壓縮模塊510生成的壓縮包上傳至服務(wù)器;
接收模塊590,用于當(dāng)檢測(cè)模塊570檢測(cè)到內(nèi)存中不包含壓縮包時(shí),從服務(wù)器將壓縮包下載到本地;
相應(yīng)地,解壓縮模塊,用于使用生成模塊520生成的解壓縮處理文件對(duì)接收模塊590接收到的壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
在一實(shí)施例中,裝置600還包括:
存儲(chǔ)模塊610,用于將解壓縮模塊550解壓得到的原始動(dòng)態(tài)庫(kù)文件存儲(chǔ)于內(nèi)存中針對(duì)該應(yīng)用程序建立的存儲(chǔ)文件夾中;
替換模塊620,用于將調(diào)用原始動(dòng)態(tài)庫(kù)文件的路徑地址替換成存儲(chǔ)模塊存儲(chǔ)到的存儲(chǔ)文件夾的路徑地址。
在一實(shí)施例中,裝置600還包括:
確定模塊630,用于當(dāng)?shù)诙袛嗄K560判斷出壓縮包被解壓過(guò)時(shí),確定內(nèi)存中針對(duì)該應(yīng)用程序建立的存儲(chǔ)文件夾;
替換模塊620,用于將調(diào)用原始動(dòng)態(tài)庫(kù)文件的路徑地址替換成確定模塊確定的存儲(chǔ)文件夾的路徑地址。
在一實(shí)施例中,第二判斷模塊560,用于檢測(cè)內(nèi)存中是否存在解壓壓縮包時(shí)所生成的配置文件。
在一實(shí)施例中,接口文件被存儲(chǔ)于內(nèi)存中的庫(kù)文件夾中,解壓縮處理文件被存儲(chǔ)于庫(kù)文件夾的子文件夾中;
相應(yīng)地,獲取模塊530,用于訪問(wèn)庫(kù)文件夾來(lái)加載接口文件;
解壓縮模塊550,用于通過(guò)讀取電子設(shè)備所使用處理器的類型訪問(wèn)庫(kù)文件夾 的子文件夾以獲取解壓縮處理文件。
上述裝置實(shí)施例中,各個(gè)模塊及單元實(shí)現(xiàn)自身功能的具體方法在方法實(shí)施例中均有描述,這里不再贅述。
圖7為依據(jù)本發(fā)明一實(shí)例的電子設(shè)備700的硬件結(jié)構(gòu)示意圖。該電子設(shè)備可包括:處理器710、存儲(chǔ)器720、端口730以及總線740。處理器710和存儲(chǔ)器720通過(guò)總線740互聯(lián)。處理器710可通過(guò)端口730接收和發(fā)送數(shù)據(jù)。其中,
處理器710用于執(zhí)行存儲(chǔ)器720存儲(chǔ)的機(jī)器可讀指令模塊。
存儲(chǔ)器720存儲(chǔ)有處理器710可執(zhí)行的機(jī)器可讀指令模塊。處理器710可執(zhí)行的指令模塊包括:壓縮模塊721、生成模塊722、獲取模塊723、第一判斷模塊724和解壓縮模塊725。其中,
壓縮模塊721被處理器710執(zhí)行時(shí)可以為:通過(guò)壓縮原始動(dòng)態(tài)庫(kù)文件生成壓縮包;
生成模塊722被處理器710執(zhí)行時(shí)可以為:生成針對(duì)壓縮模塊721生成的壓縮包的接口文件和解壓縮處理文件;
當(dāng)操作系統(tǒng)客戶端中運(yùn)行的一應(yīng)用程序調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí),獲取模塊723被處理器710執(zhí)行時(shí)可以為:通過(guò)加載生成模塊722生成的接口文件獲取調(diào)用原始動(dòng)態(tài)庫(kù)文件時(shí)所需的應(yīng)用程序接口;
第一判斷模塊724被處理器710執(zhí)行時(shí)可以為:通過(guò)調(diào)用獲取模塊723得到的應(yīng)用程序接口判斷內(nèi)存中是否存在原始動(dòng)態(tài)庫(kù)文件;
解壓縮模塊725被處理器710執(zhí)行時(shí)可以為:當(dāng)?shù)谝慌袛嗄K724判斷出內(nèi)存中不存在原始動(dòng)態(tài)庫(kù)文件時(shí),使用生成模塊722生成的解壓縮處理文件對(duì)壓縮模塊721生成的壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
在一實(shí)施例中,存儲(chǔ)器720存儲(chǔ)的處理器710可執(zhí)行的指令模塊還包括:第二判斷模塊726和檢測(cè)模塊727。其中,
第二判斷模塊726被處理器710執(zhí)行時(shí)可以為:當(dāng)?shù)谝慌袛嗄K724判斷出內(nèi)存中不存在原始動(dòng)態(tài)庫(kù)文件時(shí),判斷壓縮包是否被解壓過(guò);
檢測(cè)模塊727被處理器710執(zhí)行時(shí)可以為:當(dāng)?shù)诙袛嗄K726判斷出壓縮包未被解壓過(guò)時(shí),檢測(cè)內(nèi)存中是否包含壓縮包;
相應(yīng)地,解壓縮模塊725被處理器710執(zhí)行時(shí)可以為:當(dāng)檢測(cè)模塊727檢測(cè)到內(nèi)存中包含壓縮包時(shí),使用生成模塊722生成的解壓縮處理文件對(duì)壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
在一實(shí)施例中,存儲(chǔ)器720存儲(chǔ)的處理器710可執(zhí)行的指令模塊還包括:發(fā)送模塊728和接收模塊729。其中,
發(fā)送模塊728被處理器710執(zhí)行時(shí)可以為:將壓縮模塊721生成的壓縮包上傳至服務(wù)器;
接收模塊729被處理器710執(zhí)行時(shí)可以為:當(dāng)檢測(cè)模塊727檢測(cè)到內(nèi)存中不包含壓縮包時(shí),從服務(wù)器將壓縮包下載到本地;
相應(yīng)地,解壓縮模塊725被處理器710執(zhí)行時(shí)可以為:使用生成模塊722生成的解壓縮處理文件對(duì)接收模塊729接收到的壓縮包進(jìn)行解壓縮以得到原始動(dòng)態(tài)庫(kù)文件。
在一實(shí)施例中,存儲(chǔ)器720存儲(chǔ)的處理器710可執(zhí)行的指令模塊還包括:存儲(chǔ)模塊810和替換模塊820。其中,
存儲(chǔ)模塊810被處理器710執(zhí)行時(shí)可以為:將解壓縮模塊725解壓得到的原始動(dòng)態(tài)庫(kù)文件存儲(chǔ)于內(nèi)存中針對(duì)該應(yīng)用程序建立的存儲(chǔ)文件夾中;
替換模塊820被處理器710執(zhí)行時(shí)可以為:將調(diào)用原始動(dòng)態(tài)庫(kù)文件的路徑地址替換成存儲(chǔ)模塊存儲(chǔ)到的存儲(chǔ)文件夾的路徑地址。
在一實(shí)施例中,存儲(chǔ)器720存儲(chǔ)的處理器710可執(zhí)行的指令模塊還包括:確定模塊830和替換模塊820。其中,
確定模塊830被處理器710執(zhí)行時(shí)可以為:當(dāng)?shù)诙袛嗄K726判斷出壓縮包被解壓過(guò)時(shí),確定內(nèi)存中針對(duì)該應(yīng)用程序建立的存儲(chǔ)文件夾;
替換模塊820被處理器710執(zhí)行時(shí)可以為:將調(diào)用原始動(dòng)態(tài)庫(kù)文件的路徑地址替換成存儲(chǔ)模塊存儲(chǔ)到的存儲(chǔ)文件夾的路徑地址。
由此可以看出,當(dāng)存儲(chǔ)在存儲(chǔ)器720中的指令模塊被處理器710執(zhí)行 時(shí),可實(shí)現(xiàn)前述各個(gè)實(shí)施例中壓縮模塊、生成模塊、獲取模塊、第一判斷模塊、解壓縮模塊、第二判斷模塊、檢測(cè)模塊、發(fā)送模塊、接收模塊、存儲(chǔ)模塊、替換模塊和確定模塊的各種功能。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一個(gè)處理單元中,也可以是各個(gè)模塊單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上模塊集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
另外,本發(fā)明的每一個(gè)實(shí)施例可以通過(guò)由數(shù)據(jù)處理設(shè)備如計(jì)算機(jī)執(zhí)行的數(shù)據(jù)處理程序來(lái)實(shí)現(xiàn)。顯然,數(shù)據(jù)處理程序構(gòu)成了本發(fā)明。此外,通常存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中的數(shù)據(jù)處理程序通過(guò)直接將程序讀取出存儲(chǔ)介質(zhì)或者通過(guò)將程序安裝或復(fù)制到數(shù)據(jù)處理設(shè)備的存儲(chǔ)設(shè)備(如硬盤和或內(nèi)存)中執(zhí)行。因此,這樣的存儲(chǔ)介質(zhì)也構(gòu)成了本發(fā)明。存儲(chǔ)介質(zhì)可以使用任何類型的記錄方式,例如紙張存儲(chǔ)介質(zhì)(如紙帶等)、磁存儲(chǔ)介質(zhì)(如軟盤、硬盤、閃存等)、光存儲(chǔ)介質(zhì)(如CD-ROM等)、磁光存儲(chǔ)介質(zhì)(如MO等)等。
本發(fā)明還公開了一種存儲(chǔ)介質(zhì),其中存儲(chǔ)有數(shù)據(jù)處理程序,該數(shù)據(jù)處理程序用于執(zhí)行本發(fā)明上述方法的任何一種實(shí)施例。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。