论文部分内容阅读
由于开源性、良好的可移植性和应用程序硬件平台无关性等优秀特征,Android迅速的成为主流的移动设备操作系统。但受制于硬件的限制,手机的计算能力和存储能力都很有限,如果将Android应用程序手机上运行比较耗时的函数迁移到高性能和大存储的与服务器端执行,加快应用程序的执行速度,提供更好的用户体验。Android应用程序的耗时函数迁移中存在两个关键问题:一是获得Android应用程序中可以迁移的函数,二是在可迁移函数中筛选出比较耗时的函数。针对第一个关键问题:本文通过建立dex文件分析模型,进行Andriod可执行程序的静态分析,得到程序中函数之间的调用关系,且过滤掉那些涉及云端无法提供的本地资源的、不适合迁移的函数(比如:与UI、硬件、网络相关的函数和本地(NATIVE)函数)以及直接和间接调用这些涉及本地资源的函数。该方法基于编译后的可执行程序文件,与现有分析工具Traceview和dmtracedump相比,无需修改或获取程序源码即能实现其中函数调用关系分析,因此在现实应用中具有更广泛的实用价值。针对第二个关键问题:本文通过修改Dalvik虚拟机的源码实现,即在Dalvik虚拟机解释器解释执行函数的入口和出口处添加获得函数执行的起始和结束时间功能,与现有的针对Android应该程序获得函数执行的方法相比,无需源码或修改源码操作,只需要提前将需要计算执行时间的函数信息的文本放入移动设备中。为说明方法的有效性,文中针对多个Andriod实例应用程序进行了实验分析,实验结果表明本方法分析结果正确,且具有较高的分析效率。本文提供了一种可迁移函数执行时间的获得方法及系统,以克服现有技术必须获得应用程序源代码或修改dex文件才可以获得函数调用关系和执行时间的缺陷,故具有更强的适用性,而且通过对比同一个函数在移动设备上运行和在x86平台上运行,证明将那些在移动设备上执行时间长或耗内存或占CPU的函数迁移到x86上运行可以提高15-20倍的效率。