[發(fā)明專利]加載SO庫(kù)的方法、裝置、電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)在審
| 申請(qǐng)?zhí)枺?/td> | 202011613432.1 | 申請(qǐng)日: | 2020-12-31 |
| 公開(kāi)(公告)號(hào): | CN112732349A | 公開(kāi)(公告)日: | 2021-04-30 |
| 發(fā)明(設(shè)計(jì))人: | 陳立德 | 申請(qǐng)(專利權(quán))人: | 深圳市珍愛(ài)捷云信息技術(shù)有限公司 |
| 主分類號(hào): | G06F9/445 | 分類號(hào): | G06F9/445;G06F11/10;G06F16/2455;H04L29/08 |
| 代理公司: | 暫無(wú)信息 | 代理人: | 暫無(wú)信息 |
| 地址: | 518000 廣東省深圳市南山區(qū)前海*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 加載 so 方法 裝置 電子設(shè)備 計(jì)算機(jī) 可讀 存儲(chǔ) 介質(zhì) | ||
本申請(qǐng)涉及一種加載SO庫(kù)的方法、裝置、電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。所述方法包括:在檢測(cè)到應(yīng)用程序啟動(dòng)時(shí),獲取所述應(yīng)用程序?qū)?yīng)的二進(jìn)制接口ABI類型;基于所述ABI類型確定目標(biāo)SO庫(kù);判斷本地緩存文件中是否存在與所述目標(biāo)SO庫(kù)對(duì)應(yīng)的SO庫(kù)文件;若所述本地緩存文件不存在所述SO庫(kù)文件,從預(yù)設(shè)服務(wù)器中下載所述SO庫(kù)文件至本地?cái)?shù)據(jù)庫(kù);調(diào)用加載指令System.load加載所述SO庫(kù)文件。實(shí)施本申請(qǐng)實(shí)施例具有減小APK包體積的優(yōu)點(diǎn)。
技術(shù)領(lǐng)域
本申請(qǐng)涉及智能終端技術(shù)領(lǐng)域,特別是涉及一種加載SO庫(kù)的方法、裝置、電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù)
在Android系統(tǒng)的開(kāi)發(fā)過(guò)程中通常需要加載SO庫(kù),SO庫(kù)是Linux下的程序函數(shù)庫(kù),即編譯好的可以供其他程序使用的代碼和數(shù)據(jù),Android系統(tǒng)在運(yùn)行的過(guò)程中通過(guò)加載APK包中的SO庫(kù)文件實(shí)現(xiàn)加載SO庫(kù)。
傳統(tǒng)的Android開(kāi)發(fā)通常是將SO庫(kù)文件打包到APK包中,但是SO庫(kù)文件有多種架構(gòu)且需要與CPU架構(gòu)進(jìn)行匹配,將多種架構(gòu)的SO庫(kù)文件打包到APK包中造成APK包體積過(guò)大,若APK包中SO庫(kù)文件只有一種架構(gòu),當(dāng)CPU架構(gòu)與SO庫(kù)文件架構(gòu)不匹配時(shí)造成兼容效果差,因此,還需提出一種加載SO庫(kù)的方法。
發(fā)明內(nèi)容
本申請(qǐng)實(shí)施例提供一種加載SO庫(kù)的方法、裝置、電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),用于實(shí)現(xiàn)動(dòng)態(tài)加載SO庫(kù),減小APK包體積。
第一方面,本申請(qǐng)實(shí)施例提供一種加載SO庫(kù)的方法,應(yīng)用于電子設(shè)備,所述方法包括:
在檢測(cè)到應(yīng)用程序啟動(dòng)時(shí),獲取所述應(yīng)用程序?qū)?yīng)的二進(jìn)制接口ABI類型;
基于所述ABI類型確定目標(biāo)SO庫(kù);
判斷本地緩存文件中是否存在與所述目標(biāo)SO庫(kù)對(duì)應(yīng)的SO庫(kù)文件;
若所述本地緩存文件不存在所述SO庫(kù)文件,從預(yù)設(shè)服務(wù)器中下載所述SO庫(kù)文件至本地?cái)?shù)據(jù)庫(kù);
調(diào)用加載指令System.load加載所述SO庫(kù)文件。
在其中一個(gè)實(shí)施例中,所述基于所述ABI類型確定目標(biāo)SO庫(kù),包括:確定所述ABI類型對(duì)應(yīng)的CPU架構(gòu);獲取預(yù)設(shè)的處理器架構(gòu)與SO庫(kù)的映射關(guān)系;從所述映射關(guān)系中提取所述CPU架構(gòu)對(duì)應(yīng)的所述目標(biāo)SO庫(kù)。
在其中一個(gè)實(shí)施例中,所述調(diào)用加載指令System.load加載所述SO庫(kù)文件之后,還包括:判斷所述SO庫(kù)文件是否加載成功;若加載不成功,確定所述目標(biāo)SO庫(kù)對(duì)應(yīng)的應(yīng)用功能;跳轉(zhuǎn)所述應(yīng)用功能對(duì)應(yīng)的H5頁(yè)面。
在其中一個(gè)實(shí)施例中,所述調(diào)用加載指令System.load加載所述SO庫(kù)文件之后,還包括:判斷所述SO庫(kù)文件是否加載成功;若加載不成功,確定所述目標(biāo)SO庫(kù)對(duì)應(yīng)的應(yīng)用功能;判斷所述應(yīng)用功能是否存在對(duì)應(yīng)的java解決方案;若存在,提取所述java解決方案對(duì)應(yīng)的java代碼并運(yùn)行。
在其中一個(gè)實(shí)施例中,所述方法還包括:若所述本地緩存文件存在所述SO庫(kù)文件,基于所述ABI類型對(duì)所述SO庫(kù)文件進(jìn)行校驗(yàn);若校驗(yàn)成功,則調(diào)用所述System.load加載所述SO庫(kù)文件;若校驗(yàn)不成功,從預(yù)設(shè)服務(wù)器中下載所述SO庫(kù)文件至本地?cái)?shù)據(jù)庫(kù),調(diào)用加載指令System.load加載所述SO庫(kù)文件。
在其中一個(gè)實(shí)施例中,所述基于所述ABI類型對(duì)所述SO庫(kù)文件進(jìn)行校驗(yàn),包括:基于所述ABI類型確定所述目標(biāo)SO庫(kù)的SO庫(kù)版本號(hào);獲取所述SO庫(kù)文件的文件版本號(hào);判斷所述SO庫(kù)版本號(hào)和所述文件版本號(hào)是否一致,若一致,對(duì)所述SO庫(kù)文件的完整性進(jìn)行校驗(yàn);若不一致,則確定所述SO庫(kù)文件校驗(yàn)不成功。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于深圳市珍愛(ài)捷云信息技術(shù)有限公司,未經(jīng)深圳市珍愛(ài)捷云信息技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011613432.1/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





