首页 / 专利库 / 软件 / 软件套件 / 软件组件 / 插件 / 一种应用优化方法及装置

一种应用优化方法及装置

阅读:852发布:2024-02-06

专利汇可以提供一种应用优化方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种应用优化方法及装置,涉及应用开发技术领域,可以在 操作系统 无需Root的情况下,实现对应用功能的增强。所述方法包括:在确定应用所在操作系统采用ART 虚拟机 库模式后,生成服务 框架 相匹配的新生ART hook相关文件;将所述新生ART hook相关文件和服务框架 插件 的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。本发明适用于应用的优化增强。,下面是一种应用优化方法及装置专利的具体信息内容。

1.一种应用优化方法,其特征在于,包括:
在确定应用所在操作系统采用安卓运行时ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件;
将所述新生ART hook相关文件和服务框架插件的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;
通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。
2.根据权利要求1所述的方法,其特征在于,所述新生ART hook相关文件包含新生Native hook库文件和新生Java hook库文件,所述替换所述服务框架中原生的ART hook相关文件,具体包括:
通过服务框架插件的预置代码中hook函数钩取服务框架中原生Java hook库文件中的Java函数,以及钩取服务框架中原生Native hook库文件中的Java函数数据;
对所述原生Native hook库文件进行修改,使得所述原生Native hook库文件中的hook数据透传至新生Java hook库文件中,实现根据新生Java hook库文件中的Java函数,钩取新生Native hook库文件中相应的Java函数数据。
3.根据权利要求2所述的方法,其特征在于,所述通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新,具体包括:
当所述服务框架插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作;
根据新生Native hook库文件中的Java函数数据,调用新生Java hook库文件中的Java函数,并调用原生Java hook库文件中的Java函数分发,以便执行所述服务框架插件相应的功能函数,实现对所述应用的功能更新。
4.根据权利要求3所述的方法,其特征在于,所述当所述服务框架插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作,具体包括:
根据所述新生Java hook库文件中的Java函数和所述新生Native hook库文件中相应的Java函数数据,配置所述服务框架插件对应的配置界面,所述配置界面中包含所述应用可更新的功能项数据;
在所述应用启动之前,将服务框架的预置代码注入到所述应用中;
获取所述配置界面中输入的配置信息,并通过调用注入的所述服务框架的预置代码中hook函数,对所述应用中需要调用的与所述配置信息相关接口函数的入口点进行修改,使得所述入口点指向所述服务框架插件的预置代码中的预置接口函数;
当所述预置接口函数被调用时,确定与所述预置接口函数对应的原生Java hook库文件中Java函数需要被调用,以便触发hook操作。
5.一种应用优化装置,其特征在于,包括:
生成单元,用于在确定应用所在操作系统采用安卓运行时ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件;
注入单元,用于将所述生成单元生成的新生ART hook相关文件和服务框架插件的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;
更新单元,用于通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。
6.根据权利要求5所述的装置,其特征在于,所述新生ART hook相关文件包含新生Native hook库文件和新生Java hook库文件,
所述注入单元,具体用于通过服务框架插件的预置代码中hook函数钩取服务框架中原生Java hook库文件中的Java函数,以及钩取服务框架中原生Native hook库文件中的Java函数数据;
对所述原生Native hook库文件进行修改,使得所述原生Native hook库文件中的hook数据透传至新生Java hook库文件中,实现根据新生Java hook库文件中的Java函数,钩取新生Native hook库文件中相应的Java函数数据。
7.根据权利要求6所述的装置,其特征在于,所述更新单元具体包括:
触发模,用于当所述服务框架插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作;
调用模块,用于根据新生Native hook库文件中的Java函数数据,调用新生Java hook库文件中的Java函数,并调用原生Java hook库文件中的Java函数分发,以便执行所述服务框架插件相应的功能函数,实现对所述应用的功能更新。
8.根据权利要求7所述的装置,其特征在于,
所述触发模块,具体用于根据所述新生Java hook库文件中的Java函数和所述新生Native hook库文件中相应的Java函数数据,配置所述服务框架插件对应的配置界面,所述配置界面中包含所述应用可更新的功能项数据;
在所述应用启动之前,将服务框架的预置代码注入到所述应用中;
获取所述配置界面中输入的配置信息,并通过调用注入的所述服务框架的预置代码中hook函数,对所述应用中需要调用的与所述配置信息相关接口函数的入口点进行修改,使得所述入口点指向所述服务框架插件的预置代码中的预置接口函数;
当所述预置接口函数被调用时,确定与所述预置接口函数对应的原生Java hook库文件中Java函数需要被调用,以便触发hook操作。
9.一种存储设备,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至4任一项所述的应用优化方法。
10.一种终端,其特征在于,所述终端包括存储设备和处理器,
所述存储设备,用于存储计算机程序;
所述处理器,用于执行所述计算机程序以实现权利要求1至4任一项所述的应用优化方法。

