本技術(shù)涉及研發(fā)設(shè)計(jì),應(yīng)用于應(yīng)用程序加載場(chǎng)景中,尤其涉及一種應(yīng)用程序加載方法、裝置、設(shè)備及其存儲(chǔ)介質(zhì)。
背景技術(shù):
1、在項(xiàng)目打包加載過程中,項(xiàng)目打包生成的包是只有一個(gè)jsbund?l?e文件,里面包含了我們的業(yè)務(wù)代碼、打包工具源碼及依賴的第三方庫(kù)。
2、由于只有一個(gè)打包文件,在每次版本時(shí)即使只有較小的業(yè)務(wù)改動(dòng),打包時(shí)也會(huì)重新將所有的代碼進(jìn)行全量的編譯。如果按照這樣的方案隨著業(yè)務(wù)功能迭代會(huì)會(huì)出現(xiàn)包體積越來越大,打包耗時(shí)長(zhǎng),不夠靈活,易造成打包資源消耗較大,打包效率較為低的問題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例的目的在于提出一種應(yīng)用程序加載方法、裝置、設(shè)備及其存儲(chǔ)介質(zhì),以解決現(xiàn)有的應(yīng)用程序加載時(shí),易造成打包資源消耗較大,打包效率較低的問題。
2、為了解決上述技術(shù)問題,本技術(shù)實(shí)施例提供應(yīng)用程序加載方法,采用了如下所述的技術(shù)方案:
3、一種應(yīng)用程序加載方法,包括下述步驟:
4、獲取目標(biāo)應(yīng)用程序加載請(qǐng)求,其中,所述加載請(qǐng)求中包括應(yīng)用基礎(chǔ)包的下載地址和加載地址,以及應(yīng)用業(yè)務(wù)包的下載地址;
5、根據(jù)所述應(yīng)用基礎(chǔ)包的下載地址和所述應(yīng)用業(yè)務(wù)包的下載地址,下載所述應(yīng)用基礎(chǔ)包和所述應(yīng)用業(yè)務(wù)包至預(yù)設(shè)緩存空間;
6、從所述緩存空間中獲取已下載完成的應(yīng)用基礎(chǔ)包,并基于所述應(yīng)用基礎(chǔ)包的加載地址,對(duì)所述應(yīng)用程序進(jìn)行基礎(chǔ)化加載,其中,所述基礎(chǔ)化加載包括加載了應(yīng)用程序首頁界面和公共組件信息;
7、通過人機(jī)交互指令監(jiān)測(cè)方式,識(shí)別用戶在所述應(yīng)用程序首頁界面內(nèi)所點(diǎn)擊的業(yè)務(wù)功能性指令;
8、基于所述業(yè)務(wù)功能性指令,確定需要進(jìn)行加載的應(yīng)用業(yè)務(wù)包作為目標(biāo)業(yè)務(wù)包;
9、根據(jù)預(yù)設(shè)的業(yè)務(wù)包差異化列表,篩選出所述目標(biāo)業(yè)務(wù)包的差異化應(yīng)用業(yè)務(wù)包,其中,所述業(yè)務(wù)包差異化列表中按照差異數(shù)據(jù)量由小到大關(guān)系分別記錄了每個(gè)應(yīng)用業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包;
10、根據(jù)歷史加載記錄日志,識(shí)別所述目標(biāo)業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包是否已被加載;
11、若所述目標(biāo)業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包都尚未被加載,則從所述緩存空間中獲取已下載完成的目標(biāo)業(yè)務(wù)包,加載所述目標(biāo)業(yè)務(wù)包以實(shí)現(xiàn)對(duì)目標(biāo)業(yè)務(wù)功能的加載;
12、若所述目標(biāo)業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包存在已被加載的情況,則從已被加載的互為差異化應(yīng)用業(yè)務(wù)包中篩選出差異化最小的應(yīng)用業(yè)務(wù)包,通過對(duì)所述差異化最小的應(yīng)用業(yè)務(wù)包對(duì)應(yīng)的業(yè)務(wù)功能進(jìn)行調(diào)整,以獲得所述目標(biāo)業(yè)務(wù)功能。
13、進(jìn)一步的,在執(zhí)行所述獲取目標(biāo)應(yīng)用程序加載請(qǐng)求的步驟之前,所述方法還包括:
14、采用預(yù)設(shè)的項(xiàng)目打包工具對(duì)所述目標(biāo)應(yīng)用程序的業(yè)務(wù)源碼進(jìn)行打包處理,獲得唯一打包文件,其中,所述打包文件中包含了業(yè)務(wù)源碼、打包工具源碼和第三方依賴庫(kù);
15、通過解析所述唯一打包文件,識(shí)別出所有第三方依賴庫(kù)、所述打包工具源碼和所述業(yè)務(wù)源碼中的共用性代碼;
16、對(duì)所述共用性代碼、所述所有第三方依賴庫(kù)以及所述打包工具源碼進(jìn)行打包處理,獲得應(yīng)用基礎(chǔ)包;
17、使用預(yù)設(shè)的過濾器,對(duì)所述打包文件進(jìn)行過濾處理,獲得所述共用性代碼、所述所有第三方依賴庫(kù)和所述打包工具源碼以外的各個(gè)業(yè)務(wù)單元分別對(duì)應(yīng)的單元性代碼塊;
18、對(duì)所有的單元性代碼塊分別進(jìn)行打包處理,獲得所有的應(yīng)用業(yè)務(wù)包。
19、進(jìn)一步的,在執(zhí)行所述使用預(yù)設(shè)的過濾器,對(duì)所述打包文件進(jìn)行過濾處理的步驟之前,所述方法還包括:
20、設(shè)置所述過濾器的過濾配置界面和過濾顯示界面;
21、將所述共用性代碼、所述所有第三方依賴庫(kù)和所述打包工具源碼通過所述過濾配置界面添加到所述過濾器的過濾項(xiàng)中;
22、將所述唯一打包文件通過文件導(dǎo)入方式引入到已完成過濾項(xiàng)配置的過濾器中,并以點(diǎn)擊方式啟動(dòng)所述過濾顯示界面中的過濾按鈕,以啟動(dòng)所述過濾器。
23、進(jìn)一步的,在執(zhí)行所述通過人機(jī)交互指令監(jiān)測(cè)方式,識(shí)別用戶在所述應(yīng)用程序首頁界面內(nèi)所點(diǎn)擊的業(yè)務(wù)功能性指令的步驟之后,所述方法還包括:
24、根據(jù)所述業(yè)務(wù)功能性指令的指向地址,生成所述目標(biāo)業(yè)務(wù)包的加載地址;
25、所述從所述緩存空間中獲取已下載完成的目標(biāo)業(yè)務(wù)包,加載所述目標(biāo)業(yè)務(wù)包以實(shí)現(xiàn)對(duì)目標(biāo)業(yè)務(wù)功能的加載的步驟,具體包括:
26、將所述目標(biāo)業(yè)務(wù)包對(duì)應(yīng)的應(yīng)用業(yè)務(wù)包加載到所述目標(biāo)業(yè)務(wù)包的加載地址,以完成對(duì)所述目標(biāo)業(yè)務(wù)功能進(jìn)行業(yè)務(wù)功能塊加載。
27、進(jìn)一步的,在執(zhí)行所述根據(jù)預(yù)設(shè)的業(yè)務(wù)包差異化列表,篩選出所述目標(biāo)業(yè)務(wù)包的差異化應(yīng)用業(yè)務(wù)包的步驟之前,所述方法還包括:
28、獲取所述目標(biāo)應(yīng)用程序所包含的所有應(yīng)用業(yè)務(wù)包;
29、采用bsd?i?ff差分算法計(jì)算出所述所有應(yīng)用業(yè)務(wù)包中任意兩兩應(yīng)用業(yè)務(wù)包間的差異數(shù)據(jù);
30、對(duì)所有的差異數(shù)據(jù)分別進(jìn)行數(shù)據(jù)量大小計(jì)算,獲得所有的差異數(shù)據(jù)分別對(duì)應(yīng)的差異數(shù)據(jù)量;
31、將所述差異數(shù)據(jù)量與預(yù)設(shè)的數(shù)據(jù)量閾值進(jìn)行比較,并判斷所述差異數(shù)據(jù)量是否超過了所述數(shù)據(jù)量閾值;
32、若所述差異數(shù)據(jù)量超過了所述數(shù)據(jù)量閾值,則將所述差異數(shù)據(jù)量所對(duì)應(yīng)的兩個(gè)應(yīng)用業(yè)務(wù)包作為一對(duì)非互為差異化應(yīng)用業(yè)務(wù)包;
33、若所述差異數(shù)據(jù)量未超過所述數(shù)據(jù)量閾值,則將所述差異數(shù)據(jù)量所對(duì)應(yīng)的兩個(gè)應(yīng)用業(yè)務(wù)包作為一對(duì)互為差異化應(yīng)用業(yè)務(wù)包;
34、整理所有的互為差異化應(yīng)用業(yè)務(wù)包,并記錄每對(duì)互為差異化應(yīng)用業(yè)務(wù)包的差異數(shù)據(jù)量,獲得整理記錄結(jié)果;
35、根據(jù)所述整理記錄結(jié)果,生成所述業(yè)務(wù)包差異化列表。
36、進(jìn)一步的,所述根據(jù)所述整理記錄結(jié)果,生成所述業(yè)務(wù)包差異化列表的步驟,具體包括:
37、從所述整理記錄結(jié)果中選擇不同的應(yīng)用業(yè)務(wù)包分別作為一個(gè)聚類中心;
38、將每個(gè)聚類中心所對(duì)應(yīng)的應(yīng)用業(yè)務(wù)包分別作為焦點(diǎn)業(yè)務(wù)包;
39、篩選出所有焦點(diǎn)業(yè)務(wù)包分別對(duì)應(yīng)的所有互為差異化應(yīng)用業(yè)務(wù)包;
40、根據(jù)所述整理記錄結(jié)果中的差異數(shù)據(jù)量,對(duì)所有焦點(diǎn)業(yè)務(wù)包分別對(duì)應(yīng)的所有互為差異化應(yīng)用業(yè)務(wù)包進(jìn)行差異數(shù)據(jù)量從小到大排序處理,獲得所有焦點(diǎn)業(yè)務(wù)包分別對(duì)應(yīng)的排序處理結(jié)果;
41、記錄所有焦點(diǎn)業(yè)務(wù)包分別對(duì)應(yīng)的排序處理結(jié)果,得到所述業(yè)務(wù)包差異化列表。
42、進(jìn)一步的,所述從已被加載的互為差異化應(yīng)用業(yè)務(wù)包中篩選出差異化最小的應(yīng)用業(yè)務(wù)包,通過對(duì)所述差異化最小的應(yīng)用業(yè)務(wù)包對(duì)應(yīng)的業(yè)務(wù)功能進(jìn)行調(diào)整,以獲得所述目標(biāo)業(yè)務(wù)功能的步驟,具體包括:
43、從所述業(yè)務(wù)包差異化列表中篩選出以所述目標(biāo)業(yè)務(wù)包為焦點(diǎn)業(yè)務(wù)包的排序處理結(jié)果;
44、根據(jù)所述歷史加載記錄日志,識(shí)別以所述目標(biāo)業(yè)務(wù)包為焦點(diǎn)業(yè)務(wù)包的排序處理結(jié)果中已被加載的應(yīng)用業(yè)務(wù)包;
45、根據(jù)所述排序處理結(jié)果,識(shí)別出所述已被加載的應(yīng)用業(yè)務(wù)包中排序最靠前的應(yīng)用業(yè)務(wù)包作為所述差異化最小的應(yīng)用業(yè)務(wù)包;
46、獲取所述差異化最小的應(yīng)用業(yè)務(wù)包被加載后的業(yè)務(wù)代碼,作為待調(diào)整業(yè)務(wù)代碼;
47、根據(jù)所述差異化最小的應(yīng)用業(yè)務(wù)包與所述目標(biāo)業(yè)務(wù)包的差異數(shù)據(jù),對(duì)所述待調(diào)整業(yè)務(wù)代碼進(jìn)行調(diào)整處理,獲得調(diào)整后的業(yè)務(wù)代碼;
48、將所述調(diào)整后的業(yè)務(wù)代碼加載到所述目標(biāo)業(yè)務(wù)包的加載地址,以完成對(duì)所述目標(biāo)業(yè)務(wù)功能的加載。
49、為了解決上述技術(shù)問題,本技術(shù)實(shí)施例還提供應(yīng)用程序加載裝置,采用了如下所述的技術(shù)方案:
50、一種應(yīng)用程序加載裝置,包括:
51、加載請(qǐng)求獲取模塊,用于獲取目標(biāo)應(yīng)用程序加載請(qǐng)求,其中,所述加載請(qǐng)求中包括應(yīng)用基礎(chǔ)包的下載地址和加載地址,以及應(yīng)用業(yè)務(wù)包的下載地址;
52、應(yīng)用包下載模塊,用于根據(jù)所述應(yīng)用基礎(chǔ)包的下載地址和所述應(yīng)用業(yè)務(wù)包的下載地址,下載所述應(yīng)用基礎(chǔ)包和所述應(yīng)用業(yè)務(wù)包至預(yù)設(shè)緩存空間;
53、基礎(chǔ)化加載模塊,用于從所述緩存空間中獲取已下載完成的應(yīng)用基礎(chǔ)包,并基于所述應(yīng)用基礎(chǔ)包的加載地址,對(duì)所述應(yīng)用程序進(jìn)行基礎(chǔ)化加載,其中,所述基礎(chǔ)化加載包括加載了應(yīng)用程序首頁界面和公共組件信息;
54、點(diǎn)擊指令識(shí)別模塊,用于通過人機(jī)交互指令監(jiān)測(cè)方式,識(shí)別用戶在所述應(yīng)用程序首頁界面內(nèi)所點(diǎn)擊的業(yè)務(wù)功能性指令;
55、目標(biāo)業(yè)務(wù)包確定模塊,用于基于所述業(yè)務(wù)功能性指令,確定需要進(jìn)行加載的應(yīng)用業(yè)務(wù)包作為目標(biāo)業(yè)務(wù)包;
56、差異化應(yīng)用業(yè)務(wù)包篩選模塊,用于根據(jù)預(yù)設(shè)的業(yè)務(wù)包差異化列表,篩選出所述目標(biāo)業(yè)務(wù)包的差異化應(yīng)用業(yè)務(wù)包,其中,所述業(yè)務(wù)包差異化列表中按照差異數(shù)據(jù)量由小到大關(guān)系分別記錄了每個(gè)應(yīng)用業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包;
57、業(yè)務(wù)包加載識(shí)別模塊,用于根據(jù)歷史加載記錄日志,識(shí)別所述目標(biāo)業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包是否已被加載;
58、目標(biāo)業(yè)務(wù)包加載模塊,用于若所述目標(biāo)業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包都尚未被加載,則從所述緩存空間中獲取已下載完成的目標(biāo)業(yè)務(wù)包,加載所述目標(biāo)業(yè)務(wù)包以實(shí)現(xiàn)對(duì)目標(biāo)業(yè)務(wù)功能的加載;
59、業(yè)務(wù)功能調(diào)整模塊,用于若所述目標(biāo)業(yè)務(wù)包的互為差異化應(yīng)用業(yè)務(wù)包存在已被加載的情況,則從已被加載的互為差異化應(yīng)用業(yè)務(wù)包中篩選出差異化最小的應(yīng)用業(yè)務(wù)包,通過對(duì)所述差異化最小的應(yīng)用業(yè)務(wù)包對(duì)應(yīng)的業(yè)務(wù)功能進(jìn)行調(diào)整,以獲得所述目標(biāo)業(yè)務(wù)功能。
60、為了解決上述技術(shù)問題,本技術(shù)實(shí)施例還提供一種計(jì)算機(jī)設(shè)備,采用了如下所述的技術(shù)方案:
61、一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有計(jì)算機(jī)可讀指令,所述處理器執(zhí)行所述計(jì)算機(jī)可讀指令時(shí)實(shí)現(xiàn)上述所述的應(yīng)用程序加載方法的步驟。
62、為了解決上述技術(shù)問題,本技術(shù)實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),采用了如下所述的技術(shù)方案:
63、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述所述的應(yīng)用程序加載方法的步驟。
64、與現(xiàn)有技術(shù)相比,本技術(shù)實(shí)施例主要有以下有益效果:
65、本技術(shù)實(shí)施例所述應(yīng)用程序加載方法,通過獲取目標(biāo)應(yīng)用程序加載請(qǐng)求;先加載應(yīng)用基礎(chǔ)包,再根據(jù)業(yè)務(wù)功能性指令;加載應(yīng)用業(yè)務(wù)包,能夠?qū)A(chǔ)加載和業(yè)務(wù)功能加載做到良好的分離加載,避免了以往對(duì)業(yè)務(wù)功能加載時(shí),重復(fù)對(duì)基礎(chǔ)內(nèi)容進(jìn)行加載,降低了加載資源消耗,提升了加載效率;篩選出所述目標(biāo)業(yè)務(wù)包的差異化應(yīng)用業(yè)務(wù)包;識(shí)別差異化應(yīng)用業(yè)務(wù)包是否已被加載;若差異化應(yīng)用業(yè)務(wù)包都尚未被加載,則從緩存空間中獲取已下載完成的目標(biāo)業(yè)務(wù)包,加載目標(biāo)業(yè)務(wù)包以實(shí)現(xiàn)對(duì)目標(biāo)業(yè)務(wù)功能的加載;若差異化應(yīng)用業(yè)務(wù)包存在已被加載的情況,則篩選出差異化最小的應(yīng)用業(yè)務(wù)包,通過業(yè)務(wù)功能調(diào)整,獲得目標(biāo)業(yè)務(wù)功能,便于結(jié)合加載和調(diào)整兩種方式獲得目標(biāo)業(yè)務(wù)功能,更加靈活,且節(jié)省了加載資源消耗。