热修复 tinker接入及源码分析

本文出自张鸿洋的博客
一、概述
放了一个大长假,happy,先祝大家2017年笑口常开 。
假期中一行代码没写,但是想着马上要上班了,赶紧写篇博客回顾下技能,于是便有了本文 。
热修复这项技术,基本上已经成为项目比较重要的模块了 。主要因为项目在上线之后,都难免会有各种问题,而依靠发版去修复问题,成本太高了 。
现在热修复的技术基本上有阿里的、QZone的方案、美团提出的思想方案以及腾讯的等 。
其中可能接入是最简单的一个(和命令行接入方式差不多),不过兼容性还是是有一定的问题的;QZone方案对性能会有一定的影响,且在Art模式下出现内存错乱的问题(其实这个问题我之前并不清楚,主要是在MDCC上指出的);美团提出的思想方案主要是基于 Run的原理,目前尚未开源,不过这个方案我还是蛮喜欢的,主要是兼容性好 。
这么看来,如果选择开源方案,目前是最佳的选择,的介绍有这么一句:
已运行在微信的数亿设备上,那么为什么你不使用呢?
好了,说了这么多,下面来看看如何接入,以及的大致的原理分析 。希望通过本文可以实现帮助大家更好的接入,以及去了解的一个大致的原理 。
二、接入
接入目前给了两种方式,一种是基于命令行的方式,类似于的接入方式;一种就是的方式 。
考虑早期使用的app应该挺多的,以及很多人对的相关配置还是觉得比较繁琐的,下面对两种方式都介绍下 。
(1)命令行接入
接入之前我们先考虑下,接入的话,正常需要的前提(开启混淆的状态) 。
最后就是看看这个项目有没有需要配置混淆;
有了大致的概念,我们就基本了解命令行接入,大致需要哪些步骤了 。
依赖引入
dependencies {// ...//可选,用于生成application类provided('com.tencent.tinker:tinker-android-anno:1.7.7')//tinker的核心库compile('com.tencent.tinker:tinker-android-lib:1.7.7')}