[发明专利]一种针对安卓应用的迁移重构及支持系统有效
申请号: | 201510156071.5 | 申请日: | 2015-04-03 |
公开(公告)号: | CN104731654B | 公开(公告)日: | 2018-03-27 |
发明(设计)人: | 许畅;马晓星;吕建;武翔宇 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 南京钟山专利代理有限公司32252 | 代理人: | 戴朝荣 |
地址: | 210046 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 应用 迁移 支持系统 | ||
技术领域
本发明公开了一种针对安卓应用的迁移重构及支持系统,涉及软件工程技术领域。
背景技术
安卓系统是一个开放源代码的移动操作系统平台,近年来它占据了移动设备市场的极大份额,应用开发者发布了数量巨大的安卓应用。由于移动设备的运算能力往往弱于个人计算机,因此部分应用受限于设备性能较差,带给用户不好的用户体验。同时,某些安卓应用使用了移动设备上的一些独有资源,例如传感器,以实现特定的功能,但是移动设备往往无法具备所有的传感器,因此使用了某些特定传感器的应用在部分移动设备上就无法正常工作。这两方面问题都对安卓应用的进一步发展产生了负面作用。
目前传统的解决思路大多考虑第一个问题,即实现计算任务的转移。部分思路要求开发者在编写应用的时刻就遵从一定的模式,使得应用本身具有转移计算任务的能力,但是这种做法对于开发者提出了非常高的要求。部分思路实现了特定的安卓固件,在固件层次实现了计算任务的转移,但是它要求用户刷机以及进行一系列配置工作,对用户提出了非常高的要求。也有部分思路提出通过重构安卓应用,以支持计算任务的转移。以上三种思路都假定计算任务从移动设备转移到服务器上。服务器往往是固定在某个位置,那么移动设备远离服务器后,网络通信质量极易受到影响,对计算任务的转移效果带来了极大的挑战。同时,这些传统解决思路大多没有考虑到移动设备上传感器的相关问题,使用了特定传感器的应用无法在某些设备上运行,影响了用户体验,实现传感器功能的转移也就迫在眉睫。
发明内容
本发明所要解决的技术问题是:针对现有技术的缺陷,提供一种针对安卓应用的迁移重构及支持系统,首先分析安卓应用,对于计算任务的转移,它标识出可以被转移的计算任务,并允许用户指定自己希望转移的计算任务;对于传感器功能的转移,它识别出这个安卓应用中使用了传感器的地方,并对之进行修改,使得本设备可以使用别的设备的传感器来为这个应用服务。
本发明为解决上述技术问题采用以下技术方案:
一种针对安卓应用的迁移重构及支持系统,包括应用重构模块和运行时支撑模块,其中,
所述应用重构模块包括程序分析算法模块、程序插桩算法模块和转移引擎;
所述运行时支撑模块包括服务端支撑平台、客户端支撑平台和IP名服务器,分别部署于服务端设备、客户端设备和PC机上,其中,所述服务端支撑平台包括转移服务引擎、类文件接收模块和注册服务模块;所述客户端支撑平台包括转移控制引擎、类文件发送模块和请求服务模块;所述IP名服务器包括注册服务者模块和提供服务者模块;
原始安卓应用程序经过应用重构模块在字节码层次进行代码插桩并结合转移引擎完成重构,运行时支撑模块将重构后的安卓应用程序中的计算任务和传感器功能在移动设备之间实现转移。
作为本发明的进一步优选方案,在所述程序分析算法模块和程序插桩算法模块中,
程序分析算法模块对于原始安卓应用程序中的计算任务和传感器功能进行分析,判断并决定是否将计算任务和传感器功能转移至其他的移动设备进行处理;
程序插桩算法模块利用程序分析算法的结果进行插桩,对于计算任务,获取所有将要转移的计算任务方法,对所述计算任务方法进行改写,由服务端设备辅助执行所述方法;
对于传感器功能,在所有传感器注册和注销的地方插桩,由用户在使用本地移动设备传感器或使用其他移动设备传感器之间进行选择切换。
作为本发明的进一步优选方案,所述客户端设备上的客户端支撑平台为重构后的安卓应用服务寻找转移服务的提供者,所述服务端设备上的服务端支撑平台提供转移服务,所述PC机上的IP名服务器负责维护服务者列表,并在被询问时刻将服务者列表返回给客户端支撑平台。
作为本发明的进一步优选方案,所述程序分析算法模块搭建在Java/Android程序分析以及变换框架Soot上,利用中间表示语言Jimple实现静态分析。
作为本发明的进一步优选方案,所述转移引擎与服务端设备上的服务端支撑平台通信,交换服务内容,转移引擎将服务端支撑平台提供的服务进一步转交给原始安卓应用,实现计算任务和传感器功能的转移。
作为本发明的进一步优选方案,所述转移引擎对于计算任务采取的方法是:将某个类的对象以及方法签名、方法参数序列化后打包,转交给服务端支撑平台,服务端支撑平台通过Java反射API动态加载类并执行方法,返回结果以及新的对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510156071.5/2.html,转载请声明来源钻瓜专利网。