andfix

几种常见的软件开发模型分析

非 Y 不嫁゛ 提交于 2019-11-29 09:41:27
概述 软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码、测试和维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。 最早出现的软件开发模型是1970年W·Royce提出的瀑布模型。该模型给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品,投入使用。但计算拓广到统计分析、商业事务等领域时,大多数程序采用高级语言(如FORTRAN、COBOL等)编写。瀑布模式模型也存在着缺乏灵活性、无法通过并发活动澄清本来不够确切的需求等缺点。 常见的软件开发模型还有演化模型、螺旋模型、喷泉模型、智能模型等。 典型的开发模型 1. 边做边改模型(Build-and-Fix Model); 2. 瀑布模型(Waterfall Model); 3. 快速原型模型(Rapid Prototype Model); 4. 增量模型(Incremental Model); 5. 螺旋模型(Spiral Model); 6. 演化模型

(一)Andfix热修复原理

别来无恙 提交于 2019-11-29 06:23:25
AndFix,全称是 And roid hot- fix 。是阿里开源的一个Android热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 7.0。 一、动态加载 热修复、热更新、插件化都是利用动态加载的原理(相关知识:类加载机制、虚拟机) 二、热修复 Andfix (最轻量级的热修复,只能改方法)Android热修复的先驱,通过动态加载dex文件,在native层进行方法替换实现热修复,局限性:兼容性问题,每个Android版本都需要维护一套Andfix的实现代码,维护麻烦,现该开源库已停止维护了。优点:即时生效。 Tink dex替换,是在java层实现,不足:冷启动后生效 三、源码追踪 要通过方法替换实现热修复,那么就需要去了解一下底层的类加载机制,特别是方法加载这一块的具体实现流程。 大概流程就是先加载类,然后再将类中的 method 和 field 加载到 class 中,具体如下: 1、 env->FindClass jni函数中找到类的函数(方法在类里面,根据类加载找到方法加载的途径) 2、 ClassLinker::FindClass 是env->FindClass的主要实现的函数。 3、 DefineClass 是ClassLinker::FindClass 中返回的类的类型。 4、 LoadClass