说明书全文

一种应用优化方法及装置

技术领域

[0001] 本发明涉及一种应用开发技术领域,特别是涉及一种应用优化方法及装置。

背景技术

[0002] 随着市场上平板电脑、智能手机等智能终端的兴起,智能终端已经成为人们生活中不可或缺的一部分,人们可以通过智能终端上安装的客户端应用进行在线聊天、网络游戏、网上购物等操作。
[0003] 目前,为了增强应用本身的功能,可以通过用于应用增强的服务框架来实现,服务框架具体通过Root替换了操作系统的应用进程处理文件(app process),该文件是所有系统和第三方应用的启动文件;在较新的操作系统中通常采用的安卓运行时(Android runtime,ART)虚拟机库模式,因此当应用需要启动时,利用这个应用进程处理文件,加载新的ART虚拟机库的相关文件,进而可以通过服务框架插件基于该相关文件对应用的某些功能进行更改、添加或删除等,以增强应用的功能。
[0004] 然而,随着操作系统越来越完善,操作系统被Root的可能性越来越低,因此通过上述方式将会无法实现增强应用本身的功能。

发明内容

[0005] 有鉴于此,本发明提供了一种应用优化方法及装置,主要目的在于解决目前通过上述现有技术方式将会无法实现增强应用本身功能的问题。
[0006] 依据本发明的第一方面,提供了一种应用优化方法,包括:
[0007] 在确定应用所在操作系统采用ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件;
[0008] 将所述新生ART hook相关文件和服务框架插件的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;
[0009] 通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。
[0010] 依据本发明的第二方面,提供了一种应用优化装置,包括:
[0011] 生成单元,用于在确定应用所在操作系统采用ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件;
[0012] 注入单元,用于将所述生成单元生成的新生ART hook相关文件和服务框架插件的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;
[0013] 更新单元,用于通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。
[0014] 依据本发明的第三方面,提供了一种存储设备,其上存储有计算机程序,所述程序被处理器执行时实现第一方面所述的应用优化方法。
[0015] 依据本发明的第四方面,提供了一种终端,所述终端包括存储设备和处理器,[0016] 所述存储设备,用于存储计算机程序;
[0017] 所述处理器,用于执行所述计算机程序以实现第一方面所述的应用优化方法。
[0018] 借由上述技术方案,本发明提供的一种应用优化方法及装置,与目前需要通过Root替换操作系统的应用进程处理文件,才能实现通过用于应用增强的服务框架来实现增强应用本身功能的方式相比,本发明在确定应用所在操作系统采用ART虚拟机库模式后,将生成的新生ART hook相关文件和服务框架插件的预置代码注入到应用中,以替换服务框架中原生的ART hook相关文件,改变了服务框架的原生ART hook机制,以便操作系统可以在无需Root的情况下,可以根据用户自己实际的需要,通过服务框架插件基于新生ART hook相关文件数据,实现对应用的某些功能进行更改、添加或删除等,以增强应用的功能,使应用的功能多样化,能够适应不同用户的不同需求。
[0019] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明
[0020] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0021] 图1示出了本发明实施例提供的一种应用优化方法流程示意图;
[0022] 图2示出了本发明实施例提供的另一种应用优化方法流程示意图;
[0023] 图3示出了本发明实施例提供的一种原生Xposed ART hook机制实例示意图;
[0024] 图4示出了本发明实施例提供的一种新生Xposed ART hook机制实例示意图;
[0025] 图5示出了本发明实施例提供的一种应用优化装置的结构示意图;
[0026] 图6示出了本发明实施例提供的另一种应用优化装置的结构示意图;
[0027] 图7示出了本发明实施例提供的一种终端的结构示意图。

