CN110765394A - so文件加载方法、装置、存储介质及终端设备 - Google Patents

so文件加载方法、装置、存储介质及终端设备 Download PDF

Info

Publication number
CN110765394A
CN110765394A CN201910893876.6A CN201910893876A CN110765394A CN 110765394 A CN110765394 A CN 110765394A CN 201910893876 A CN201910893876 A CN 201910893876A CN 110765394 A CN110765394 A CN 110765394A
Authority
CN
China
Prior art keywords
application
file
intercepted
loading
acquiring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910893876.6A
Other languages
English (en)
Inventor
张建辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201910893876.6A priority Critical patent/CN110765394A/zh
Publication of CN110765394A publication Critical patent/CN110765394A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及应用开发领域,具体涉及一种so文件加载方法、装置、存储介质及终端设备,所述方法包括:响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;若有,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述so文件;所述应用通过如下生成,包括:获取不打包到应用的待拦截的so文件的配置信息;根据所述配置信息获取应用中的待拦截的so文件,将应用中的所述待拦截的so文件删除;获取应用中加载所述待拦截的so文件的加载代码,基于函数注解方式将所述加载代码拦截;打包生成应用。本发明提高应用的启动效率,减小应用占用的资源。

Description

so文件加载方法、装置、存储介质及终端设备
技术领域
本发明涉及应用开发领域,具体涉及一种so文件加载方法、装置、存储介质及终端设备。
背景技术
随着互联网技术的发展,应用程序的功能也越来越丰富,丰富的功能使得应用安装包所需占用的资源不断提高,而其中,应用程序所需使用的so文件(动态链接库)占用的资源存在着较高的比例,当应用启动时,往往需要加载所述so文件后才能实现应用的正常运行,而有些so文件所占用的资源较大,加载该些so文件需要更多的时间跟资源,目前,如何在减少应用程序占用的资源的同时提高应用的启动效率是亟需解决的问题。
发明内容
为克服以上技术问题,特别是现有技术应用占用资源过大、应用启动过慢的问题,特提出以下技术方案:
第一方面,本发明提供了一种so文件加载方法,包括:
响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;
若有,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;
从所述应用的安装目录加载所述so文件;其中,所述应用通过如下步骤生成,包括:
获取不打包到应用的待拦截的so文件的配置信息;
根据所述配置信息获取应用中的待拦截的so文件,将应用中的所述待拦截的so文件删除;
获取应用中加载所述待拦截的so文件的加载代码,基于函数注解方式将所述加载代码拦截;
打包生成应用。
进一步的,所述从所述应用的安装目录加载所述so文件之后,还包括:
判断加载所述so文件是否异常,若异常,向服务器请求该应用的完整安装包,所述完整安装包中包含加载异常的so文件及相应的加载代码;
根据所述完整安装包重新安装应用。
进一步的,所述响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件之后,还包括:
若无,确定应用的安装目录中存在目标so文件;
从服务器获取所述目标so文件的密钥标识,与应用的安装目录中对应的目标so文件的密钥标识作比对,若不同,从服务器获取所述目标so文件。
进一步的,所述获取不打包到应用的待拦截的so文件的配置信息,包括:
获取so文件的应用层级,将所述应用层级满足预设条件的so文件作为不打包到应用的待拦截的so文件,确定所述配置信息。
进一步的,所述应用包括若干个功能;所述响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件,包括;
响应于应用的第一功能的启动,根据封装应用的信息文件判断所述应用的第一功能是否有被拦截的so文件;
所述从所述应用的安装目录加载所述so文件,包括:
从所述应用的安装目录加载所述第一功能对应的so文件。
进一步的,所述从所述应用的安装目录加载所述so文件之后,还包括:
统计应用各功能的启动效率,若所述应用的某一功能的启动效率低于预设阈值,将该功能对应的so文件作为永久性文件存放至本地目录。
进一步的,所述获取应用源代码中加载所述待处理拦截的so文件的加载代码,包括:
从应用的源代码中获取加载所述待拦截的so文件的加载代码;和/或,
从应用的AAR文件中获取加载所述待拦截的so文件的加载代码。
第二方面,本发明提供一种so文件加载装置,包括:
启动模块:用于响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;
加载模块:用于判断所述应用若有被拦截的so文件,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述so文件。
第三方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的so文件加载方法。
第四方面,本发明还提供了一种终端设备,所述终端设备包括一个或多个处理器、存储器、一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的so文件加载方法。
本发明与现有技术相比,具有以下有益效果:
本发明提供了一种应用中so文件的动态下发、加载的方法,在启动应用时,判断所述应用是否有被拦截的so文件,so文件为shared object文件,是Linux系统下的动态链接库,当应用启动时或启动特定功能时,需要加载特定的动态链接库以便完成应用的正常运行,若判断应用有被拦截的so文件,则根据应用的配置信息,向服务器请求获取对应的so文件以从服务器获取所述被拦截的so文件,实现so文件的动态下发,然后将所述被拦截的so文件下载至应用的安装目录,实现so文件的预加载,当应用特定的功能启动时,该功能需要加载特定的so文件,则从应用的安装目录加载对应so文件,便可实现应用功能的快速启动,提高应用功能的启动效率,同时减小过多的so文件储存在应用本地安装目录而占用的存储资源,减少终端的消耗。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明so文件加载方法的一实施例流程示意图;
图2为本发明so文件加载方法的另一实施例流程示意图;
图3为本发明so文件加载装置的一实施例示意图;
图4为本发明终端设备的一实施例结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本领域技术人员应当理解,本发明所称的“应用”、“应用程序”、“计算机程序”以及类似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任何形式的终端所限制。
本发明实施例提供一种so文件加载方法,如图1所示,所述方法包括以下步骤:
S10:响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件。
S20:若有,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述so文件。
本实施例中,在终端设备中,当应用启动时,响应于应用的启动,根据封装应用的信息文件(ApplicationInfo)判断所述应用是否有被拦截的so文件,所述so文件为sharedobject文件,是Linux系统下的动态链接库,当应用启动时或启动特定功能时,需要加载特定的动态链接库,以便完成应用的正常运行,若判断该应用有被拦截的so文件,则根据该应用的配置信息,向服务器请求获取对应的so文件以从服务器获取所述被拦截的so文件,从而实现so文件的动态下发,本实施例的一种实施方式,所述被拦截的so文件存放在指定的CDN网络中,当应用启动时,终端设备便从远端CDN获取所述被拦截的so文件,然后将所述被拦截的so文件下载至应用的安装目录,实现被拦截的so文件的预加载。可选的,本实施例的一种实施方式,所述新获取的被拦截的so文件作为临时文件移动至应用的安装目录,在规定时间后,将该临时文件删除,即删除对应的被拦截的so文件;从而达到减少应用数据占用的存储资源的效果。当应用特定的功能启动时,该功能需要加载所述被拦截的so文件,则从应用的安装目录加载所述被拦截的so文件,便可实现应用功能的快速启动,提高应用功能的启动效率,同时减小应用安装包占用的存储资源,减少终端的消耗。
本实施例中,如图2所示,所述应用通过如下步骤生成,包括:
S30:获取不打包到应用的待拦截的so文件的配置信息;
本实施例中,首先配置应用中可以被拦截的so文件,本步骤中将所述配置的so文件定义为待拦截的so文件,然后将所述待拦截的so文件配置为不打包至应用中,从而确定不打包至应用的待拦截的so文件的配置信息。
S31:根据所述配置信息获取应用中的待拦截的so文件,将应用中的所述待拦截的so文件删除;
在确定了不打包至到应用的待拦截的so文件的配置信息后,若先前的应用已存在,则需要对应用进行重新打包,并且尽量降低应用的大小,本实施例中,在应用的打包脚本中添加配置项,所述配置项根据所述配置信息获取应用中的待拦截的so文件,然后将筛选出的应用中的待拦截的so文件并进行删除。
S32:获取应用中加载所述待拦截的so文件的加载代码,基于函数注解方式将所述加载代码拦截;
S33:打包生成应用。
在应用中的所述待拦截的so文件被删除后,应用的源代码或aar中还包括加载所述待拦截的so文件的加载代码,若所述加载代码按照正常流程执行,由于所述待拦截的so文件已被删除,执行该些加载代码时应用无法正常执行,则应用会出现崩溃的现象,本实施例中,获取原应用中加载所述待拦截的so文件的加载代码,然后基于函数注解(Around)方式将所述加载代码拦截,具体的,从应用的代码中根据所述配置信息找到加载所述待拦截的so文件的包名、类名、方法名,然后将带包名和类名的方法配置在新建的@Aspect注解类中,在@Aspect注解类中使用Around方式拦截加载所述待拦截的so文件的方法,拦截之后所述加载代码不会被执行,拦截后的所述待拦截的so文件相当于上述被拦截的so文件,然后将处理后的文件重新打包、生成应用,然后该应用执行上述实施例中的步骤S10-S20。
本实施例提供了一种应用中so文件的动态下发、加载的方法,在启动应用时,判断所述应用是否有被拦截的so文件,so文件为shared object文件,是Linux系统下的动态链接库,当应用启动时或启动特定功能时,需要加载特定的动态链接库以便完成应用的正常运行,若判断应用有被拦截的so文件,则根据应用的配置信息,向服务器请求获取对应的so文件以从服务器获取所述被拦截的so文件,实现so文件的动态下发,然后将所述被拦截的so文件下载至应用的安装目录,实现so文件的预加载,当应用特定的功能启动时,该功能需要加载特定的so文件,则从应用的安装目录加载对应so文件,便可实现应用功能的快速启动,提高应用功能的启动效率,同时减小过多的so文件储存在应用本地安装目录而占用的存储资源,减少终端的消耗。
本发明的一种实施例,所述从所述应用的安装目录加载所述so文件之后,还包括:
判断加载所述so文件是否异常,若异常,向服务器请求该应用的完整安装包,所述完整安装包中包含加载异常的so文件及相应的加载代码;
根据所述完整安装包重新安装应用。
本实施例中,删除了所述待拦截的so文件,可能导致生成应用出现异常,在终端安装了该应用后,在一种实施方式中,当应用启动,若加载所述so文件异常,导致应用无法正常使用,此时向服务器请求该应用的完整安装包,所述完整安装包中包含加载异常的so文件及相应的加载代码,对应用进行差分安装、升级,以完成应用的正常功能。在另一种实施方式中,当启动应用的特定功能时,该特定功能需要加载so文件,若加载所述so文件异常,导致应用无法正常使用该功能,此时向服务器请求该应用的完整安装包或针对该功能的补丁文件,所述完整安装包中包含加载异常的so文件及相应的加载代码,然后根据所述完整安装包对应用进行差分安装、升级,以正常使用应用的功能。
本发明的一种实施例,所述响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件之后,还包括:
若无,确定应用的安装目录中存在目标so文件;
从服务器获取所述目标so文件的密钥标识,与应用的安装目录中对应的目标so文件的密钥标识作比对,若不同,从服务器获取所述目标so文件。
在启动应用后,判断所述应用是否有被拦截的so文件,若该应用没有被拦截的so文件,则确认对应的目标so文件已存在于应用的安装目录中,此时,从服务器获取目标so文件的密钥标识,与应用安装目录中对应的目标so文件的密钥标识作比对,在一种实施方式中,所述密钥标识为so文件的MD5值,若两个文件完全相同,则两个文件的MD5值也相同,通过MD5值便可判断应用安装目录中的so文件是否与服务器中对应的so文件相同,若不同,则从服务器获取所述目标so文件,通过比较so文件的密钥标识,以较少的逻辑运算确保应用安装目录中的so文件不被篡改,同时亦保证应用安装目录中的so文件能够与服务器中最新的so文件同步,提高资源的利用率。
本发明的一种实施例,所述获取不打包到应用的待拦截的so文件的配置信息,包括:
获取so文件的应用层级,将所述应用层级满足预设条件的so文件作为不打包到应用的待拦截的so文件,确定所述配置信息。
应用的so文件可能存放在源代码中,也可能存放在第三方库aar中,本实施例中,无论so文件的存放位置在何处,通过该so文件的应用层级进行判断,判断不同的so文件是否适合动态下发,然后将应用层级满足预设条件的so文件作为待拦截的so文件,即将应用层级满足预设条件的so文件作为不打包到应用的待拦截的so文件,从而确定所述配置信息。例如,so文件1应用在应用加载页面,属于第一层级,so文件2应用在应用登录页面,属于第二层级,假定当so文件应用在第二层级时,该些so文件适合通过动态下发,以减少应用所占用资源,从而将so文件2作为所述待拦截的so文件,确定所述配置信息。本实施例的应用场景,选取占用资源较大而且使用层次较深的so文件实施动态下发,如果是应用一启动就需要使用的so文件则尽量避免动态下发,保证应用能够正常运行。
本发明的一种实施例,所述应用包括若干个功能;所述响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件,包括;
响应于应用的第一功能的启动,根据封装应用的信息文件判断所述应用的第一功能是否有被拦截的so文件;
所述从所述应用的安装目录加载所述so文件,包括:
从所述应用的安装目录加载所述第一功能对应的so文件。
本实施例中,应用包含有多个功能,其中,部分功能需要使用到so文件,比如应用的登录功能需要使用到so文件1,应用的拍摄视频功能需要使用到so文件2,本实施例以第一功能代表应用中的任意一项功能,当启动应用的第一功能时,判断所述应用的第一功能是否有被拦截的so文件,即判断该功能的so文件是否为动态下发,若是,则根据上述实施例的方法根据应用的配置信息,从服务器获取所述被拦截的so文件,将所述so文件移动至应用的安装目录;然后从所述应用的安装目录加载所述第一功能对应的所述so文件,以完成第一功能的正常运行。
本发明的一种实施例,所述从所述应用的安装目录加载所述so文件之后,还包括:
统计应用各功能的启动效率,若所述应用的某一功能的启动效率低于预设阈值,将该功能对应的so文件作为永久性文件存放至本地目录。
本实施例考虑so文件的动态下发会影响应用的启动效率或应用中特定功能的启动效率,尤其是当应用需要同时调用、加载多个so文件时,由于多个so文件的动态下发需要消耗一定的时间,造成应用功能的启动效率过低,本实施例中,统计应用各功能的启动效率,当所述应用的某一功能的启动效率低于预设阈值时,为了不影响应用的流畅使用,将该功能对应的so文件作为永久性文件保存至本地目录,优选地将该功能对应的so文件作为永久性文件保存至应用安装目录,不再对该so文件进行动态下发,后续若应用启动该功能,则可以直接从应用安装目录加载该功能对应的so文件,不再需要从服务器上下载该功能对应的so文件,提高应用功能的启动效率,在另一种实施方式中,可以对保存在本地目录的so文件采取预定时间进行更新的措施,保证保存在本地目录的so文件的有效性、稳定性。
本发明的一种实施例,所述获取应用源代码中加载所述待处理拦截的so文件的加载代码,包括:
从应用的源代码中获取加载所述待拦截的so文件的加载代码;和/或,
从应用的AAR文件中获取加载所述待拦截的so文件的加载代码。
本实施例中,加载so文件的加载代码可能存在应用的源代码中,例如本地动态库的so文件的加载代码存在于应用的源代码中,从应用的源代码中便可获取加载本地动态库的待拦截的so文件的加载代码,后续便可对该加载代码进行拦截;加载so文件的加载代码可能存在应用的AAR文件中,例如第三方库的so文件的加载代码;通过不同方式获取应用中加载所述待拦截的so文件的加载代码,能够有效提高加载代码的拦截范围,保证加载代码能够被有效拦截。
如图3所示,在另一种实施例中,本发明提供了一种so文件加载装置,包括:
启动模块10:用于响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;
加载模块20:用于若判断所述应用有被拦截的so文件,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述so文件。
所述应用通过打包插件生成,所述打包插件执行:
获取不打包到应用的待拦截的so文件的配置信息;
根据所述配置信息获取应用中的待拦截的so文件,将应用中的所述待拦截的so文件删除;
获取应用中加载所述待拦截的so文件的加载代码,基于函数注解方式将所述加载代码拦截;
打包生成应用。
本发明的一种实施例,所述加载模块20还包括执行:
判断加载所述so文件是否异常,若异常,向服务器请求该应用的完整安装包,所述完整安装包中包含加载异常的so文件及相应的加载代码;
根据所述完整安装包重新安装应用。
本发明的一种实施例,所述加载模块20还包括执行:
判断所述应用是否有被拦截的so文件,若无,确定应用的安装目录中存在目标so文件;
从服务器获取所述目标so文件的密钥标识,与应用的安装目录中对应的目标so文件的密钥标识作比对,若不同,从服务器获取所述目标so文件。
本发明的一种实施例,所述打包插件还包括执行:
获取so文件的应用层级,将所述应用层级满足预设条件的so文件作为不打包到应用的待拦截的so文件,确定所述配置信息。
本发明的一种实施例,所述应用包括若干个功能:所述启动模块10还包括执行:响应于应用的第一功能的启动,根据封装应用的信息文件判断所述应用的第一功能是否有被拦截的so文件;
所述加载模块20还包括执行:
判断所述应用的第一功能是否有被拦截的so文件,若有,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述第一功能对应的so文件。
本发明的一种实施例,所述加载模块20还包括执行:
统计应用各功能的启动效率,若所述应用的某一功能的启动效率低于预设阈值,将该功能对应的so文件作为永久性文件存放至本地目录。
本发明的一种实施例,所述打包插件还包括执行:
从应用的源代码中获取加载所述待拦截的so文件的加载代码;和/或,从应用的AAR文件中获取加载所述待拦截的so文件的加载代码。
在另一种实施例中,本发明提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例所述的so文件加载方法。其中,所述计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSS Memory,随即存储器)、EPROM(EraSable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备(例如,计算机、手机)以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。
本发明实施例提供的一种计算机可读存储介质,可实现响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;若有,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述so文件;其中,所述应用通过如下步骤生成,包括:获取不打包到应用的待拦截的so文件的配置信息;根据所述配置信息获取应用中的待拦截的so文件,将应用中的所述待拦截的so文件删除;获取应用中加载所述待拦截的so文件的加载代码,基于函数注解方式将所述加载代码拦截;打包生成应用。通过提供一种应用中so文件的动态下发、加载的方法,在启动应用时,判断所述应用是否有被拦截的so文件,so文件为shared object文件,是Linux系统下的动态链接库,当应用启动时或启动特定功能时,需要加载特定的动态链接库以便完成应用的正常运行,若判断应用有被拦截的so文件,则根据应用的配置信息,向服务器请求获取对应的so文件以从服务器获取所述被拦截的so文件,实现so文件的动态下发,然后将所述被拦截的so文件下载至应用的安装目录,实现so文件的预加载,当应用特定的功能启动时,该功能需要加载特定的so文件,则从应用的安装目录加载对应so文件,便可实现应用功能的快速启动,提高应用功能的启动效率,同时减小过多的so文件储存在应用本地安装目录而占用的存储资源,减少终端的消耗。
本发明实施例提供的计算机可读存储介质可以实现上述so文件加载方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
此外,在又一种实施例中,本发明还提供一种终端设备,如图4所示,所述终端设备包括处理器403、存储器405、输入单元407以及显示单元409等器件。本领域技术人员可以理解,图4示出的结构器件并不构成对所有终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。所述存储器405可用于存储计算机程序401以及各功能模块,所述处理器403运行存储在存储器405的计算机程序401,从而执行设备的各种功能应用以及数据处理。所述存储器405可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明所公开的存储器包括但不限于这些类型的存储器。本发明所公开的存储器405只作为例子而非作为限定。
输入单元407用于接收信号的输入及接收用户的输入,输入单元407可包括触控面板以及其它输入设备,触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元409可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元409可采用液晶显示器、有机发光二极管等形式。处理器403是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储器403内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。
在一种实施方式中,所述终端设备包括一个或多个处理器403,以及一个或多个存储器405,一个或多个计算机程序401,其中所述一个或多个计算机程序401被存储在存储器405中并被配置为由所述一个或多个处理器403执行,所述一个或多个计算机程序401配置用于执行以上实施例所述的so文件加载方法。图4中所示的一个或多个处理器403能够执行、实现图3中所示的启动模块10、加载模块20的功能。
本发明实施例提供的一种终端设备,可实现响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;若有,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述so文件;其中,所述应用通过如下步骤生成,包括:获取不打包到应用的待拦截的so文件的配置信息;根据所述配置信息获取应用中的待拦截的so文件,将应用中的所述待拦截的so文件删除;获取应用中加载所述待拦截的so文件的加载代码,基于函数注解方式将所述加载代码拦截;打包生成应用。通过提供一种应用中so文件的动态下发、加载的方法,在启动应用时,判断所述应用是否有被拦截的so文件,so文件为sharedobject文件,是Linux系统下的动态链接库,当应用启动时或启动特定功能时,需要加载特定的动态链接库以便完成应用的正常运行,若判断应用有被拦截的so文件,则根据应用的配置信息,向服务器请求获取对应的so文件以从服务器获取所述被拦截的so文件,实现so文件的动态下发,然后将所述被拦截的so文件下载至应用的安装目录,实现so文件的预加载,当应用特定的功能启动时,该功能需要加载特定的so文件,则从应用的安装目录加载对应so文件,便可实现应用功能的快速启动,提高应用功能的启动效率,同时减小过多的so文件储存在应用本地安装目录而占用的存储资源,减少终端的消耗。
本发明实施例提供的终端设备可以实现上述提供的so文件加载方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种so文件加载方法,其特征在于,包括:
响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;
若有,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;
从所述应用的安装目录加载所述so文件;其中,所述应用通过如下步骤生成,包括:
获取不打包到应用的待拦截的so文件的配置信息;
根据所述配置信息获取应用中的待拦截的so文件,将应用中的所述待拦截的so文件删除;
获取应用中加载所述待拦截的so文件的加载代码,基于函数注解方式将所述加载代码拦截;
打包生成应用。
2.根据权利要求1所述的方法,其特征在于,所述从所述应用的安装目录加载所述so文件之后,还包括:
判断加载所述so文件是否异常,若异常,向服务器请求该应用的完整安装包,所述完整安装包中包含加载异常的so文件及相应的加载代码;
根据所述完整安装包重新安装应用。
3.根据权利要求1所述的方法,其特征在于,所述响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件之后,还包括:
若无,确定应用的安装目录中存在目标so文件;
从服务器获取所述目标so文件的密钥标识,与应用的安装目录中对应的目标so文件的密钥标识作比对,若不同,从服务器获取所述目标so文件。
4.根据权利要求1所述的方法,其特征在于,所述获取不打包到应用的待拦截的so文件的配置信息,包括:
获取so文件的应用层级,将所述应用层级满足预设条件的so文件作为不打包到应用的待拦截的so文件,确定所述配置信息。
5.根据权利要求1所述的方法,其特征在于,所述应用包括若干个功能;所述响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件,包括;
响应于应用的第一功能的启动,根据封装应用的信息文件判断所述应用的第一功能是否有被拦截的so文件;
所述从所述应用的安装目录加载所述so文件,包括:
从所述应用的安装目录加载所述第一功能对应的so文件。
6.根据权利要求5所述的方法,其特征在于,所述从所述应用的安装目录加载所述so文件之后,还包括:
统计应用各功能的启动效率,若所述应用的某一功能的启动效率低于预设阈值,将该功能对应的so文件作为永久性文件存放至本地目录。
7.根据权利要求1所述的方法,其特征在于,所述获取应用源代码中加载所述待处理拦截的so文件的加载代码,包括:
从应用的源代码中获取加载所述待拦截的so文件的加载代码;和/或,
从应用的AAR文件中获取加载所述待拦截的so文件的加载代码。
8.一种so文件加载装置,其特征在于,包括:
启动模块:用于响应于应用的启动,根据封装应用的信息文件判断所述应用是否有被拦截的so文件;
加载模块:用于若判断所述应用有被拦截的so文件,根据所述应用的配置信息从服务器获取该应用被拦截的so文件,并将所述被拦截的so文件移动至应用的安装目录;从所述应用的安装目录加载所述so文件。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的so文件加载方法。
10.一种终端设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个计算机程序配置用于执行根据权利要求1至7任一项所述的so文件加载方法。
CN201910893876.6A 2019-09-20 2019-09-20 so文件加载方法、装置、存储介质及终端设备 Pending CN110765394A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910893876.6A CN110765394A (zh) 2019-09-20 2019-09-20 so文件加载方法、装置、存储介质及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910893876.6A CN110765394A (zh) 2019-09-20 2019-09-20 so文件加载方法、装置、存储介质及终端设备

Publications (1)

Publication Number Publication Date
CN110765394A true CN110765394A (zh) 2020-02-07

Family

ID=69330814

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910893876.6A Pending CN110765394A (zh) 2019-09-20 2019-09-20 so文件加载方法、装置、存储介质及终端设备

Country Status (1)

Country Link
CN (1) CN110765394A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111897600A (zh) * 2020-07-31 2020-11-06 惠州Tcl移动通信有限公司 减少应用内存占用的方法、装置、移动终端及系统
CN113360172A (zh) * 2021-06-30 2021-09-07 平安普惠企业管理有限公司 应用部署方法、装置、计算机设备及存储介质
CN113377382A (zh) * 2020-03-09 2021-09-10 北京字节跳动网络技术有限公司 一种软件安装包的处理方法、装置、电子设备及存储介质
CN117311853A (zh) * 2023-11-28 2023-12-29 深圳市移卡科技有限公司 Apk文件的处理方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120297034A1 (en) * 2010-01-22 2012-11-22 Beijing Kingsoft Software Co., Ltd. Method, Device and System for Running Application
CN105867973A (zh) * 2016-03-30 2016-08-17 乐视控股(北京)有限公司 应用程序中so文件的加载方法及系统
CN106406945A (zh) * 2016-09-09 2017-02-15 武汉斗鱼网络科技有限公司 一种安卓系统so文件的加载方法及电子设备
CN107368536A (zh) * 2017-06-22 2017-11-21 深圳市金立通信设备有限公司 一种安装包的优化方法及终端
CN109857454A (zh) * 2018-12-15 2019-06-07 中国平安人寿保险股份有限公司 安装包生成与缓存方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120297034A1 (en) * 2010-01-22 2012-11-22 Beijing Kingsoft Software Co., Ltd. Method, Device and System for Running Application
CN105867973A (zh) * 2016-03-30 2016-08-17 乐视控股(北京)有限公司 应用程序中so文件的加载方法及系统
CN106406945A (zh) * 2016-09-09 2017-02-15 武汉斗鱼网络科技有限公司 一种安卓系统so文件的加载方法及电子设备
CN107368536A (zh) * 2017-06-22 2017-11-21 深圳市金立通信设备有限公司 一种安装包的优化方法及终端
CN109857454A (zh) * 2018-12-15 2019-06-07 中国平安人寿保险股份有限公司 安装包生成与缓存方法、装置、电子设备及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113377382A (zh) * 2020-03-09 2021-09-10 北京字节跳动网络技术有限公司 一种软件安装包的处理方法、装置、电子设备及存储介质
CN111897600A (zh) * 2020-07-31 2020-11-06 惠州Tcl移动通信有限公司 减少应用内存占用的方法、装置、移动终端及系统
CN113360172A (zh) * 2021-06-30 2021-09-07 平安普惠企业管理有限公司 应用部署方法、装置、计算机设备及存储介质
CN113360172B (zh) * 2021-06-30 2024-02-27 李建 应用部署方法、装置、计算机设备及存储介质
CN117311853A (zh) * 2023-11-28 2023-12-29 深圳市移卡科技有限公司 Apk文件的处理方法、装置、计算机设备及存储介质
CN117311853B (zh) * 2023-11-28 2024-03-12 深圳市移卡科技有限公司 Apk文件的处理方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
JP6912583B2 (ja) サービス処理方法および装置
CN110765394A (zh) so文件加载方法、装置、存储介质及终端设备
CN107832100B (zh) 一种apk插件的加载方法及其终端
KR101793306B1 (ko) 가상 애플리케이션 확장 포인트
JP5658283B2 (ja) アプリケーションの稼働方法、装置及びシステム
CN105786538B (zh) 基于安卓系统的软件升级方法和装置
CN107992308B (zh) 一种安卓终端应用程序的插件化管理方法
CN103647816A (zh) 一种应用软件升级的方法及装置
CN110543327B (zh) 业务组件复用方法、装置、计算机设备及存储介质
CN112162795B (zh) 一种插件启动方法、装置、计算机设备和存储介质
CN104699511A (zh) 插件升级方法及装置
CN109117153B (zh) 应用程序的处理方法、装置、终端和存储介质
CN110413292B (zh) 应用程序的轻应用安装方法、移动终端及存储介质
CN110888658A (zh) 应用程序中功能模块的动态化方法、装置及存储介质
US20220137944A1 (en) Accelerating application and sub-package installations
CN106293790B (zh) 基于Firefox操作系统的应用程序升级方法和装置
CN109271193B (zh) 一种数据处理方法、装置、设备及存储介质
CN110489138B (zh) 一种应用更新方法、装置和存储介质
CN113535206B (zh) 多版本代码升级方法及系统
CN108897639B (zh) 文件处理方法及装置
CN114637969A (zh) 目标对象的鉴权方法及装置
CN113282363A (zh) 一种优化混合app的方法及装置
CN109840156B (zh) 一种数据缓存方法及其设备、存储介质、终端
CN108959955B (zh) 文件处理方法及装置
CN113110849A (zh) 按需加载资源

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination