一种对移动终端的资源进行管理的方法
技术领域
本发明涉及移动终端技术领域,尤其涉及一种对移动终端的资源进行管理的方法。
背景技术
智能移动终端上装备了丰富的硬件和软件资源,为用户提供了各种各样的功能和服务,比如定位、网络视频、社交网络等等。但是这些资源的错误使用会造成严重的后果,比如电池的快速消耗,甚至是***崩溃。
在应用程序中管理这些资源通常需要利用操作***提供的接口,对接口的调用往往需要遵循一些隐含规律。例如,应用程序(例如唤醒锁wakelock)在获得一个资源后,需要在使用完该资源之后释放掉相应资源。
目前,对智能移动终端平台上的各种资源进行管理是一件困难且易于出错的事情。首先,例如Android、IOS(苹果公司开发的用于便携式可移动智能设备的操作***平台)等智能移动终端的操作***平台,提供了资源管理的接口和相关的文档,但是并没有被明确说明调用这些资源管理接口所需要遵循的规律。其次,一种资源可能会遵循多条使用规律,开发人员在进行开发时可能会忽略掉一些规律或者是错误使用了某种规律。最后,在一个复杂的***中,即使是经验丰富的开发人员也很难保证所有资源都被正确利用了。目前已有的工作或致力于帮助用户定位哪一个应用出现错误,或致力于解决特定的某种资源管理错误。尚没有一种通用的管理智能移动终端资源的方法。由于智能移动终端应用程序基于事件触发的特性,用于普通程序的规律发现方法也不再适用。
发明内容
有鉴于此,本发明实施例提供了一种对移动终端的资源进行管理的方法,以解决对移动终端的应用程序资源进行管理,管理正确率较低的技术问题。
一方面,本发明实施例提供了一种对移动终端的资源进行管理的方法,包括:
依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口,并判断所述类或者接口是否误提取;
对各个所述类或者接口的各个函数分析,建立与所述各个函数相对应的完全顺序图;
建立所述各个类或者接口的函数调用关系图,对所述函数调用关系图和所述完全顺序图进行跨函数分析,获得生命周期流程图;
对所述生命周期流程图进行挖掘,获得资源管理的管理规律,依据所述管理规律对应用程序资源进行管理。
优选地,所述依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口,并判断所述类或者接口是否误提取,具体包括,
依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口;
对与应用应用程序资源管理相关的所述类或者接口进行标注;
依据所述类或者接口和所述标注,训练一个决策树模型;
依据所述决策树对所述类或者接口进行分类,判断所述类或者所述接口是否误提取。
优选地,所述预设的特征包括:第一个特征、第二个特征和第三个特征;
其中,所述第一个特征是所述类或者接口是否是公共的和抽象的;
所述第二个特征是所述类或者接口的名称、所在的包名中是否包含预设的关键词;
所述第三个特征是所述类或者接口中的成员函数或者数据成员满足预设的模式。
优选地,所述对各个所述类或者接口的各个函数进行分析,建立与所述各个函数相对应的完全顺序图,具体包括:
通过利用JAVA字节码分析工具对所述类或者接口的所述各个函数进行分析,获得各个所述类或者所述接口的中间语言;
从所述中间语言出发,建立控制流程图,所述控制流程图以程序语句为节点,语句之间的执行顺序为有向边;
向所述控制流程图中添加有向边,并删除所述控制流程图中没有调用函数的语句节点,以及和调用资源无关的***函数的语句节点,获得与所述各个函数对应的所述完全顺序图。
优选地,所述建立所述各个类或者接口的函数调用关系图,对所述函数调用关系图和所述完全顺序图进行跨函数分析,获得生命周期流程图的具体过程包括:
建立所述各个类或者接口的函数调用关系图;
所述完全顺序图按照预设的代替次数代替所述函数调用关系图中的节点,获得所述生命周期流程图。
优选地,所述对所述生命周期流程图进行挖掘,获得资源管理的管理规律,依据所述管理规律对应用程序资源进行管理具体包括:
对所述生命周期流程图进行封闭频繁子图挖掘,获得封闭频繁子图;
去除所述封闭频繁子图中冗余的边,获得所述资源管理的规律。
本发明实施例提供的一种应用程序资源对移动终端的资源进行管理的方法,具有如下有益效果:
对应用程序进行分析、挖掘,获得资源管理的管理规律,依据所述管理规律对应用程序资源进行管理,从而提高了对智能移动终端平台上的应用程序资源进行管理正确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施提供的一种应用程序资源对移动终端的资源进行管理的方法的流程示意图;
图2是本发明实施提供的依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口,并判断类或者接口是否误提取的流程示意图;
图3是本发明实施提供的对各个类或者接口的各个函数进行分析,建立与各个函数相对应的完全顺序图的流程示意图;
图4是本发明实施提供的建立各个类或者接口的函数调用关系图,对函数调用关系图和完全顺序图进行跨函数分析,获得生命周期流程图的流程示意图;
图5是本发明实施提供的对生命周期流程图进行挖掘,获得资源管理的管理规律,依据所述管理规律对应用程序资源进行管理的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开的在一种应用程序资源对移动终端的资源进行管理的方法可以运行于安装有Android(谷歌公司开发的用于便携式可移动智能设备的操作***平台)操作***的移动终端中,该移动终端可以是移动电话、掌上电脑、平板电脑等等中的任意一种。
本发明实施例公开了一种应用程序资源对移动终端的资源进行管理的方法,如图1所示,包括:
步骤S101,依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口,并判断类或者接口是否误提取。
在步骤S101中,依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口,并判断类或者接口是否误提取,如图2所示,具体包括,
步骤S1011,依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口;
需要进行说明的是,安装文件可以是apk(Android Package,Android安装包)。
在Android***提供的应用程序编程接口中包含了很多类,但是其中只有一部分类与资源管理相关,另一部分类与资源管理无关。在本发明实施例一中依据预设的特征从安装文件和应用程序编程接口文档中提取与应用应用程序资源管理相关的类或者接口。
在本发明实施例中,预设的特征包括:第一个特征、第二个特征和第三个特征;
其中,第一个特征是类或者接口是否是公共的(public)和抽象的(abstract);
第二个特征是类或者接口的名称、所在的包名中是否包含预设的关键词;例如,WiFi(一个无线网路通信技术的品牌)、Bluetooth(蓝牙)。
第三个特征是类或者接口中的成员函数或者数据成员满足预设的模式。这些模式可以包括:*connect(),*start(),*dispose(),*acquire(),*register()等。
步骤S1012,对与应用应用程序资源管理相关的类或者接口进行标注;
步骤S1013,依据类或者接口和标注,训练一个决策树模型;
步骤S1014,依据决策树对类或者接口进行分类,判断类或者接口是否误提取。
需要进行说明的是,当类或者所述接口不属于决策树中的分类时,该类或者接口为误提取;当类或者所述接口属于决策树中的分类时,该类或者接口为正确提取。
步骤S102,对各个类或者接口的各个函数进行分析,建立与各个函数相对应的完全顺序图。
在步骤S102中对各个类或者接口的各个函数进行分析,建立与各个函数相对应的完全顺序图,,具体步骤流程如图3所示:
步骤S1021,通过利用JAVA字节码分析工具对类或者接口的各个函数进行分析,获得各个类或者接口的中间语言;
在步骤S1021中,中间语言是指一种应用于抽象机器(abstract machine)的编程语言,使用中间语言可以让最佳化的过程更简单,也用于增进可移植性的能力,改进移植的方式则是利用中间语言的编译器,可以编译出许多中央处理器及操作***可使用的机器码,例如C语言。中间语言的复杂度,通常介于高阶语言及低级语言之间,例如汇编语言。
步骤1022,从中间语言出发,建立控制流程图,控制流程图以程序语句为节点,语句之间的执行顺序为有向边。
步骤1023,向所述控制流程图中添加有向边,并删除所述控制流程图中没有调用函数的语句节点以及和调用资源无关的***函数的语句节点,获得与所述各个函数对应的所述完全顺序图。
在步骤S1023中,如果可以从节点u出发,可以沿着有向边经过多跳到达节点v,添加从节点u指向节点v的有向边。
在步骤S1022中,控制语句可以包括if、switch、goto等改变程序运行顺序的语句。
步骤S103,利用JAVA字节码分析工具建立各个类或者接口的函数调用关系图,对函数调用关系图和完全顺序图进行跨函数分析,获得生命周期流程图。
在步骤S103中,利用JAVA字节码分析工具建立各个类或者接口的函数调用关系图,对函数调用关系图和完全顺序图进行跨函数分析,获得生命周期流程图的具体过程,如图4所示:
步骤S1031,利用JAVA字节码分析工具建立各个类或者接口的函数调用关系图。在函数调用关系图中,每个函数调用语句都被链接到它所调用的函数。
步骤S1032,完全顺序图按照预设的代替次数代替函数调用关系图中的节点,获得生命周期流程图。
其中,预设的代替次数可以是3次。
步骤S104,对生命周期流程图进行挖掘,获得资源管理的管理规律,依据所述管理规律对应用程序资源进行管理。
在步骤S104中对生命周期流程图进行挖掘,获得资源管理的管理规律,依据所述管理规律对应用程序资源进行管理具体过程如图5所示:
步骤S1041,对生命周期流程图进行封闭频繁子图挖掘,获得封闭频繁子图。对生命周期流程图进行封闭频繁子图挖掘可以采用gSpan(一种频繁子图挖掘算法)算法。
步骤S1042,去除封闭频繁子图中冗余的边,获得资源管理的规律。
同时,如果g1,g2是我们挖掘出的封闭频繁子图,同时g1是g2的子图,并且非常接近1的话,就说明遵循g1但没有遵循g2的程序很可能犯了相关的错误。
通过本发明实施例公开的一种应用程序资源对移动终端的资源进行管理的方法,可以对应用程序进行分析、挖掘,获得资源管理的管理规律,依据所述管理规律对应用程序资源进行管理,并寻找程序中没有遵循管理规律的错误,从而提高了对智能移动终端平台上的各种资源进行管理正确率。
显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。