具体实施方式

[0028] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0029] 如背景技术所述,目前由于通过用于应用增强的服务框架来实现增强应用本身功能的方式需要通过Root替换操作系统的应用进程处理文件才能实现,但是操作系统被Root的可能性会越来越低,因此通过这种方式将会无法实现增强应用本身功能的问题。
[0030] 为了解决上述问题,本发明实施例提供了一种应用优化方法,可以改变服务框架的原生ART hook机制,在操作系统无需Root的情况下,实现对应用功能的增强,如图1所示,该方法包括:
[0031] 101、在确定应用所在操作系统采用ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件。
[0032] 其中,ART虚拟机库相比Dalvik虚拟机,使用预编译技术(Adead-of-Time compile)取代Dalvik中的即时编译技术,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用,这样的话,应用的启动(首次)和执行都会变得更加快速。ART hook相关文件可以包含Java函数以及相应的Java函数代码数据,该Java函数可以用以实现对应用功能的增强。在本发明实施例中的应用可以为系统应用、第三方应用、分身应用等,具体可以为游戏应用、购物应用、视频应用、搜索应用等。
[0033] 对于本发明实施例的执行主体可以为用于实现在操作系统无需Root的情况下更新应用功能的应用优化装置。在确定应用所在操作系统采用ART虚拟机库模式后,可以对在服务框架原生ART hook相关文件上进行适配,修改其中的函数,使得服务框架插件在需要对应用的功能进行更新时,能够依赖该新生ART hook相关文件的代码数据。
[0034] 102、将新生ART hook相关文件和服务框架插件的预置代码注入到应用中,以替换服务框架中原生的ART hook相关文件。
[0035] 在本发明实施例中,为了实现服务框架插件能够调用新生ART hook相关文件中的代码数据,需要先将服务框架插件的代码进行适配,然后将适配后的代码与新生ART hook相关文件注入到应用中,使得在服务框架插件实现对应用增强功能时采用新的ART hook机制,不采用原生的ART hook机制,进而实现在操作系统无需Root的情况下更新应用功能。
[0036] 103、通过服务框架插件基于新生ART hook相关文件数据,实现对应用的功能更新。
[0037] 例如,服务框架插件需要调用相应的功能接口函数时,基于新生ART hook相关文件中的代码数据,并根据用户的实际需求,来实现相应的应用增强功能。
[0038] 对于本发明实施例,上述技术方案可以根据实际情况应用到不同的操作系统中,通过本发明实施例提供的应用优化方法,与目前需要通过Root替换操作系统的应用进程处理文件,才能实现通过用于应用增强的服务框架来实现增强应用本身功能的方式相比,替换了架中原生的ART hook相关文件,改变了服务框架的原生ART hook机制,以便操作系统可以在无需Root的情况下,根据用户自己实际的需要,通过服务框架插件基于新生ART hook相关文件数据,实现对应用的某些功能进行更改、添加或删除等,以增强应用的功能,使应用的功能多样化,能够适应不同用户的不同需求。
[0039] 进一步的,为了更好的说明上述处理方法的过程,作为对上述实施例的细化和扩展,服务框架具体可以为Xposed框架,相应的服务框架插件具体可以为Xposed插件,操作系统可以为安卓(Android)系统,以此为例,但不限于此,本发明实施例提供了另一种应用优化方法,如图2所示,该方法包括:
[0040] 201、获取应用所在安卓系统的版本信息。
[0041] 其中,版本信息中可以包含安卓系统的版本号、版本名称等信息。
[0042] 202、根据获取到的版本信息,检测安卓系统是否采用ART虚拟机库模式。
[0043] 例如,根据安卓系统的版本号,确定安卓系统采用的是ART虚拟机库模式还是采用的是Dalvik虚拟机模式,如果安卓系统采用的是Dalvik虚拟机模式,可以利用现有的Dalvik模式机制,实现通过Xposed插件对应用的某些功能进行更改、添加或删除等,对此本实施例不做赘述;如果安卓系统采用的是ART虚拟机库模式,Xposed框架需要基于ART虚拟机库对应的代码库数据进行适配,以实现增强应用的功能,但是采用原生Xposed ART hook机制需要Root权限,所以需要采用本实施例提出的新生Xposed ART hook机制。
[0044] 203、在确定安卓系统采用ART虚拟机库模式后,生成Xposed框架相匹配的新生ART hook相关文件。
[0045] 其中,新生ART hook相关文件可以包含新生Native hook库文件和新生Java hook库文件,新生Java hook库文件中可以包含Java函数,新生Native hook库文件中可以包含Java函数代码数据。新生Native hook库文件和新生Java hook库文件可以基于原生Native hook库文件和原生Java hook库文件适配得到。
[0046] Xposed框架一款超级强大的系统和应用增强框架,Xposed框架的具体系统和应用增强功能是通过Xposed插件实现。Xposed插件是在Xposed框架上开发的应用,其本身也是一个操作系统第三方应用。
[0047] 204、将新生ART hook相关文件和服务框架插件的预置代码注入到应用中,通过Xposed插件的预置代码中hook函数钩取Xposed框架中原生Java hook库文件中的Java函数,以及钩取Xposed框架中原生Native hook库文件中的Java函数数据。
[0048] 其中,hook函数可以为一种钩子函数,钩子函数是操作系统消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。
[0049] 205、对原生Native hook库文件进行修改,使得原生Native hook库文件中的hook数据透传至新生Java hook库文件中,实现根据新生Java hook库文件中的Java函数,钩取新生Native hook库文件中相应的Java函数数据。
[0050] 在本发明实施例中,对Xposed框架的Native hook库文件进行修改,删除了原生hook代码,使得hook数据透传至新生Java hook库文件中,进而实现根据新生Java hook真正hook新生Native hook。
[0051] 206、当Xposed插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作。
[0052] 步骤206具体可以包括:根据新生Java hook库文件中的Java函数和新生Native hook库文件中相应的Java函数数据,配置Xposed插件对应的配置界面,配置界面中可以包含应用可更新的功能项数据,例如该配置界面中可以设有应用选择键,用户通过该键可以选择想要进行配置的应用。该配置界面中还可以设有插件加载键,用户可以将其他地方下载来的功能插件,通过该插件加载键就可以将功能插件直接添加在该配置界面中,用户就可以通过Xposed插件将功能插件加载到相应的应用中,使该应用能够实现功能插件对应的功能;该配置界面中还可以设有图形设置按键、颜色设置键、功能图标移动键、功能删除键、功能添加键等,通过这些按键可以更改应用中某些功能按键的图形、颜色、位置,用户可以根据自己的需要,利用功能删除键删除应用中自己不需要的某些功能,或者利用功能添加键为应用添加某些功能,使应用能够多样化,进而使应用的功能能够跟随用户的喜好进行变动;
[0053] 在应用启动之前,将Xposed框架的预置代码注入到应用中,使得Xposed框架、Xposed插件和应用三者之间能够形成映射,实现三者的相互访问;然后在确定用户在配置界面中输入完成信息后,获取配置界面中输入的配置信息,并通过调用注入的Xposed框架的预置代码中hook函数,对应用中需要调用的与配置信息相关接口函数的入口点进行修改,使得该入口点指向Xposed框架插件的预置代码中的预置接口函数,例如,对于本发明实施例,通过调用注入的Xposed框架的预置代码中hook函数,对与配置信息相关接口函数代码的入口点的指向进行了更改,使其直接指向预置接口函数代码,这种方式无需获取Root权限,就可以对入口进行更改,方便用户使用;
[0054] 当该预置接口函数被调用时,确定与该预置接口函数对应的原生Java hook库文件中Java函数需要被调用,以便触发hook操作。
[0055] 207、根据新生Native hook库文件中的Java函数数据,调用新生Java hook库文件中的Java函数,并调用原生Java hook库文件中的Java函数分发。
[0056] 进一步的,以便于执行Xposed框架插件相应的功能函数,实现对应用的功能更新。
[0057] 例如,用户在利用Xposed插件的配置界面,将应用A中的分享按键图标改成红心形的具体实现过程如下:
[0058] (1)在Xposed插件的配置界面界面中选择应用A,并加载应用的各个功能按键;
[0059] (2)从多个功能按键中选择分享按键,并选择红心形图标;
[0060] (3)触发应用按键后,Xposed插件根据红心形图标形成相应的配置信息,该配置信息中的参数信息就是红色心形图示;
[0061] (4)设置完成后,用户就可以打开应用A,然后将Xposed框架的预置代码和Xposed插件的预置代码注入到应用A中;
[0062] (5)当用户触发分享按键时,Xposed框架就会利用预置hook接口函数代码,将分享按键启动的接口函数的入口点,指向Xposed插件预置代码中包含的预置接口函数代码;
[0063] (6)在分享按键启动之前,将(3)中的参数信息作为入参,通过预置接口函数代码添加到相应的功能函数中;
[0064] (7)执行该该功能函数,将分享按键的图标改为红心形。
[0065] 为了更好的说明上述实施例,给出相应的实施架构实例,以Xposed框架为例,结合原生Xposed ART hook机制和本实施例中的新生Xposed ART hook机制进行说明,如图3所示,为原生Xposed ART hook机制,该hook机制实现是修改后的app process,Native hook和Java hook共同实现,app process启动时,会加载Native hook库文件和Java hook库文件,使得Xposed插件hook住Xposed框架Java层的Java函数,并hook住Xposed框架Native层的Java函数数据,当被hook的某些Java函数被调用时,触发hook函数,获取Xposed框架Native层的Java函数数据和Java层的Java函数供Xposed插件调用,然而app process是应用的启动文件,替换系统中的app process是需要Root权限的;
[0066] 为了解决上述问题,在免Root的情况下,也能实现增强应用的功能,如图4所示,为本实施例中的新生Xposed ART hook机制,包括:
[0067] 1.预先将修改后的Xposed Java hook库、Native hook库以及Xposed插件的预置代码注入到第三方应用中;
[0068] 2.Xposed插件通过hook函数钩取Xposed框架原生java hook库文件中的Java函数;
[0069] 3.通过hook函数钩取Xposed框架原生Native hook库文件中的Java函数数据,并对原生Native hook库文件进行修改,使得Native hook库文件中的hook数据透传至新生java hook库文件中,实现利用新生java hook库文件数据,钩取新生native hook库文件中的Java函数数据;
[0070] 4.当Xposed插件对应的原生java hook库文件中的Java函数需要被调用时,触发hook,根据新生native hook库文件中的Java函数数据,调用新生java hook库文件中的Java函数,并调用原生java hook库文件中的Java函数分发,进而执行Xposed插件相关的功能函数,从而在免Root的情况下,实现Xposed插件对应用的某些功能进行更改、添加或删除等,以增强应用的功能,使得应用功能多样化。
[0071] 本发明实施例提供的另一种应用优化方法,与目前需要通过Root替换操作系统的应用进程处理文件,才能实现通过用于应用增强的服务框架来实现增强应用本身功能的方式相比,可以在无需Root的情况下,根据用户自己实际的需要,通过服务框架插件基于新生ART hook机制,实现对应用的某些功能进行更改、添加或删除等,以增强应用的功能,使应用的功能多样化,能够适应不同用户的不同需求。
[0072] 进一步的,作为图1和图2所述方法的具体实现,本发明实施例提供了一种应用优化装置,如图5所示,所述装置包括:生成单元31、注入单元32、更新单元33。
[0073] 生成单元31,可以用于在确定应用所在操作系统采用安卓运行时ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件;生成单元31为本装置中基于原生ART hook相关文件,生成新生ART hook相关文件的主要功能模,在生成该相关文件后,触发注入单元32进行工作。
[0074] 注入单元32,可以用于将所述生成单元31生成的新生ART hook相关文件和服务框架插件的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;注入单元32为本装置中注入新生ART hook机制相关文件的主要功能模块。
[0075] 更新单元33,可以用于通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。更新单元33为本装置中实现应用功能增强的主要功能模块。
[0076] 在具体的应用场景中,所述新生ART hook相关文件可以包含新生Native hook库文件和新生Java hook库文件,相应的,所述注入单元32,具体可以用于通过服务框架插件的预置代码中hook函数钩取服务框架中原生Java hook库文件中的Java函数,以及钩取服务框架中原生Native hook库文件中的Java函数数据;然后对所述原生Native hook库文件进行修改,使得所述原生Native hook库文件中的hook数据透传至新生Java hook库文件中,实现根据新生Java hook库文件中的Java函数,钩取新生Native hook库文件中相应的Java函数数据。
[0077] 在具体的应用场景中,如图6所示,所述更新单元33具体包括:触发模块331、调用模块332。
[0078] 触发模块331,可以用于当所述服务框架插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作;
[0079] 调用模块332,可以用于根据新生Native hook库文件中的Java函数数据,调用新生Java hook库文件中的Java函数,并调用原生Java hook库文件中的Java函数分发,以便执行所述服务框架插件相应的功能函数,实现对所述应用的功能更新。
[0080] 在具体的应用场景中,所述触发模块331,具体可以用于根据所述新生Java hook库文件中的Java函数和所述新生Native hook库文件中相应的Java函数数据,配置所述服务框架插件对应的配置界面,所述配置界面中包含所述应用可更新的功能项数据;在所述应用启动之前,将服务框架的预置代码注入到所述应用中;获取所述配置界面中输入的配置信息,并通过调用注入的所述服务框架的预置代码中hook函数,对所述应用中需要调用的与所述配置信息相关接口函数的入口点进行修改,使得所述入口点指向所述服务框架插件的预置代码中的预置接口函数;当所述预置接口函数被调用时,确定与所述预置接口函数对应的原生Java hook库文件中Java函数需要被调用,以便触发hook操作。
[0081] 在具体的应用场景中,如图6所示,所述装置还包括:获取单元34、检测单元35。
[0082] 获取单元34,可以用于获取应用所在操作系统的版本信息;
[0083] 检测单元35,可以用于根据所述获取单元34获取的版本信息,检测所述操作系统是否采用ART虚拟机库模式。
[0084] 在具体应用场景中,所述服务框架可以为Xposed框架,所述服务框架插件可以为Xposed插件。
[0085] 需要说明的是,本发明实施例提供的一种应用优化装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
[0086] 基于上述图1和图2所示方法,相应的,本发明实施例还提供了一种存储设备,其上存储有计算机程序,程序被处理器执行时实现图1和图2所示方法对应的步骤。
[0087] 基于上述如图1和图2所示方法和如图5和图6所示装置的实施例,本发明实施例还提供了一种终端,如图7所示,包括:处理器41、存储器42、及存储在存储器42上并可在处理器上运行的计算机程序,其中存储设备42和处理器41均设置在总线43上,所述处理器41执行所述程序时实现图1和图2所示方法对应的步骤。
[0088] 通过应用本发明的技术方案,可以在无需Root的情况下,根据用户自己实际的需要,通过服务框架插件基于新生ART hook机制,实现对应用的某些功能进行更改、添加或删除等,以增强应用的功能,使应用的功能多样化,能够适应不同用户的不同需求。
[0089] 本发明实施例公开了:
[0090] A1、一种应用优化方法,包括:
[0091] 在确定应用所在操作系统采用安卓运行时ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件;
[0092] 将所述新生ART hook相关文件和服务框架插件的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;
[0093] 通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。
[0094] A2、根据A1所述的方法,所述新生ART hook相关文件包含新生Native hook库文件和新生Java hook库文件,所述替换所述服务框架中原生的ART hook相关文件,具体包括:
[0095] 通过服务框架插件的预置代码中hook函数钩取服务框架中原生Java hook库文件中的Java函数,以及钩取服务框架中原生Native hook库文件中的Java函数数据;
[0096] 对所述原生Native hook库文件进行修改,使得所述原生Native hook库文件中的hook数据透传至新生Java hook库文件中,实现根据新生Java hook库文件中的Java函数,钩取新生Native hook库文件中相应的Java函数数据。
[0097] A3、根据A2所述的方法,所述通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新,具体包括:
[0098] 当所述服务框架插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作;
[0099] 根据新生Native hook库文件中的Java函数数据,调用新生Java hook库文件中的Java函数,并调用原生Java hook库文件中的Java函数分发,以便执行所述服务框架插件相应的功能函数,实现对所述应用的功能更新。
[0100] A4、根据A 3所述的方法,所述当所述服务框架插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作,具体包括:
[0101] 根据所述新生Java hook库文件中的Java函数和所述新生Native hook库文件中相应的Java函数数据,配置所述服务框架插件对应的配置界面,所述配置界面中包含所述应用可更新的功能项数据;
[0102] 在所述应用启动之前,将服务框架的预置代码注入到所述应用中;
[0103] 获取所述配置界面中输入的配置信息,并通过调用注入的所述服务框架的预置代码中hook函数,对所述应用中需要调用的与所述配置信息相关接口函数的入口点进行修改,使得所述入口点指向所述服务框架插件的预置代码中的预置接口函数;
[0104] 当所述预置接口函数被调用时,确定与所述预置接口函数对应的原生Java hook库文件中Java函数需要被调用,以便触发hook操作。
[0105] A5、根据A1所述的方法,所述在确定应用所在操作系统采用ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件之前,所述方法还包括:
[0106] 获取应用所在操作系统的版本信息;
[0107] 根据所述版本信息,检测所述操作系统是否采用ART虚拟机库模式。
[0108] A6、根据A1至A5任一项所述的方法,所述服务框架为Xposed框架,所述服务框架插件为Xposed插件。
[0109] B7、一种应用优化装置,包括:
[0110] 生成单元,用于在确定应用所在操作系统采用安卓运行时ART虚拟机库模式后,生成服务框架相匹配的新生ART hook相关文件;
[0111] 注入单元,用于将所述生成单元生成的新生ART hook相关文件和服务框架插件的预置代码注入到所述应用中,以替换所述服务框架中原生的ART hook相关文件;
[0112] 更新单元,用于通过所述服务框架插件基于所述新生ART hook相关文件数据,实现对所述应用的功能更新。
[0113] B8、根据B7所述的装置,所述新生ART hook相关文件包含新生Native hook库文件和新生Java hook库文件,
[0114] 所述注入单元,具体用于通过服务框架插件的预置代码中hook函数钩取服务框架中原生Java hook库文件中的Java函数,以及钩取服务框架中原生Native hook库文件中的Java函数数据;
[0115] 对所述原生Native hook库文件进行修改,使得所述原生Native hook库文件中的hook数据透传至新生Java hook库文件中,实现根据新生Java hook库文件中的Java函数,钩取新生Native hook库文件中相应的Java函数数据。
[0116] B9、根据B8所述的装置,所述更新单元具体包括:
[0117] 触发模块,用于当所述服务框架插件对应的原生Java hook库文件中Java函数需要被调用时,触发hook操作;
[0118] 调用模块,用于根据新生Native hook库文件中的Java函数数据,调用新生Java hook库文件中的Java函数,并调用原生Java hook库文件中的Java函数分发,以便执行所述服务框架插件相应的功能函数,实现对所述应用的功能更新。
[0119] B10、根据B9所述的装置,
[0120] 所述触发模块,具体用于根据所述新生Javahook库文件中的Java函数和所述新生Native hook库文件中相应的Java函数数据,配置所述服务框架插件对应的配置界面,所述配置界面中包含所述应用可更新的功能项数据;
[0121] 在所述应用启动之前,将服务框架的预置代码注入到所述应用中;
[0122] 获取所述配置界面中输入的配置信息,并通过调用注入的所述服务框架的预置代码中hook函数,对所述应用中需要调用的与所述配置信息相关接口函数的入口点进行修改,使得所述入口点指向所述服务框架插件的预置代码中的预置接口函数;
[0123] 当所述预置接口函数被调用时,确定与所述预置接口函数对应的原生Java hook库文件中Java函数需要被调用,以便触发hook操作。
[0124] B11、根据B7所述的装置,所述装置还包括:
[0125] 获取单元,用于获取应用所在操作系统的版本信息;
[0126] 检测单元,用于根据所述获取单元获取的版本信息,检测所述操作系统是否采用ART虚拟机库模式。
[0127] B12、根据B7至B11任一项所述的装置,所述服务框架为Xposed框架,所述服务框架插件为Xposed插件。
[0128] C13、一种存储设备,其上存储有计算机程序,所述程序被处理器执行时实现A1至A6任一项所述的应用优化方法。
[0129] D14、一种终端,所述终端包括存储设备和处理器,
[0130] 所述存储设备,用于存储计算机程序;
[0131] 所述处理器,用于执行所述计算机程序以实现A1至A6任一项所述的应用优化方法。
[0132] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0133] 可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0134] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0135] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0136] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0137] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0138] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0139] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0140] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种应用优化方法及装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0141] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