论文部分内容阅读
随着互联网的发展与智能手机的普及,移动应用的用户数量呈海量增长,移动应用的功能也逐渐复杂。通过提升应用的使用体验与团队的开发效率,可以有效地增加应用的用户数量并创造效益。然而用户更新应用时,需要下载安装包,并手动点击安装。这样的更新操作不仅消耗流量而且过程繁琐,用户因此拒绝更新应用。从而降低了新版本的覆盖速度,影响新功能的推广与错误代码的及时修护。针对这个问题,本文提出了具有Android动态加载功能的EasyDynamicLoad(EDL)框架。EDL框架把工程分为多个独立的模块插件,主程序可以按照功能动态地加载插件。EDL使得更新操作仅下载模块插件即可,为用户节省了流量。EDL加载插件的操作对用户是透明的,用户不再需要手动安装。因此EDL解决了不能快速更新应用和不能及时修护错误的问题。另外,EDL框架使得多个团队能够并行开发各自的模块,提高了开发效率。本文以DroidPlugin框架为基础,设计并实现了EDL动态加载框架。它不仅能通过工程模块化与动态加载的特点,实现快速地更新应用、及时地修护BUG,还能支持So、Web等类型的插件,还能支持插件之间的相互调用。主要的工作内容如下:(1)设计了EDL框架的总体架构,共有解析安装包、manifest管理、资源加载、代理插件、生命周期管理、管理插件、启动插件、安全这八个模块。(2)实现了EDL框架。模仿Android系统启动应用的流程,实现主程序对插件应用的启动,包括安装包的解压分析、资源的加载、组件的加载与管理等。(3)通过“占坑”的方式实现插件组件的加载。它通过类加载与反射机制替换插件组件与主程序组件,使得无法在主程序的索引表中注册的插件组件,也能够被Android系统启动。(4)使用扩展资源id中packageId字段的方法,为每个插件分配不同的packageId字段,实现插件资源的加载。实现SoLauncher等插件启动器,用于处理多种类型的插件。对插件文件进行MD5与RSA加密,确保EDL插件文件的可靠性。与DroidPlugin框架相比,EDL不仅能加载Apk类型的插件,还可以加载So与Web类型的插件;EDL支持普通插件调用公共库插件,降低了代码重复率;EDL通过签名加密工作,确保了插件文件的可靠性。经过试验验证,EDL框架能正常且快速地加载多种插件,并兼容Android4.0至8.0版本与市场上大部分的Android手机。因此,EDL相比DroidPlugin实用性更好。