本發(fā)明涉及基于安卓系統(tǒng)的移動智能設(shè)備技術(shù)領(lǐng)域,尤其涉及一種基于定制安卓平臺的應(yīng)用部署方法。
背景技術(shù):
從安卓平臺v4.4(androidv4.4)開始,google在android中用art(androidruntime)模式來代替dalvik虛擬機,它以aot(ahead-of-time)方式運行android應(yīng)用程序,在運行前將中間代碼靜態(tài)編譯為本地代碼,節(jié)省了jit(just-in-time)每次運行時進行轉(zhuǎn)換的時間開銷。然而,為兼容種類繁多的硬件設(shè)備,達到安卓應(yīng)用跨平臺運行的目的,即使是可以加快應(yīng)用程序運行速度的art模式,也并不要求開發(fā)者將自己的應(yīng)用直接編譯成目標機器碼,google原生apk格式安裝包仍然是一個包含dex字節(jié)碼的apk(androidpackage,即安卓應(yīng)用安裝文件)文件,設(shè)備在安裝應(yīng)用時仍然需要再次進行編譯優(yōu)化,將dex字節(jié)碼轉(zhuǎn)換為機器碼存儲在設(shè)備中,供運行應(yīng)用所用。
圖1為安卓系統(tǒng)應(yīng)用安裝邏輯關(guān)系圖。應(yīng)用層googlemarket、安卓系統(tǒng)內(nèi)置的packageinstaller或其它應(yīng)用市場在用戶點擊等觸發(fā)下,獲得待安裝的apk文件,并向中間層packagemanager發(fā)起安裝請求。packagemanager以binder(android系統(tǒng)進程間通信方式之一)方式將安裝請求提交給服務(wù)層的packagemanagerserivce處理,packagemanagerserivce使用socket內(nèi)部進程通訊的方式調(diào)用系統(tǒng)服務(wù)installd。installd執(zhí)行目標文件檢測、創(chuàng)建、權(quán)限更改等操作,最后使用execl調(diào)用安卓內(nèi)置的可執(zhí)行程序dex2oat或dexopt執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的目標文件。
圖2為安卓系統(tǒng)待安裝的app原始安裝包(即原始apk文件)結(jié)構(gòu)。android應(yīng)用是用java編寫的,利用androidsdk(androidsoftwaredevelopmentkit)編譯代碼,并且把所有的數(shù)據(jù)和資源文件打包成一個apk文件,這是一個后綴名為.apk的壓縮文件,apk文件中包含一個android應(yīng)用程序的所有內(nèi)容,是android平臺用于安裝應(yīng)用程序的文件。apk其實是一個zip壓縮包,其包含內(nèi)容有:assets目錄,用于存放需要打包到apk中的靜態(tài)文件;lib目錄,存放應(yīng)用程序依賴的native庫文件;res目錄,res是resource的縮寫,該目錄存放應(yīng)用程序的資源文件;meta-inf目錄,保存應(yīng)用的簽名信息和應(yīng)用開發(fā)者對應(yīng)用簽名時使用的簽名證書,用于驗證apk文件的完整性;androidmanifest.xml文件,是android應(yīng)用程序的配置文件;classes.dex文件,是android應(yīng)用可執(zhí)行部分在打包時編譯生成的特有的字節(jié)碼文件;resources.arsc文件,記錄資源文件和資源id之間的映射關(guān)系。
圖3為目前安卓系統(tǒng)應(yīng)用安裝流程圖,步驟如下:
第一步,用戶以點擊等方式觸發(fā)packageinstaller的apk安裝動作,并向packagemanager發(fā)起安裝請求。
第二步,packagemanager以binder方式將安裝請求發(fā)送給服務(wù)層的packagemanagerserivce。
第三步,packagemanagerserivce接收安裝請求后,使用socket內(nèi)部進程通訊方式將安裝請求提交給服務(wù)進程installd。
第四步,installd執(zhí)行安裝和apk優(yōu)化,方法是:
4.1執(zhí)行do_install函數(shù),調(diào)用安卓系統(tǒng)的install函數(shù),完成apk文件復(fù)制、目錄創(chuàng)建、權(quán)限更改等操作。
4.2執(zhí)行do_dexopt函數(shù),調(diào)用安卓系統(tǒng)的dexopt函數(shù),執(zhí)行apk優(yōu)化,方法是:
4.2.1根據(jù)從packagemanagerserivce傳來的參數(shù)計算待生成優(yōu)化目標文件的路徑。
4.2.2創(chuàng)建優(yōu)化目標文件、更改權(quán)限,獲得該優(yōu)化目標文件的讀寫操作句柄。
4.2.3調(diào)用安卓內(nèi)置的可執(zhí)行程序dex2oat或dexopt執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的優(yōu)化目標文件。
第五步,結(jié)束。
在整個應(yīng)用安裝過程中,消耗資源和時間最多的部分正是安卓系統(tǒng)應(yīng)用安裝流程圖4.2.3步中將apk文件中的classes.dex字節(jié)碼翻譯為最終執(zhí)行所需優(yōu)化字節(jié)碼或機器碼的過程,它占據(jù)應(yīng)用安裝過程的大部分性能開銷,導致應(yīng)用安裝耗時很長、系統(tǒng)響應(yīng)變慢,嚴重降低用戶體驗。這些問題在計算資源有限的移動智能設(shè)備上更加突出。
因此,研究一種基于安卓平臺的應(yīng)用快速部署方法,從而實現(xiàn)應(yīng)用快速安裝、減少計算資源需求和降低能耗,對計算資源有限的移動智能設(shè)備有著重要意義和實用價值。本發(fā)明通過將終端執(zhí)行所用的優(yōu)化目標文件(art虛擬機下的機器碼文件或dalvik虛擬機下的odex文件)內(nèi)置到安卓系統(tǒng)安裝包的方法,結(jié)合云端應(yīng)用商城和商城客戶端,構(gòu)建應(yīng)用快速部署系統(tǒng),加速安卓系統(tǒng)的app的安裝過程。查詢國內(nèi)外已發(fā)表的專利,目前還沒有公開的文獻涉及在安卓系統(tǒng)下通過最終執(zhí)行時所用的優(yōu)化目標文件內(nèi)置的方式加快應(yīng)用安裝速度的技術(shù)研究。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種基于定制安卓平臺的應(yīng)用快速部署方法,用于解決運行安卓系統(tǒng)的移動智能設(shè)備應(yīng)用安裝時耗時長、能耗高、系統(tǒng)響應(yīng)遲頓、用戶體驗差的問題。
本發(fā)明的技術(shù)方案是:改進安卓系統(tǒng)應(yīng)用安裝流程,增加云端應(yīng)用商城和商城客戶端,將移動智能設(shè)備運行應(yīng)用時所需的優(yōu)化目標文件內(nèi)置于apk文件中,安裝時免去最耗時耗能的本地化編譯步驟,以實現(xiàn)快速安裝部署的效果。
本發(fā)明具體包含如下步驟:
第一步,構(gòu)建基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)。該系統(tǒng)由兩層構(gòu)成:一是運行于云服務(wù)器中的云端應(yīng)用商城;二是運行于移動智能設(shè)備上的應(yīng)用商城客戶端。
云服務(wù)器中部署著全網(wǎng)唯一的云端應(yīng)用商城,云端應(yīng)用商城由app應(yīng)用管理模塊、機器碼集成模塊、應(yīng)用中心數(shù)據(jù)庫組成。云端應(yīng)用商城以并行方式為所有連接它的移動智能設(shè)備提供app應(yīng)用下載、app列表下載、應(yīng)用運行時所需的優(yōu)化文件上傳服務(wù)。應(yīng)用中心數(shù)據(jù)庫中有app應(yīng)用數(shù)據(jù)表(如圖4),app應(yīng)用數(shù)據(jù)表有p項,p為app的個數(shù)。每個表項有4個域,分別為app標識,app分類標識,app原始安裝包,app優(yōu)化安裝包列表,其中:app標識是表明app是何種應(yīng)用的唯一標識;app分類標識表明app所屬的分類類別,如社交聊天、影音播放、圖片編輯等;app原始安裝包中存放原始apk文件;app優(yōu)化安裝包列表是一個二維數(shù)組,其每行內(nèi)容均由終端系統(tǒng)特征碼、優(yōu)化版安裝包兩項組成,優(yōu)化版安裝包存放終端系統(tǒng)特征碼所對應(yīng)類型的移動智能設(shè)備優(yōu)化后的apk安裝文件。終端系統(tǒng)特征碼是移動智能設(shè)備所屬類型的唯一標識,同一類型移動智能設(shè)備間硬件版本、系統(tǒng)軟件版本完全相同,因此同一類型移動智能設(shè)備間最終運行app時所用的優(yōu)化目標文件可以通用。1個app標識對應(yīng)1個app優(yōu)化安裝包列表,每個app優(yōu)化安裝包列表有n項,n為連接云端應(yīng)用商城的移動智能設(shè)備的類型數(shù)量。p,n均為正整數(shù)。
每一個移動智能設(shè)備上都運行著應(yīng)用商城客戶端,應(yīng)用商城客戶端由app應(yīng)用獲取模塊、機器碼上傳模塊組成,應(yīng)用商城客戶端用于顯示云端應(yīng)用商城中可用的app列表、下載支持快速部署的apk文件,以及上傳本機編譯生成的特定應(yīng)用的優(yōu)化目標文件。
app應(yīng)用管理模塊與機器碼集成模塊、app應(yīng)用獲取模塊、應(yīng)用中心數(shù)據(jù)庫相連,用于為app應(yīng)用獲取模塊提供app列表下載、app下載服務(wù),并為機器碼集成模塊提供apk文件。app應(yīng)用管理模塊接收機器碼集成模塊發(fā)送的獲取應(yīng)用安裝包的請求(參數(shù)為app標識),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app原始安裝包,并將該app原始安裝包傳遞回機器碼集成模塊。app應(yīng)用管理模塊也接收機器碼集成模塊發(fā)送的添加優(yōu)化安裝包的請求(參數(shù)為app標識、終端系統(tǒng)特征碼、優(yōu)化版安裝包),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app優(yōu)化安裝包列表,將從機器碼集成模塊傳來的終端系統(tǒng)特征碼、優(yōu)化版安裝包存入app標識對應(yīng)的app優(yōu)化安裝包列表中。app應(yīng)用管理模塊也接收app應(yīng)用獲取模塊發(fā)送的下載app列表的請求(參數(shù)為app分類標識),從app應(yīng)用數(shù)據(jù)表中查找得到屬于該app分類標識的所有app,從而形成一個app列表(包含app應(yīng)用數(shù)據(jù)表中app標識、app分類標識兩項信息),并將此app列表傳遞回app應(yīng)用獲取模塊。app應(yīng)用管理模塊還接收app應(yīng)用獲取模塊發(fā)送的下載app的請求(參數(shù)為app標識、終端系統(tǒng)特征碼),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app原始安裝包和app優(yōu)化安裝包列表,再從app優(yōu)化安裝包列表查找終端系統(tǒng)特征碼對應(yīng)的優(yōu)化版安裝包,若存在該優(yōu)化版安裝包則將該優(yōu)化版安裝包傳遞回app應(yīng)用獲取模塊,若不存在則將app原始安裝包傳遞回app應(yīng)用獲取模塊。
機器碼集成模塊與app應(yīng)用管理模塊、機器碼上傳模塊相連,用于接收優(yōu)化目標文件,并集成該優(yōu)化目標文件到app的原始安裝包中從而生成針對特定終端系統(tǒng)的優(yōu)化版安裝包。機器碼集成模塊接收機器碼上傳模塊發(fā)送的優(yōu)化目標文件上傳的請求(參數(shù)為app標識,終端系統(tǒng)特征碼,優(yōu)化目標文件),得到機器碼上傳模塊發(fā)送的優(yōu)化目標文件target.file,同時向app應(yīng)用管理模塊發(fā)送獲取應(yīng)用安裝包請求(參數(shù)為app標識),得到app原始安裝包,而后將優(yōu)化目標文件target.file植入app原始安裝包并對安裝包重新簽名,得到優(yōu)化版安裝包。機器碼集成模塊還向app應(yīng)用管理模塊發(fā)送添加優(yōu)化安裝包的請求(參數(shù)為app標識、終端系統(tǒng)特征碼、優(yōu)化版安裝包),從而將優(yōu)化版安裝包保存到app應(yīng)用數(shù)據(jù)表中。植入優(yōu)化目標文件target.file的過程,就是將target.file存入如圖2所示的原始安裝包的過程,得到的優(yōu)化版安裝包格式如圖5所示,即在resources.arsc文件之后增加了target.file,并打包成一個zip壓縮包。
app應(yīng)用獲取模塊與app應(yīng)用管理模塊、服務(wù)進程installd相連,用于在移動智能設(shè)備上以列表方式顯示云端應(yīng)用商城中的app,從云端應(yīng)用商城下載用戶指定的應(yīng)用安裝包以及接收用戶觸摸點擊事件觸發(fā)應(yīng)用安裝過程。app應(yīng)用獲取模塊向app應(yīng)用管理模塊發(fā)送下載app列表請求(參數(shù)為app分類標識),從app應(yīng)用管理模塊得到app列表(包含app標識、app分類標識兩項信息),并在當前移動智能設(shè)備的應(yīng)用顯示列表中顯示出來,給用戶提供下載應(yīng)用的界面。在用戶下載某應(yīng)用時,app應(yīng)用獲取模塊還向app應(yīng)用管理模塊發(fā)送下載app請求(參數(shù)為app標識、終端系統(tǒng)特征碼),得到app應(yīng)用管理模塊傳遞回來的優(yōu)化版安裝包后,通過安卓系統(tǒng)內(nèi)部的packageinstaller向installd發(fā)送應(yīng)用安裝請求(參數(shù)為應(yīng)用安裝包),從而完成應(yīng)用安裝任務(wù)。
機器碼上傳模塊與機器碼集成模塊、服務(wù)進程installd相連,用于上傳所屬移動智能設(shè)備編譯生成的應(yīng)用運行時所需的目標文件,實現(xiàn)目標文件共享。機器碼上傳模塊接收installd發(fā)送的上傳優(yōu)化文件的請求(參數(shù)為app標識、優(yōu)化目標文件),從installd接收到app標識、優(yōu)化目標文件后,攜帶所屬移動智能設(shè)備的終端系統(tǒng)特征碼向機器碼集成模塊發(fā)送優(yōu)化目標文件上傳請求(參數(shù)為app標識,終端系統(tǒng)特征碼,優(yōu)化目標文件),以上傳應(yīng)用運行時所需的優(yōu)化目標文件。
第二步,改進安卓系統(tǒng)服務(wù)進程installd。
改進版服務(wù)進程installd與app應(yīng)用獲取模塊、機器碼上傳模塊相連,在執(zhí)行安卓原有服務(wù)進程installd基礎(chǔ)上,增加了對優(yōu)化版安裝包的支持,以實現(xiàn)快速安裝部署。其修改方法是(與原應(yīng)用安裝流程對比見圖6的第四步):
2.1改變原installd守護進程的優(yōu)化文件生成流程,改進版installd在執(zhí)行步驟4.2.2創(chuàng)建優(yōu)化目標文件、更改權(quán)限,獲得該優(yōu)化目標文件的讀寫操作句柄后,并不直接執(zhí)行本機編譯過程,而是執(zhí)行步驟m1判斷待安裝apk文件是否為可用的優(yōu)化版安裝包,若是則執(zhí)行步驟m2(使用該文件進行快速安裝,安裝完直接結(jié)束),若不是則執(zhí)行步驟4.2.3調(diào)用安卓內(nèi)置的可執(zhí)行程序執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的優(yōu)化目標文件;
2.2改變原installd的應(yīng)用安裝結(jié)束流程,改進版installd在執(zhí)行步驟4.2.3調(diào)用安卓內(nèi)置的可執(zhí)行程序執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的優(yōu)化目標文件后,先執(zhí)行步驟m3向機器碼上傳模塊發(fā)送上傳優(yōu)化文件請求(參數(shù)為app標識、優(yōu)化目標文件)并上傳該優(yōu)化目標文件,而后結(jié)束安裝過程。
第三步,云端應(yīng)用商城運行,初始化應(yīng)用中心數(shù)據(jù)庫。系統(tǒng)管理員通過app應(yīng)用管理模塊將提供給用戶使用的app的相關(guān)內(nèi)容即app標識,app分類標識,app原始安裝包錄入應(yīng)用中心數(shù)據(jù)庫app應(yīng)用數(shù)據(jù)表中。對通過用戶上傳打包、按終端類型編譯方式獲得的app優(yōu)化安裝包,系統(tǒng)管理員也通過app應(yīng)用管理模塊將它們保存到app應(yīng)用數(shù)據(jù)表中app標識對應(yīng)的app優(yōu)化安裝包列表中。
第四步,移動智能設(shè)備在基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)支持下并行部署應(yīng)用,方法是:
4.1移動智能設(shè)備正常運行。app應(yīng)用獲取模塊按4.1.1所述方法定期下載云端應(yīng)用商場提供的app列表,同時app應(yīng)用獲取模塊按4.1.2所述方法接收用戶的操作指令,按不同指令進行操作。
4.1.1app應(yīng)用獲取模塊使用安卓系統(tǒng)內(nèi)置定時器,定期(一般設(shè)置為每天或每小時,由用戶根據(jù)能耗、流量自行定義)向app應(yīng)用管理模塊發(fā)送下載app列表請求,將從app應(yīng)用管理模塊得到的app列表在移動智能設(shè)備上顯示出來,給用戶提供下載應(yīng)用的界面。
4.1.2app應(yīng)用獲取模塊根據(jù)移動智能設(shè)備上顯示的app列表從鍵盤或觸摸屏接收用戶操作,若需安裝應(yīng)用則轉(zhuǎn)4.2,無需操作則轉(zhuǎn)4.1.2。
4.2app應(yīng)用獲取模塊向app應(yīng)用管理模塊發(fā)送下載app請求(參數(shù)為app標識、終端系統(tǒng)特征碼);
4.3app應(yīng)用管理模塊將應(yīng)用安裝包發(fā)送給app應(yīng)用獲取模塊,方法是:app應(yīng)用管理模塊接收app應(yīng)用獲取模塊發(fā)送的下載app的請求(參數(shù)為app標識、終端系統(tǒng)特征碼),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app原始安裝包和app優(yōu)化安裝包列表,再從app優(yōu)化安裝包列表查找終端系統(tǒng)特征碼對應(yīng)的優(yōu)化版安裝包,若存在該優(yōu)化版安裝包則將該優(yōu)化版安裝包傳遞回app應(yīng)用獲取模塊,若不存在則將app原始安裝包傳遞回app應(yīng)用獲取模塊。
4.4app應(yīng)用獲取模塊通過觸發(fā)packageinstaller的apk安裝動作,向packagemanager發(fā)起安裝請求(參數(shù)為待安裝應(yīng)用安裝包即待安裝apk文件)。
4.5packagemanager以binder方式將安裝請求發(fā)送給服務(wù)層的packagemanagerserivce。
4.6packagemanagerserivce接收安裝請求后,使用socket內(nèi)部進程通訊方式將安裝請求提交給改進版服務(wù)進程installd。
4.7改進版服務(wù)進程installd執(zhí)行安裝和apk優(yōu)化,方法是:
4.7.1執(zhí)行do_install函數(shù),調(diào)用安卓系統(tǒng)的install函數(shù),完成apk文件復(fù)制、目錄創(chuàng)建、權(quán)限更改等操作。
4.7.2執(zhí)行do_dexopt函數(shù),調(diào)用安卓系統(tǒng)的dexopt函數(shù),執(zhí)行apk優(yōu)化,方法是:
4.7.2.1根據(jù)從packagemanagerserivce傳來的參數(shù)計算待生成優(yōu)化目標文件的路徑。
4.7.2.2創(chuàng)建優(yōu)化目標文件、更改權(quán)限,獲得該優(yōu)化目標文件的讀寫操作句柄。
4.7.2.3判斷由app應(yīng)用獲取模塊通過步驟4.4傳遞的待安裝應(yīng)用安裝包是否為可用的優(yōu)化版安裝包,若是則轉(zhuǎn)4.7.2.4,若不是則轉(zhuǎn)4.7.2.5進行本機編譯。
4.7.2.4執(zhí)行快速安裝過程。installd從待安裝的應(yīng)用安裝包中解壓得到優(yōu)化目標文件target.file,并通過4.7.2.2步驟中取得的讀寫操作句柄將target.file保存到指定的文件中。轉(zhuǎn)4.11。
4.7.2.5調(diào)用安卓內(nèi)置的可執(zhí)行程序dex2oat或dexopt執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的優(yōu)化目標文件,完成應(yīng)用的本機安裝過程。
4.7.3installd向機器碼上傳模塊發(fā)送上傳優(yōu)化文件請求。
4.8機器碼上傳模塊接收到installd發(fā)送的上傳優(yōu)化文件的請求后,向機器碼集成模塊發(fā)送優(yōu)化目標文件上傳請求,以上傳應(yīng)用運行時所需的優(yōu)化目標文件。
4.9機器碼集成模塊接收優(yōu)化目標文件,生成優(yōu)化版安裝包,向app應(yīng)用管理模塊發(fā)送添加優(yōu)化安裝包的請求,方法是:機器碼集成模塊接收機器碼上傳模塊發(fā)送的上傳優(yōu)化文件請求,得到機器碼上傳模塊發(fā)送的優(yōu)化目標文件,同時向app應(yīng)用管理模塊發(fā)送獲取應(yīng)用安裝包請求,得到app原始安裝包,而后將優(yōu)化目標文件target.file植入app原始安裝包并對安裝包重新簽名,得到優(yōu)化版安裝包,并向app應(yīng)用管理模塊發(fā)送添加優(yōu)化安裝包的請求。
4.10app應(yīng)用管理模塊把優(yōu)化安裝包存入app應(yīng)用數(shù)據(jù)表中,方法是:app應(yīng)用管理模塊接收機器碼集成模塊發(fā)送的添加優(yōu)化安裝包的請求,從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app優(yōu)化安裝包列表,將從機器碼集成模塊傳送來的終端系統(tǒng)特征碼、優(yōu)化版安裝包存入app優(yōu)化安裝包列表中。
4.11完成應(yīng)用安裝任務(wù),轉(zhuǎn)4.1。
采用本發(fā)明可以達到以下技術(shù)效果:
1、本發(fā)明第二步改進了安卓系統(tǒng)服務(wù)進程installd,進而在第四步改進了安卓系統(tǒng)的apk包格式和應(yīng)用安裝流程。通過內(nèi)置終端系統(tǒng)執(zhí)行所需的優(yōu)化目標文件的方式,在保證應(yīng)用安裝包兼容性的同時,有效提高應(yīng)用安裝速度。
2、本發(fā)明第四步改進了應(yīng)用商城的一般服務(wù)方式。通過商城客戶端攜帶終端系統(tǒng)特征碼的方式,向應(yīng)用商城請求應(yīng)用安裝包,應(yīng)用商城通過終端系統(tǒng)特征碼給不同版本的設(shè)備提供相應(yīng)改進版安裝包,提高商城服務(wù)的針對性。
3、本發(fā)明第四步提供了設(shè)備間共享優(yōu)化目標文件的方案。通過服務(wù)進程installd與商城客戶端配合,將終端編譯生成的優(yōu)化目標文件上傳至云端應(yīng)用商城,生成針對該型終端的改進版安裝包,以實現(xiàn)更廣泛的快速安裝效果。
附圖說明
圖1是背景技術(shù)所述安卓系統(tǒng)應(yīng)用安裝邏輯關(guān)系圖;
圖2是安卓系統(tǒng)的app原始安裝包(即原始apk文件)結(jié)構(gòu)圖;
圖3是背景技術(shù)所述安卓系統(tǒng)應(yīng)用安裝流程圖;
圖4是本發(fā)明app應(yīng)用數(shù)據(jù)表的表項示意圖;
圖5是本發(fā)明優(yōu)化版安裝包(即改進版apk文件)結(jié)構(gòu)圖;
圖6是本發(fā)明采用改進版服務(wù)進程installd進行應(yīng)用安裝時的安裝流程與圖3的對比圖;
圖7是本發(fā)明第一步構(gòu)建的基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)的總體結(jié)構(gòu)圖;
圖8是本發(fā)明總體流程圖;
圖9是本發(fā)明第一步構(gòu)建的基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)中軟件邏輯結(jié)構(gòu)圖。
具體實施方式
圖4是本發(fā)明app應(yīng)用數(shù)據(jù)表的表項示意圖。app應(yīng)用數(shù)據(jù)表有p項,p為app的個數(shù)。每個表項有4個域,分別為app標識,app分類標識,app原始安裝包,app優(yōu)化安裝包列表,其中:app標識是表明app是何種應(yīng)用的唯一標識;app分類標識表明app所屬的分類類別,如社交聊天、影音播放、圖片編輯等;app原始安裝包中存放原始apk安裝文件;app優(yōu)化安裝包列表是一個二維數(shù)組,其每行內(nèi)容均由終端系統(tǒng)特征碼、優(yōu)化版安裝包兩項組成,優(yōu)化版安裝包存放終端系統(tǒng)特征碼所對應(yīng)的移動智能設(shè)備優(yōu)化后的apk安裝文件。終端系統(tǒng)特征碼是移動智能設(shè)備所屬類型的唯一標識,同一類型移動智能設(shè)備間硬件版本、系統(tǒng)軟件版本完全相同,因此同一類型移動智能設(shè)備間最終運行app時所用的優(yōu)化目標文件可以通用。1個app標識對應(yīng)1個app優(yōu)化安裝包列表,每個app優(yōu)化安裝包列表有n項,n為連接云端應(yīng)用商城的移動智能設(shè)備的類型數(shù)量。p,n均為正整數(shù)。
圖5是本發(fā)明優(yōu)化版安裝包(即改進版apk文件)結(jié)構(gòu)圖。優(yōu)化版安裝包也和與背景技術(shù)所描述的安卓系統(tǒng)的app原始安裝包一樣,也是一個后綴名為.apk的壓縮文件。與app原始安裝包相比,優(yōu)化版安裝包多了一項內(nèi)容,即優(yōu)化目標文件target.file。
圖6是本發(fā)明采用改進版服務(wù)進程installd進行應(yīng)用安裝時的安裝流程與圖3的對比圖。與原應(yīng)用安裝流程圖3相比,新的應(yīng)用安裝流程修改如下:
2.1改變原installd守護進程的優(yōu)化文件生成流程,改進版installd在執(zhí)行步驟4.2.2創(chuàng)建優(yōu)化目標文件、更改權(quán)限,獲得該優(yōu)化目標文件的讀寫操作句柄后,并不直接執(zhí)行本機編譯過程,而是執(zhí)行步驟m1判斷待安裝apk文件是否為可用的優(yōu)化版安裝包,若是則執(zhí)行步驟m2(使用該文件進行快速安裝,安裝完直接結(jié)束),若不是則執(zhí)行步驟4.2.3調(diào)用安卓內(nèi)置的可執(zhí)行程序執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的優(yōu)化目標文件;
2.2改變原installd的應(yīng)用安裝結(jié)束流程,改進版installd在執(zhí)行步驟4.2.3調(diào)用安卓內(nèi)置的可執(zhí)行程序執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的優(yōu)化目標文件后,先執(zhí)行步驟m3向機器碼上傳模塊發(fā)送上傳優(yōu)化文件請求(參數(shù)為app標識、優(yōu)化目標文件)并上傳該優(yōu)化目標文件,而后結(jié)束安裝過程。
圖7是本發(fā)明第一步構(gòu)建的基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)的總體結(jié)構(gòu)圖。與圖1相比,增加了云端應(yīng)用商城、應(yīng)用商城客戶端,改進了installd服務(wù)進程。其中,云端應(yīng)用商城位于服務(wù)器端,后兩者運行于移動智能設(shè)備。云端應(yīng)用商城主要用于提供支持快速部署的apk安裝包文件;應(yīng)用商城客戶端用于顯示云端應(yīng)用商城中可用的app列表、下載支持快速部署的apk文件,以及根據(jù)用戶設(shè)定上傳本機編譯生成的特定應(yīng)用的優(yōu)化目標文件;改進的installd用于增加對植入優(yōu)化目標文件的apk安裝文件的支持,以實現(xiàn)快速安裝部署。
圖8為本發(fā)明總體流程圖。本發(fā)明包括以下步驟:
第一步,構(gòu)建基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)。該系統(tǒng)由兩層構(gòu)成:一是運行于云服務(wù)器中的云端應(yīng)用商城;二是運行于移動智能設(shè)備上的應(yīng)用商城客戶端。
圖9是本發(fā)明第一步構(gòu)建的基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)中軟件邏輯結(jié)構(gòu)圖。如圖9所示,云服務(wù)器中部署著全網(wǎng)唯一的云端應(yīng)用商城,云端應(yīng)用商城由app應(yīng)用管理模塊、機器碼集成模塊、應(yīng)用中心數(shù)據(jù)庫組成。云端應(yīng)用商城以并行方式為所有連接它的移動智能設(shè)備提供app應(yīng)用下載、app列表下載、應(yīng)用運行時所需的優(yōu)化文件上傳服務(wù)。應(yīng)用中心數(shù)據(jù)庫中有app應(yīng)用數(shù)據(jù)表。
每一個移動智能設(shè)備上都運行著應(yīng)用商城客戶端,應(yīng)用商城客戶端由app應(yīng)用獲取模塊、機器碼上傳模塊組成,應(yīng)用商城客戶端用于顯示云端應(yīng)用商城中可用的app列表、下載支持快速部署的apk文件,以及上傳本機編譯生成的特定應(yīng)用的優(yōu)化目標文件。
app應(yīng)用管理模塊與機器碼集成模塊、app應(yīng)用獲取模塊、應(yīng)用中心數(shù)據(jù)庫相連,用于為app應(yīng)用獲取模塊提供app列表下載、app下載服務(wù),并為機器碼集成模塊提供apk文件。app應(yīng)用管理模塊接收機器碼集成模塊發(fā)送的獲取應(yīng)用安裝包的請求(參數(shù)為app標識),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app原始安裝包,并將該app原始安裝包傳遞回機器碼集成模塊。app應(yīng)用管理模塊也接收機器碼集成模塊發(fā)送的添加優(yōu)化安裝包的請求(參數(shù)為app標識、終端系統(tǒng)特征碼、優(yōu)化版安裝包),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app優(yōu)化安裝包列表,將從機器碼集成模塊傳來的終端系統(tǒng)特征碼、優(yōu)化版安裝包存入app標識對應(yīng)的app優(yōu)化安裝包列表中。app應(yīng)用管理模塊也接收app應(yīng)用獲取模塊發(fā)送的下載app列表的請求(參數(shù)為app分類標識),從app應(yīng)用數(shù)據(jù)表中查找得到屬于該app分類標識的所有app,從而形成一個app列表(包含app應(yīng)用數(shù)據(jù)表中app標識、app分類標識兩項信息),并將此app列表傳遞回app應(yīng)用獲取模塊。app應(yīng)用管理模塊還接收app應(yīng)用獲取模塊發(fā)送的下載app的請求(參數(shù)為app標識、終端系統(tǒng)特征碼),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app原始安裝包和app優(yōu)化安裝包列表,再從app優(yōu)化安裝包列表查找終端系統(tǒng)特征碼對應(yīng)的優(yōu)化版安裝包,若存在該優(yōu)化版安裝包則將該優(yōu)化版安裝包傳遞回app應(yīng)用獲取模塊,若不存在則將app原始安裝包傳遞回app應(yīng)用獲取模塊。
機器碼集成模塊與app應(yīng)用管理模塊、機器碼上傳模塊相連,用于接收優(yōu)化目標文件,并集成該優(yōu)化目標文件到app的原始安裝包中從而生成針對特定終端系統(tǒng)的優(yōu)化版安裝包。機器碼集成模塊接收機器碼上傳模塊發(fā)送的優(yōu)化目標文件上傳的請求(參數(shù)為app標識,終端系統(tǒng)特征碼,優(yōu)化目標文件),得到機器碼上傳模塊發(fā)送的優(yōu)化目標文件target.file,同時向app應(yīng)用管理模塊發(fā)送獲取應(yīng)用安裝包請求(參數(shù)為app標識),得到app原始安裝包,而后將優(yōu)化目標文件target.file植入app原始安裝包并對安裝包重新簽名,得到優(yōu)化版安裝包。機器碼集成模塊還向app應(yīng)用管理模塊發(fā)送添加優(yōu)化安裝包的請求(參數(shù)為app標識、終端系統(tǒng)特征碼、優(yōu)化版安裝包),從而將優(yōu)化版安裝包保存到app應(yīng)用數(shù)據(jù)表中。植入優(yōu)化目標文件target.file的過程,就是將target.file存入如圖2所示的原始安裝包的過程,得到的優(yōu)化版安裝包格式如圖5所示,即在resources.arsc文件之后增加了target.file,并打包成一個zip壓縮包。
app應(yīng)用獲取模塊與app應(yīng)用管理模塊、服務(wù)進程installd相連,用于在移動智能設(shè)備上以列表方式顯示云端應(yīng)用商城中的app,從云端應(yīng)用商城下載用戶指定的應(yīng)用安裝包以及接收用戶觸摸點擊事件觸發(fā)應(yīng)用安裝過程。app應(yīng)用獲取模塊向app應(yīng)用管理模塊發(fā)送下載app列表請求(參數(shù)為app分類標識),從app應(yīng)用管理模塊得到app列表(包含app標識、app分類標識兩項信息),并在當前移動智能設(shè)備的應(yīng)用顯示列表中顯示出來,給用戶提供下載應(yīng)用的界面。在用戶下載某應(yīng)用時,app應(yīng)用獲取模塊還向app應(yīng)用管理模塊發(fā)送下載app請求(參數(shù)為app標識、終端系統(tǒng)特征碼),得到app應(yīng)用管理模塊傳遞回來的優(yōu)化版安裝包后,通過安卓系統(tǒng)內(nèi)部的packageinstaller向installd發(fā)送應(yīng)用安裝請求(參數(shù)為應(yīng)用安裝包),從而完成應(yīng)用安裝任務(wù)。
機器碼上傳模塊與機器碼集成模塊、服務(wù)進程installd相連,用于上傳所屬移動智能設(shè)備編譯生成的應(yīng)用運行時所需的目標文件,實現(xiàn)目標文件共享。機器碼上傳模塊接收installd發(fā)送的上傳優(yōu)化文件的請求(參數(shù)為app標識、優(yōu)化目標文件),從installd接收到app標識、優(yōu)化目標文件后,攜帶所屬移動智能設(shè)備的終端系統(tǒng)特征碼向機器碼集成模塊發(fā)送優(yōu)化目標文件上傳請求(參數(shù)為app標識,終端系統(tǒng)特征碼,優(yōu)化目標文件),以上傳應(yīng)用運行時所需的優(yōu)化目標文件。
第二步,改進安卓系統(tǒng)服務(wù)進程installd。
第三步,云端應(yīng)用商城運行,初始化應(yīng)用中心數(shù)據(jù)庫。系統(tǒng)管理員通過app應(yīng)用管理模塊將提供給用戶使用的app的相關(guān)內(nèi)容即app標識,app分類標識,app原始安裝包錄入應(yīng)用中心數(shù)據(jù)庫app應(yīng)用數(shù)據(jù)表中。對通過用戶上傳打包、按終端類型編譯方式獲得的app優(yōu)化安裝包,系統(tǒng)管理員也通過app應(yīng)用管理模塊將它們保存到app應(yīng)用數(shù)據(jù)表中app標識對應(yīng)的app優(yōu)化安裝包列表中。
第四步,移動智能設(shè)備在基于定制安卓平臺的應(yīng)用快速部署系統(tǒng)支持下并行部署應(yīng)用,方法是:
4.1移動智能設(shè)備正常運行。app應(yīng)用獲取模塊按4.1.1所述方法定期下載云端應(yīng)用商場提供的app列表,同時app應(yīng)用獲取模塊按4.1.2所述方法接收用戶的操作指令,按不同指令進行操作。
4.1.1app應(yīng)用獲取模塊使用安卓系統(tǒng)內(nèi)置定時器,定期(一般設(shè)置為每天或每小時,由用戶根據(jù)能耗、流量自行定義)向app應(yīng)用管理模塊發(fā)送下載app列表請求,將從app應(yīng)用管理模塊得到的app列表在移動智能設(shè)備上顯示出來,給用戶提供下載應(yīng)用的界面。
4.1.2app應(yīng)用獲取模塊根據(jù)移動智能設(shè)備上顯示的app列表從鍵盤或觸摸屏接收用戶操作,若需安裝應(yīng)用則轉(zhuǎn)4.2,無需操作則轉(zhuǎn)4.1.2。
4.2app應(yīng)用獲取模塊向app應(yīng)用管理模塊發(fā)送下載app請求(參數(shù)為app標識、終端系統(tǒng)特征碼);
4.3app應(yīng)用管理模塊將應(yīng)用安裝包發(fā)送給app應(yīng)用獲取模塊,方法是:app應(yīng)用管理模塊接收app應(yīng)用獲取模塊發(fā)送的下載app的請求(參數(shù)為app標識、終端系統(tǒng)特征碼),從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app原始安裝包和app優(yōu)化安裝包列表,再從app優(yōu)化安裝包列表查找終端系統(tǒng)特征碼對應(yīng)的優(yōu)化版安裝包,若存在該優(yōu)化版安裝包則將該優(yōu)化版安裝包傳遞回app應(yīng)用獲取模塊,若不存在則將app原始安裝包傳遞回app應(yīng)用獲取模塊。
4.4app應(yīng)用獲取模塊通過觸發(fā)packageinstaller的apk安裝動作,向packagemanager發(fā)起安裝請求(參數(shù)為待安裝應(yīng)用安裝包即待安裝apk文件)。
4.5packagemanager以binder方式將安裝請求發(fā)送給服務(wù)層的packagemanagerserivce。
4.6packagemanagerserivce接收安裝請求后,使用socket內(nèi)部進程通訊方式將安裝請求提交給改進版服務(wù)進程installd。
4.7改進版服務(wù)進程installd執(zhí)行安裝和apk優(yōu)化,方法是:
4.7.1執(zhí)行do_install函數(shù),調(diào)用安卓系統(tǒng)的install函數(shù),完成apk文件復(fù)制、目錄創(chuàng)建、權(quán)限更改等操作。
4.7.2執(zhí)行do_dexopt函數(shù),調(diào)用安卓系統(tǒng)的dexopt函數(shù),執(zhí)行apk優(yōu)化,方法是:
4.7.2.1根據(jù)從packagemanagerserivce傳來的參數(shù)計算待生成優(yōu)化目標文件的路徑。
4.7.2.2創(chuàng)建優(yōu)化目標文件、更改權(quán)限,獲得該優(yōu)化目標文件的讀寫操作句柄。
4.7.2.3判斷由app應(yīng)用獲取模塊通過步驟4.4傳遞的待安裝應(yīng)用安裝包是否為可用的優(yōu)化版安裝包,若是則轉(zhuǎn)4.7.2.4,若不是則轉(zhuǎn)4.7.2.5進行本機編譯。
4.7.2.4執(zhí)行快速安裝過程。installd從待安裝的應(yīng)用安裝包中解壓得到優(yōu)化目標文件target.file,并通過4.7.2.2步驟中取得的讀寫操作句柄將target.file保存到指定的文件中。轉(zhuǎn)4.11。
4.7.2.5調(diào)用安卓內(nèi)置的可執(zhí)行程序dex2oat或dexopt執(zhí)行apk文件優(yōu)化操作,生成最終執(zhí)行所用的優(yōu)化目標文件,完成應(yīng)用的本機安裝過程。
4.7.3installd向機器碼上傳模塊發(fā)送上傳優(yōu)化文件請求。
4.8機器碼上傳模塊接收到installd發(fā)送的上傳優(yōu)化文件的請求后,向機器碼集成模塊發(fā)送優(yōu)化目標文件上傳請求,以上傳應(yīng)用運行時所需的優(yōu)化目標文件。
4.9機器碼集成模塊接收優(yōu)化目標文件,生成優(yōu)化版安裝包,向app應(yīng)用管理模塊發(fā)送添加優(yōu)化安裝包的請求,方法是:機器碼集成模塊接收機器碼上傳模塊發(fā)送的上傳優(yōu)化文件請求,得到機器碼上傳模塊發(fā)送的優(yōu)化目標文件,同時向app應(yīng)用管理模塊發(fā)送獲取應(yīng)用安裝包請求,得到app原始安裝包,而后將優(yōu)化目標文件target.file植入app原始安裝包并對安裝包重新簽名,得到優(yōu)化版安裝包,并向app應(yīng)用管理模塊發(fā)送添加優(yōu)化安裝包的請求。
4.10app應(yīng)用管理模塊把優(yōu)化安裝包存入app應(yīng)用數(shù)據(jù)表中,方法是:app應(yīng)用管理模塊接收機器碼集成模塊發(fā)送的添加優(yōu)化安裝包的請求,從app應(yīng)用數(shù)據(jù)表中查找得到app標識對應(yīng)的app優(yōu)化安裝包列表,將從機器碼集成模塊傳送來的終端系統(tǒng)特征碼、優(yōu)化版安裝包存入app優(yōu)化安裝包列表中。
4.11完成應(yīng)用安裝任務(wù),轉(zhuǎn)4.1。