论文部分内容阅读
Android是一个开源的智能手机平台,截止到2013年第二季度已经占据了超过80%的智能手机市场,并且还在继续增长。从2008年开始众多的应用程序开发人员贡献了超过50万款Android apps,随着智能手机硬件设备的提升,Android应用程序试图提供越来越复杂的功能,以此来提高用户体验,这因此也使得Android手机的两个弱点被明显的暴露出来。第一个弱点是电池电量。复杂的Android应用程序通常会消耗大量的电量,例如Google play中下载量最大的前十个应用程序都特别耗电。尽管手机电池的容量在不断的增长,但是仍然不能满足用户日益增长的能耗需求,而且电池技术在短期内很难有很大的提高。其次由于Android手机的众多不同的硬件配置,相同的应用程序在不同的手机上运行获得的用户体验也不同。通常硬件配置越高的手机运行应用程序就越流畅,相反手机配置过低会带来较差的用户体验,用户会因为这个原因而不再使用应用程序,这会给应用程序开发人员带来极大损失。因此想办法减少应用程序的耗电量,降低应用程序对硬件设备的依赖具有重要的意义。目前的Computation Offloading技术旨在帮助提高Android应用程序的性能同时减少它的耗电量。通过将Android应用切分成两部分,一部分代码放在手机上执行,另一部分放在远程服务器上执行,借助于服务器强大的执行能力以及充足的电量供应来减少手机上应用程序的耗电量。本课题正是借助于Computation Offloading这一思想,提出了一个Android应用程序代码切分框架。开发人员只需要按照一定的步骤对编程环境进行配置,Android应用程序在编译阶段会被自动进行切分,切分过程对开发者透明。编译完成会生成一个apk文件和一个jar文件,apk文件被安装在手机上而jar文件则放在服务器上执行。当有网络连接时手机上的代码和服务器上的代码进行通信,当网络断开的时候就和原来的应用程序一样只执行手机本地的代码。代码切分框架在切分代码的时候设计了一些具体的切分策略,并采用Grivan-Newman社群算法,保证切分之后手机端和服务器上的代码相互之间的代码调用次数最少,将由于网络传输带来的能耗降到最低。本文详细介绍了代码切分框架的设计与实现,并附上关键部分代码,此外还介绍了实现过程中的一些重要算法和技术细节。