一种动态库的加载编译方法、装置、终端及存储介质制造方法及图纸

技术编号:32828181 阅读:26 留言:0更新日期:2022-03-26 20:34
本发明专利技术实施例提供了一种动态库的加载编译方法、装置、终端及存储介质。本发明专利技术实施例中,在代码编译时,主动通过解析动态库加载标识对应的目标动态库加载的依赖关系,确定成功加载目标动态库时所需要加载的各个非基础动态库及对应的加载顺序,将基于上述加载顺序生成的加载代码插入动态库加载标识之前,这样,就可以在加载目标动态库之前,先获取目标动态库的加载代码,从而可以获取各非基础动态库对应的加载顺序,从而可以依据该顺序依次加载所需的非基础动态库,为目标动态库创造加载环境,从而可以保证目标动态库在程序运行时的正常加载,在一定程度上提升了动态库加载成功率。率。率。

【技术实现步骤摘要】
一种动态库的加载编译方法、装置、终端及存储介质


[0001]本专利技术涉及计算机
,特别是涉及一种动态库的加载编译方法、装置、终端及存储介质。

技术介绍

[0002]当前,大多数安卓应用都会使用动态库,这不仅可以在底层共享代码,还可以完成线上功能的动态下载和更新,同时可以减小安装包的体积,使得程序的应用更为灵活。
[0003]其中,动态库包括系统动态库、应用程序(Application,App)基础动态库及应用程序的非基础动态库。一般情况下,系统动态库存放于系统动态库路径下,而App基础动态库存放于App安装后的动态库路径下。在加载动态库时,系统会在系统动态库路径及App安装后的动态库路径下,自动查找相关依赖的动态库。
[0004]但是,应用程序的非基础动态库作为应用程序的功能动态库,需要额外通过网络进行下载,且在通过网络下载应用程序的非基础动态库时,由于权限原因,下载的非基础动态库A的存放路径无法设置为系统动态库路径和App安装后的动态库路径,若非基础动态库A依赖于其他非基础动态库B,则在加载非基础动态库A时,因系统自身本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种动态库的加载编译方法,其特征在于,包括:在代码编译时,查找动态库加载标识;获取所述动态库加载标识对应的目标动态库的动态库路径;解析所述目标动态库,以获取成功加载所述目标动态库时所需要加载的各个非基础动态库及对应的加载顺序;根据所述目标动态库的动态库路径、各个所述非基础动态库及对应的加载顺序,生成所述目标动态库的加载代码;将所述加载代码插入至所述动态库加载标识之前,以在加载所述目标动态库之前,根据所述加载代码加载各个所述非基础动态库。2.根据权利要求1所述的方法,其特征在于,解析所述目标动态库,以获取成功加载所述目标动态库时所需要加载的各个非基础动态库及对应的加载顺序,包括:解析所述目标动态库,以生成所述目标动态库的依赖关系树;其中,所述依赖关系树中,所述目标动态库置于所述依赖关系树的根节点处,所述依赖关系树的叶节点处的动态库为未依赖其他非基础动态库的非基础动态库;按由子节点到父节点的顺序,遍历所述依赖关系树,确定由所述依赖关系树中各叶节点行进至所述依赖关系树中根节点的行进路径;根据所述行进路径,确定成功加载目标动态库时所需要加载的各个非基础动态库及对应的加载顺序。3.根据权利要求2所述的方法,其特征在于,解析所述目标动态库,以生成所述目标动态库的依赖关系树,包括:将所述目标动态库置于所述依赖关系树的根节点,并将所述根节点确定为当前节点;解析所述当前节点处的动态库依赖的各第一动态库;将各所述第一动态库分别置于当前节点的各个子结点;在所述第一动态库未依赖非基础动态库的情况下,结束对所述第一动态库所在子节点的分裂,并将所述第一动态库标记为叶节点;在所述第一动态库依赖非基础动态库的情况下,将所述第一动态库所在子结点更新为所述当前节点,并继续执行解析所述当前节点处的动态库依赖的各第一动态库的步骤。4.根据权利要求3所述的方法,其特征在于,在将所述当前节点更新为所述第一动态库所在子结点的步骤之前,所述方法还包括:在所述第一动态库已解析的情况下,记录所述第一动态库所依赖的动态库;在所述第一动态库未解析的情况下,则执行将所述当前节点更新为所述第一动态库所在子结点的步骤。5.根据权利要求1所述的方法,其特征在于,在代码编译时,查找动态库加载标识,包括:在代码编译时,遍历代码查找库函数,以作为所述动态库加载标识。6.一种动态库的...

【专利技术属性】
技术研发人员:冀睿哲杨子斌王仕俊
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:

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

1