加载SO库的方法、装置、电子设备和计算机可读存储介质制造方法及图纸

技术编号:28295083 阅读:14 留言:0更新日期:2021-04-30 16:18
本申请涉及一种加载SO库的方法、装置、电子设备和计算机可读存储介质。所述方法包括:在检测到应用程序启动时,获取所述应用程序对应的二进制接口ABI类型;基于所述ABI类型确定目标SO库;判断本地缓存文件中是否存在与所述目标SO库对应的SO库文件;若所述本地缓存文件不存在所述SO库文件,从预设服务器中下载所述SO库文件至本地数据库;调用加载指令System.load加载所述SO库文件。实施本申请实施例具有减小APK包体积的优点。

【技术实现步骤摘要】
加载SO库的方法、装置、电子设备和计算机可读存储介质
本申请涉及智能终端
,特别是涉及一种加载SO库的方法、装置、电子设备和计算机可读存储介质。
技术介绍
在Android系统的开发过程中通常需要加载SO库,SO库是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据,Android系统在运行的过程中通过加载APK包中的SO库文件实现加载SO库。传统的Android开发通常是将SO库文件打包到APK包中,但是SO库文件有多种架构且需要与CPU架构进行匹配,将多种架构的SO库文件打包到APK包中造成APK包体积过大,若APK包中SO库文件只有一种架构,当CPU架构与SO库文件架构不匹配时造成兼容效果差,因此,还需提出一种加载SO库的方法。
技术实现思路
本申请实施例提供一种加载SO库的方法、装置、电子设备和计算机可读存储介质,用于实现动态加载SO库,减小APK包体积。第一方面,本申请实施例提供一种加载SO库的方法,应用于电子设备,所述方法包括:在检测到应用程序启动时,获取所述应用程序对应的二进制接口ABI类型;基于所述ABI类型确定目标SO库;判断本地缓存文件中是否存在与所述目标SO库对应的SO库文件;若所述本地缓存文件不存在所述SO库文件,从预设服务器中下载所述SO库文件至本地数据库;调用加载指令System.load加载所述SO库文件。在其中一个实施例中,所述基于所述ABI类型确定目标SO库,包括:确定所述ABI类型对应的CPU架构;获取预设的处理器架构与SO库的映射关系;从所述映射关系中提取所述CPU架构对应的所述目标SO库。在其中一个实施例中,所述调用加载指令System.load加载所述SO库文件之后,还包括:判断所述SO库文件是否加载成功;若加载不成功,确定所述目标SO库对应的应用功能;跳转所述应用功能对应的H5页面。在其中一个实施例中,所述调用加载指令System.load加载所述SO库文件之后,还包括:判断所述SO库文件是否加载成功;若加载不成功,确定所述目标SO库对应的应用功能;判断所述应用功能是否存在对应的java解决方案;若存在,提取所述java解决方案对应的java代码并运行。在其中一个实施例中,所述方法还包括:若所述本地缓存文件存在所述SO库文件,基于所述ABI类型对所述SO库文件进行校验;若校验成功,则调用所述System.load加载所述SO库文件;若校验不成功,从预设服务器中下载所述SO库文件至本地数据库,调用加载指令System.load加载所述SO库文件。在其中一个实施例中,所述基于所述ABI类型对所述SO库文件进行校验,包括:基于所述ABI类型确定所述目标SO库的SO库版本号;获取所述SO库文件的文件版本号;判断所述SO库版本号和所述文件版本号是否一致,若一致,对所述SO库文件的完整性进行校验;若不一致,则确定所述SO库文件校验不成功。在其中一个实施例中,所述对所述SO库文件的完整性进行校验,包括:基于所述SO库版本号确定所述目标SO库的信息摘要值;提取所述SO库文件的文件信息摘要值;判断所述信息摘要值和所述文件信息摘要值是否一致;若一致,确定所述SO库文件完整,确定所述SO库文件校验成功;若不一致,确定所述SO库文件不完整,确定所述SO库文件校验不成功,预设服务器中下载所述SO库文件至本地数据库。第二方面,本申请实施例提供一种加载SO库的装置,所述装置包括:确定单元,用于在检测到应用程序启动时,获取所述应用程序对应的二进制接口ABI类型;确定单元,用于基于所述ABI类型确定目标SO库;判断单元,用于判断本地缓存文件中是否存在与所述目标SO库对应的SO库文件;下载单元,用于若所述本地缓存文件不存在所述SO库文件,从预设服务器中下载所述SO库文件至本地数据库;加载单元,用于调用加载指令System.load加载所述SO库文件。在其中一个实施例中,在所述基于所述ABI类型确定目标SO库方面,所述确定单元用于:确定所述ABI类型对应的CPU架构;获取预设的处理器架构与SO库的映射关系;从所述映射关系中提取所述CPU架构对应的所述目标SO库。在其中一个实施例中,在所述调用加载指令System.load加载所述SO库文件之后方面,所述加载单元还用于:判断所述SO库文件是否加载成功;若加载不成功,确定所述目标SO库对应的应用功能;跳转所述应用功能对应的H5页面。在其中一个实施例中,在所述调用加载指令System.load加载所述SO库文件之后方面,所述加载单元还用于:判断所述SO库文件是否加载成功;若加载不成功,确定所述目标SO库对应的应用功能;判断所述应用功能是否存在对应的java解决方案;若存在,提取所述java解决方案对应的java代码并运行。在其中一个实施例中,所述判断单元还用于:若所述本地缓存文件存在所述SO库文件,基于所述ABI类型对所述SO库文件进行校验;若校验成功,则调用所述System.load加载所述SO库文件;若校验不成功,从预设服务器中下载所述SO库文件至本地数据库,调用加载指令System.load加载所述SO库文件。在其中一个实施例中,在所述基于所述ABI类型对所述SO库文件进行校验方面,所述判断单元用于:基于所述ABI类型确定所述目标SO库的SO库版本号;获取所述SO库文件的文件版本号;判断所述SO库版本号和所述文件版本号是否一致,若一致,对所述SO库文件的完整性进行校验;若不一致,则确定所述SO库文件校验不成功。在其中一个实施例中,在所述对所述SO库文件的完整性进行校验方面,所述判断单元用于:基于所述SO库版本号确定所述目标SO库的信息摘要值;提取所述SO库文件的文件信息摘要值;判断所述信息摘要值和所述文件信息摘要值是否一致;若一致,确定所述SO库文件完整,确定所述SO库文件校验成功;若不一致,确定所述SO库文件不完整,确定所述SO库文件校验不成功,预设服务器中下载所述SO库文件至本地数据库。第三方面,本申请实施例提供一种电子设备,该电子设备包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤的指令。第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质用于存储计算机程序,其中,上述计算机程序被处理器执行,以实现如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。可以看出,在本申请实施例中,电子设备在检测到应用程序启动时,获取所述应用程序对应的二进制接口ABI类型;基于所述ABI类型确定目标SO库;判断本地缓存文件中是否存在与所述目标SO库对应的SO库文件;若所述本地缓存文件不存在所述SO库文件,从预设服务器中下载所述SO库文件至本地数据库;调用加载指令Syste本文档来自技高网...

