热修复-Nuwa学习篇】的更多相关文章

nuwa热修复是基于qq空间团队的思路,最近的热度话题了,很多种方案,自己先研究几种方案,基本上都各有优势,学习肯定得先挑个软柿子捏了,自己对比了一下,发现nuwa代码量少点,所以就决定了,先研究nuwa(不过对于Nuwa,该项目仅仅只能用只是一个Demo来形容,要用于线上,其背后还需要很多坑去填,这也是很多广大同胞的反映结果,不过提供学习是很好的,毕竟多了解一种方案也是好事). 首先肯定得gradle 例子github上也都有,也可以下载别人的项目借鉴 然后进入application看看具体情…
现在,热修复的具体实现方案开源的也有很多,原理也大同小异,本篇文章以Nuwa为例,深入剖析.  Nuwa的github地址 https://github.com/jasonross/Nuwa 以及用于hotpatch生成的gradle插件地址 https://github.com/jasonross/NuwaGradle 而Nuwa的具体实现是根据QQ空间的热修复方案来实现的.安卓App热补丁动态修复技术介绍.在阅读本篇文章之前,请先阅读该文章. 从QQ空间终端开发团队的文章中可以总结出要进行热…
上一篇主要分析了Robust的使用方法,这一篇就来总结一下Robust的源码分析. 我个人倾向于将Robust框架分为两个部分,自动插入代码和动态加载Patch. 一.Robust源码分析 目前我的分析将Robust动态加载分为两个部分,一部分是插桩后的代码逻辑,一部分是拉取Patch的逻辑. 我们首先来看插桩后的代码(这里面套用的是官方的代码,可能有些过时了) 插桩前 public long getIndex() { ; } 插桩后 public static ChangeQuickRedir…
随着谷歌的Gradle插件版本号的不断升级,Gradle插件如今最新的已经到了2.1.0-beta1,相应的依赖为com.android.tools.build:gradle:2.0.0-beta6,而Nuwa当时出来的时候,Gradle插件还仅仅是1.2.3版本号,相应的依赖为com.android.tools.build:gradle:1.2.3,当时的Nuwa是依据有无preDex这个Task进行hook做不同的逻辑处理,而随着Gradle插件版本号的不断增加,谷歌增加了一个新的接口能够用…
吐槽之前先放一张大帅图. (md 这张图貌似有点小 不纠结这个了==) 有时候项目刚刚上线或者迭代 测试或者在线上使用测出一个bug来 真让人蛋疼 不得不重新改bug测试 打包混淆上线感觉就向findviewById一样让你无法忍受 热修复从15年开始火起来 关于热修复的理论知识基于QQ空间热修复的一片文章(后面我会附上这几天学习的了解 不想看吐槽的可以滑到最后面 没办法为了凑字 数不够150个字数不允许发表 难道这就可以阻挡我吐槽的 呸 是学习的热情了吗) 其实在学习热修复之前 我们还是有必要…
最近需要在项目中使用热修复框架,在这里以美团的Robust为主写一篇文章总结一下学习的过程. 一直认为要学习一个框架的原理,首先需要让他跑起来,从效果反推回去,这样更容易理解. 一.美团Robust的使用 首先我们在编写代码前需要做如下准备 配置文件读写权限,6.0以上需要手动获取 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>…
1:需求背景 项目上线之后,发现BUG需要修复(比如安卓兼容性等测试难以发现的问题),频繁的更新影响用户体验 2:方案要求 静默下载,耗费流量少,打完补丁后立刻生效,不用重启apk 3:解决思路 3.1:使用andfix,打出差异包,使用补丁的方式安装3.2:缺陷:只能支持源码级别函数的修改(全局变量.新增.删除方法都是无效的) 4:修复BUG.创建差异包步骤 基于andfix原理,每次版本更新后,之前版本打的热修复补丁都会失效,这也符合我们上图的修复步骤. 因为每次热修复的修改,都会被合并到下…
苹果做了非常多的努力来建造和维持一个健康并且干净的应用环境.其中对现在的现状起到很大作用的部分就是苹果APP STORE,它是被一个十分周密的对所有提交的应用进行检查的审批程序所保护的.尽管这个程序是被设计为用来保护IOS用户并且确保应用程序符合苹果的安全性和完整性的要求,体验过这个流程的开发者可能会觉得它太复杂了并且花费了大量的时间.发布一个新的release版本或者发布一个已经存在的APP的补丁也要遵守这个流程,这对于一个想要给一个影响现有APP用户的重要bug或者安全漏洞打补丁的开发者来说…
概述 在Android开发中,插件化和热修复的话题越来越多的被大家提及,同时随着技术的迭代,各种框架的发展更新,插件化和热修复的框架似乎已经日趋成熟,许多开发者也把这两项技术运用到实际开发协作和正式的产品当中.因此,我们势必需要了解一下这两门技术. 插件化和热修复 首先需要明确的一点,插件化和热修复不是同一个概念,虽然站在技术实现的角度来说,他们都是从系统加载器的角度出发,无论是采用hook方式,亦或是代理方式或者是其他底层实现,都是通过“欺骗”Android 系统的方式来让宿主正常的加载和运行…
一.概述 放了一个大长假,happy,先祝大家2017年笑口常开. 假期中一行代码没写,但是想着马上要上班了,赶紧写篇博客回顾下技能,于是便有了本文. 热修复这项技术,基本上已经成为项目比较重要的模块了.主要因为项目在上线之后,都难免会有各种问题,而依靠发版去修复问题,成本太高了. 现在热修复的技术基本上有阿里的AndFix.QZone的方案.美团提出的思想方案以及腾讯的Tinker等. 其中AndFix可能接入是最简单的一个(和Tinker命令行接入方式差不多),不过兼容性还是是有一定的问题的…