本技術(shù)涉及計算機,并且更具體地,涉及電子設(shè)備中一種應(yīng)用安裝包生成方法、裝置、電子設(shè)備以及可讀存儲介質(zhì)。
背景技術(shù):
1、在安卓(android)應(yīng)用的開發(fā)工作中,工程編譯是至關(guān)重要的一環(huán)。然而隨著用戶群體種類發(fā)展的越來越多,開發(fā)人員為了使得應(yīng)用程序(application,app)能夠適應(yīng)不同用戶群體的需求,往往會不斷為app添加新的配置信息,以此使得app運行不同的功能來滿足不同的用戶群體,但是在不斷為app添加新的配置信息后,會使得編寫app的代碼大幅度增加,從而導致app的安裝包的體積較大。
2、因此,如何減少app的安裝包的體積,是目前亟需解決的技術(shù)問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種應(yīng)用安裝包生成方法、裝置、電子設(shè)備以及可讀存儲介質(zhì),該方法能夠減少應(yīng)用安裝包的體積。
2、第一方面,提供了一種應(yīng)用安裝包生成方法,該方法包括:響應(yīng)于對目標應(yīng)用程序的編譯請求,生成目標應(yīng)用程序的第一安裝包,編譯請求用于請求生成至少兩個安裝包,一個安裝包對應(yīng)于一個功能需求;將第一安裝包進行復制,得到至少兩個第二安裝包,第二安裝包的數(shù)量與編譯請求對應(yīng)的功能需求的數(shù)量相同,至少兩個第二安裝包包括第一安裝包;獲取編譯請求對應(yīng)的至少兩個功能需求的應(yīng)用配置信息,應(yīng)用配置信息用于將目標應(yīng)用程序配置為滿足對應(yīng)的功能需求;將至少兩個功能需求的應(yīng)用配置信息分別寫入至少兩個第二安裝包,得到至少兩個目標安裝包。
3、上述技術(shù)方案中,在接收到對目標應(yīng)用程序的編譯請求,且該編譯請求用于請求生成至少兩個安裝包,一個安裝包對應(yīng)于一個功能需求時,可以先編譯打包生成目標應(yīng)用程序的第一安裝包,以將該第一安裝包作為基礎(chǔ)安裝包進行復制,得到至少兩個第二安裝包,該第二安裝包的個數(shù)與編譯請求對應(yīng)的功能需求的數(shù)量相同,然后獲取編譯請求對應(yīng)的至少兩個功能需求的應(yīng)用配置信息,并將每個功能需求的應(yīng)用配置信息分別寫入第二安裝包,以得到每個功能需求對應(yīng)的目標安裝包,即不同的目標安裝包用于滿足不同功能需求。由于得到的每個目標安裝包中僅包含了對應(yīng)的功能需求的應(yīng)用配置信息,換言之,每個目標安裝包中不會包含目標應(yīng)用程序的所有功能對應(yīng)的應(yīng)用配置信息,因此能夠有效減少目標安裝包的體積;另外,由于每個功能需求對應(yīng)的目標安裝包,是在第一安裝包的基礎(chǔ)上進行應(yīng)用配置信息的寫入而得到的,因此無需重新編譯整個目標應(yīng)用程序,從而可以減少包含不同應(yīng)用配置信息的目標安裝包的編譯時間,提高了與不同的功能需求對應(yīng)的目標安裝包的編譯效率。
4、結(jié)合第一方面和上述實現(xiàn)方式,在某些可能的實現(xiàn)方式中,響應(yīng)于對目標應(yīng)用程序的編譯請求,生成目標應(yīng)用程序的第一安裝包,包括:響應(yīng)于對目標應(yīng)用程序的編譯請求,從源代碼庫中獲取目標應(yīng)用程序的源代碼;基于預(yù)設(shè)的編譯環(huán)境,將源代碼編譯為可執(zhí)行文件,可執(zhí)行文件為計算機能夠執(zhí)行的文件;獲取目標應(yīng)用程序中的公共資源文件和公共配置信息,公共資源文件是指在目標應(yīng)用程序中共享的靜態(tài)資源,公共配置信息是指在目標應(yīng)用程序中共享的配置參數(shù);基于打包工具將可執(zhí)行文件、公共資源文件和公共配置信息進行打包,得到第一安裝包。
5、上述技術(shù)方案中,在生成目標應(yīng)用程序的第一安裝包的過程中,將公共資源文件和公共配置信息進行打包,可以減少重復資源的存儲和傳輸,另外由于生成的第一安裝包中包含了必要的資源文件和配置信息,因此能夠使得第一安裝包在任何環(huán)境下都能順利安裝和運行。
6、結(jié)合第一方面和上述實現(xiàn)方式,在某些可能的實現(xiàn)方式中,在生成目標應(yīng)用程序的第一安裝包之前,該方法還包括:將與目標應(yīng)用程序的各個功能對應(yīng)的應(yīng)用配置信息寫入目標目錄,并生成一個文件名,目標目錄為在響應(yīng)于對目標應(yīng)用程序的編譯;獲取編譯請求對應(yīng)的至少兩個功能需求的應(yīng)用配置信息,包括:調(diào)用目標函數(shù),基于目標函數(shù)和文件名,讀取寫入目標目錄中的與編譯請求對應(yīng)的至少兩個功能需求的應(yīng)用配置信息,目標函數(shù)用于定位至少兩個功能需求的應(yīng)用配置信息在目標目錄中的位置,并讀取至少兩個功能需求的應(yīng)用配置信息。
7、上述技術(shù)方案中,在生成目標應(yīng)用程序的第一安裝包之前,可以將與目標應(yīng)用程序的各個功能對應(yīng)的應(yīng)用配置信息存儲在目標目錄中,以使得應(yīng)用配置信息可以獨立于目標應(yīng)用程序的源代碼進行管理和修改,從而使得在為目標應(yīng)用程序配置不同的功能時,只需更新應(yīng)用配置信息,而不需要修改目標應(yīng)用程序的源代碼,以此簡化開發(fā)人員的維護工作;另外,通過目標函數(shù)和文件名定位并讀取應(yīng)用配置信息,可以提高讀取效率,減少不必要的搜索時間。
8、結(jié)合第一方面和上述實現(xiàn)方式,在某些可能的實現(xiàn)方式中,每個功能需求均對應(yīng)有一個標識符,標識符與應(yīng)用配置信息關(guān)聯(lián);在生成目標應(yīng)用程序的第一安裝包之前,該方法還包括:將與目標應(yīng)用程序的各個功能對應(yīng)的應(yīng)用配置信息寫入數(shù)據(jù)庫;獲取編譯請求對應(yīng)的至少兩個功能需求的應(yīng)用配置信息,包括:確定每個功能需求的標識符,基于每個功能需求的標識符,從數(shù)據(jù)庫中獲取與每個功能需求的標識符關(guān)聯(lián)的應(yīng)用配置信息,以得到至少兩個功能需求的應(yīng)用配置信息。
9、上述技術(shù)方案中,通過為每個功能需求分配唯一的標識符,并將其與應(yīng)用配置信息關(guān)聯(lián),可以確保每個功能需求的應(yīng)用配置信息的準確性。
10、結(jié)合第一方面和上述實現(xiàn)方式,在某些可能的實現(xiàn)方式中,將至少兩個功能需求的應(yīng)用配置信息分別寫入至少兩個第二安裝包,得到至少兩個目標安裝包,包括:檢測至少兩個功能需求的應(yīng)用配置信息的格式是否正確;在至少兩個功能需求的應(yīng)用配置信息的格式正確的情況下,基于壓縮算法對每個功能需求的應(yīng)用配置信息進行壓縮,得到壓縮后的至少兩個功能需求的應(yīng)用配置信息;將壓縮后的至少兩個功能需求的應(yīng)用配置信息,分別寫入第二安裝包,得到至少兩個目標安裝包。
11、上述技術(shù)方案中,在得到至少兩個目標安裝包時,通過檢測至少兩個功能需求的應(yīng)用配置信息的格式是否正確,可以提前發(fā)現(xiàn)并修正應(yīng)用配置信息中的錯誤格式,以保證每個功能需求的應(yīng)用配置信息均符合預(yù)期格式,從而確保生成的目標安裝包可以成功運行;另外,在應(yīng)用配置信息的格式正確的情況下,使用壓縮算法對應(yīng)用配置信息進行壓縮,可以顯著減小應(yīng)用配置信息的體積,從而減少生成的目標安裝包的體積。
12、結(jié)合第一方面和上述實現(xiàn)方式,在某些可能的實現(xiàn)方式中,每個目標安裝包對應(yīng)有一個初始的數(shù)字簽名,數(shù)字簽名用于驗證目標安裝包是否被非法篡改,該方法還包括:在得到至少兩個目標安裝包之后,刪除至少兩個目標安裝包的初始數(shù)字簽名;基于哈希算法對每個目標安裝包中的各個文件進行哈希計算,以為每個目標安裝包生成一個第一哈希值;基于預(yù)設(shè)私鑰對每個第一哈希值進行加密,以重新為每個目標安裝包生成一個目標數(shù)字簽名。
13、需要說明的是,為了保證第一安裝包的安全性,在生成第一安裝包時也會為基于第一安裝包中的各個文件為第一安裝包生成一個數(shù)字簽名,以驗證第一安裝包中的配置信息是否被篡改,那么可以理解的是,基于第一安裝復制得到的每個第二安裝包會有相同的數(shù)字簽名,且基于第二安裝包得到的每個目標安裝包也會有相同的數(shù)字簽名,也即是每個目標安裝包均對應(yīng)有一個初始的數(shù)字簽名,但是在將至少兩個功能需求的應(yīng)用配置信息分別寫入至少兩個第二安裝包,得到至少兩個目標安裝包后,由于目標安裝包中的配置信息與第一安裝包中的配置信息不一致,因此基于目標安裝包中的各個文件生成的數(shù)字簽名與初始的數(shù)字簽名不一致,從而導致目標安裝包在安裝時無法通過校驗,即為了避免目標安裝包在安裝時無法通過校驗,在上述技術(shù)方案中,在得到至少兩個目標安裝包之后,可以刪除每個目標安裝包的初始數(shù)字簽名,并重新為每個目標安裝包進行簽名,以確保得到的目標安裝包在安裝時可以順利通過校驗。
14、結(jié)合第一方面和上述實現(xiàn)方式,在某些可能的實現(xiàn)方式中,在重新為每個目標安裝包生成一個目標數(shù)字簽名之后,方法還包括:基于與私鑰對應(yīng)的公鑰對每個目標安裝包的目標數(shù)字簽名進行解密,得到與每個目標安裝包對應(yīng)的第一哈希值;基于哈希算法對每個目標安裝包中的各個文件重新進行哈希計算,以為每個目標安裝包重新生成一個第二哈希值;將每個第一哈希值與對應(yīng)的每個第二哈希值進行比較,若第一哈希值與對應(yīng)的第二哈希值相同,則確定目標安裝包中的應(yīng)用配置信息在重新簽名過程中沒有被篡改或者丟失,否則需要重新生成目標安裝包,并重新進行簽名。
15、上述技術(shù)方案中,在重新為每個目標安裝包生成一個目標數(shù)字簽名之后,通過將重新生成的第二哈希值與解密目標數(shù)字簽名后得到的第一哈希值進行比較,以使得在第二哈希值與第一哈希值不相同的情況下,即在目標安裝包中的應(yīng)用配置信息在重新簽名過程中被篡改或者丟失的情況下,重新生成目標安裝包并重新進行簽名,從而確保最終得到的目標安裝包中的應(yīng)用配置信息的準確性,進而保證生成的目標安裝包可以滿足對應(yīng)的功能需求。
16、第二方面,提供了一種應(yīng)用安裝包生成裝置,該裝置包括:
17、生成模塊,用于響應(yīng)于對目標應(yīng)用程序的編譯請求,生成目標應(yīng)用程序的第一安裝包,編譯請求用于請求生成至少兩個安裝包,一個安裝包對應(yīng)于一個功能需求;
18、復制模塊,用于將第一安裝包進行復制,得到至少兩個第二安裝包,第二安裝包的數(shù)量與編譯請求對應(yīng)的功能需求的數(shù)量相同,至少兩個第二安裝包包括第一安裝包;
19、獲取模塊,用于獲取編譯請求對應(yīng)的至少兩個功能需求的應(yīng)用配置信息,應(yīng)用配置信息用于將目標應(yīng)用程序配置為滿足對應(yīng)的功能需求;
20、寫入模塊,用于將至少兩個功能需求的應(yīng)用配置信息分別寫入至少兩個第二安裝包,得到至少兩個目標安裝包。
21、第三方面,提供一種電子設(shè)備,該電子設(shè)備包括存儲器和處理器。該存儲器用于存儲可執(zhí)行程序代碼,該處理器用于從存儲器中調(diào)用并運行該可執(zhí)行程序代碼,使得該電子設(shè)備執(zhí)行上述第一方面或第一方面任意一種可能的實現(xiàn)方式中的應(yīng)用安裝包生成方法。
22、第四方面,提供了一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括:計算機程序代碼,當該計算機程序代碼在計算機上運行時,使得該計算機執(zhí)行上述第一方面或第一方面任意一種可能的實現(xiàn)方式中的應(yīng)用安裝包生成方法。
23、第五方面,提供了一種計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)存儲有計算機程序代碼,當該計算機程序代碼在計算機上運行時,使得該計算機執(zhí)行上述第一方面或第一方面任意一種可能的實現(xiàn)方式中的應(yīng)用安裝包生成方法。