Android移动应用热更新方案的研究与实现
发布时间:2020-06-24 20:36
【摘要】:随着移动互联网的快速发展,移动应用已经成为人们日常生活中必不可少的一部分。而在移动应用的开发过程中经常会遇到以下两个问题:第一,新功能的发布每次都需要通过发布新版本,用户下载安装完整安装包才可以使用;第二,新版本发布后,如果因为代码或资源错误导致应用无法正常使用,开发者在紧急修复错误后需要重新发版。因此,如何能够实现更好的Android移动应用更新方案是业界的一大热点。本文结合热修复技术和插件化技术对Android移动应用更新展开研发,主要的工作包括:(1)本文设计了包括Gradle插件模块、补丁检查校验模块和补丁加载模块的Android应用客户端热更新框架,以及包括补丁分发平台模块、MIS管理平台模块和补丁存储模块的Android应用服务端热更新框架。(2)补丁合成采用了基于类的全量Dex合成方案,Dalvik虚拟机中采用了移除基准包Dex类定义的方案,ART虚拟机中采用了改变基准包Dex和补丁包Dex文件名的方案,避免了基准包Dex和补丁包Dex合成完整Dex带来的性能损耗。基于DexDiff算法,将生成补丁的比较粒度由Dex文件内每个Section扩大到类级别,实现生成补丁算法的优化。(3)方案除了支持类修复、资源修复和SO修复等基本的热修复功能,还增加了对新增四大组件的支持,实现热更新功能。(4)对方案进行了详细设计和实现,实现了补丁生成、补丁配置、补丁下发、补丁合成、补丁加载以及补丁管理的整套流程。实际测试结果表明,系统较好地满足了设计要求。本论文提出的热更新方案很好地实现了补丁文件的动态下发、实时管理以及动态加载,同时支持组件的动态更新,实际使用表明,该方案具有良好的应用效果。
【学位授予单位】:东南大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP311.52;TP316
【图文】:
Odex文件的作用是当存在Odex文件时,则直接执行Odex文件,无需每次都从Apk中提取逡逑Dex文件,提前将Dex文件从Apk中提取出来,加快系统启动和应用运行速度。Class文件、Dex逡逑文件与Odex文件差异如图2-1所示。逡逑7逡逑
提供了依赖管理,提供了有意义的默认配置,缺点是默认的生命周期限制太大,定制扩展逡逑复杂。另外,Ant和Maven共同的缺点是构建脚本基于XML,随着复杂度的增加,构建代码难以维逡逑护。在结合Ant和Maven的优点后,Gradle成为JVM新一代的构建工具,它的特性集如图2-2所示。逡逑Gradle就是逡逑Groovy逡逑I具有表达性的|逡逑丨语言和强大的\逦/灵活的约定逡逑具的集成逦v逦P逦1依赖管理逡逑二/T\逡逑社区驱动和公\逡逑司支持逦\可扩展的构建丨逡逑逦邋————逦I逦i逡逑毫不费力的扩逡逑展逡逑图2-2邋Gradle构建工具特性集逡逑Gradle的工作流程分为三个阶段,分别是初始化阶段、配置阶段和执行阶段。初始化阶段负责逡逑解析项目中的settings.gradle文件,该文件中记录了项目中所有需要构建的模块名。配置阶段负责解逡逑析每个需要构建的模块中builcLgradle文件所包含的任务,并将这些任务根据依赖关系转化成有向图,逡逑用于表示项目中所有任务的执行顺序。最后,根据有向图中顺序,依次执行有向图中的任务。为了逡逑使开发者更加灵活方便的在某个生命周期事件发生前后执行特定代码
本文编号:2728318
【学位授予单位】:东南大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP311.52;TP316
【图文】:
Odex文件的作用是当存在Odex文件时,则直接执行Odex文件,无需每次都从Apk中提取逡逑Dex文件,提前将Dex文件从Apk中提取出来,加快系统启动和应用运行速度。Class文件、Dex逡逑文件与Odex文件差异如图2-1所示。逡逑7逡逑
提供了依赖管理,提供了有意义的默认配置,缺点是默认的生命周期限制太大,定制扩展逡逑复杂。另外,Ant和Maven共同的缺点是构建脚本基于XML,随着复杂度的增加,构建代码难以维逡逑护。在结合Ant和Maven的优点后,Gradle成为JVM新一代的构建工具,它的特性集如图2-2所示。逡逑Gradle就是逡逑Groovy逡逑I具有表达性的|逡逑丨语言和强大的\逦/灵活的约定逡逑具的集成逦v逦P逦1依赖管理逡逑二/T\逡逑社区驱动和公\逡逑司支持逦\可扩展的构建丨逡逑逦邋————逦I逦i逡逑毫不费力的扩逡逑展逡逑图2-2邋Gradle构建工具特性集逡逑Gradle的工作流程分为三个阶段,分别是初始化阶段、配置阶段和执行阶段。初始化阶段负责逡逑解析项目中的settings.gradle文件,该文件中记录了项目中所有需要构建的模块名。配置阶段负责解逡逑析每个需要构建的模块中builcLgradle文件所包含的任务,并将这些任务根据依赖关系转化成有向图,逡逑用于表示项目中所有任务的执行顺序。最后,根据有向图中顺序,依次执行有向图中的任务。为了逡逑使开发者更加灵活方便的在某个生命周期事件发生前后执行特定代码
【参考文献】
相关期刊论文 前3条
1 解志君;;代理模式在Java中的应用[J];软件;2014年05期
2 董晓刚;;Android系统四大组件的注册与激活[J];硅谷;2013年05期
3 陈芝荣;蒋建峰;姚树春;;Java类加载器机制与模型[J];软件导刊;2010年08期
相关硕士学位论文 前5条
1 刘羽佳;基于Android平台的皮肤引擎的设计、实现及其应用[D];南京大学;2016年
2 李霞;Android虚拟机运行时技术的分析与评测[D];东南大学;2015年
3 宿元庆;Android基于动态加载的软件保护研究[D];西安电子科技大学;2014年
4 禹建磊;Android系统启动程序的优化设计与实现[D];西北大学;2012年
5 郭国勇;Android启动过程优化研究[D];兰州大学;2012年
本文编号:2728318
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2728318.html