【技术保护点】
1.一种加载SO库的方法,其特征在于,应用于电子设备,所述方法包括:/n在检测到应用程序启动时,获取所述应用程序对应的二进制接口ABI类型;/n基于所述ABI类型确定目标SO库;/n判断本地缓存文件中是否存在与所述目标SO库对应的SO库文件;/n若所述本地缓存文件不存在所述SO库文件,从预设服务器中下载所述SO库文件至本地数据库;/n调用加载指令System.load加载所述SO库文件。/n

【技术特征摘要】
1.一种加载SO库的方法,其特征在于,应用于电子设备,所述方法包括:
在检测到应用程序启动时,获取所述应用程序对应的二进制接口ABI类型;
基于所述ABI类型确定目标SO库;
判断本地缓存文件中是否存在与所述目标SO库对应的SO库文件;
若所述本地缓存文件不存在所述SO库文件,从预设服务器中下载所述SO库文件至本地数据库;
调用加载指令System.load加载所述SO库文件。


2.根据权利要求1所述的方法,其特征在于,所述基于所述ABI类型确定目标SO库,包括:
确定所述ABI类型对应的CPU架构;
获取预设的处理器架构与SO库的映射关系;
从所述映射关系中提取所述CPU架构对应的所述目标SO库。


3.根据权利要求1所述的方法,其特征在于,所述调用加载指令System.load加载所述SO库文件之后,还包括:
判断所述SO库文件是否加载成功;
若加载不成功,确定所述目标SO库对应的应用功能;
跳转所述应用功能对应的H5页面。


4.根据权利要求3所述的方法,其特征在于,所述调用加载指令System.load加载所述SO库文件之后,还包括:
判断所述SO库文件是否加载成功;
若加载不成功,确定所述目标SO库对应的应用功能;
判断所述应用功能是否存在对应的java解决方案;
若存在,提取所述java解决方案对应的java代码并运行。


5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述本地缓存文件存在所述SO库文件,基于所述ABI类型对所述SO库文件进行校验;
若校验成功,则调用所述System.load加载所述SO库文件;
若校验不成功,从预设服务器中下载所述SO库文件至本地数据库,调用加载指令System.load加载所述SO库文件。


6...

【专利技术属性】
技术研发人员:陈立德
申请(专利权)人:深圳市珍爱捷云信息技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1