本文出自张鸿洋的博客
一、概述
放了一个大长假,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')}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
顺便加一下签名的配置:
android{//...signingConfigs {release {try {storeFile file("release.keystore")storePassword "testres"keyAlias "testres"keyPassword "testres"} catch (ex) {throw new InvalidUserDataException(ex.toString())}}}buildTypes {release {minifyEnabled truesigningConfig signingConfigs.releaseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}debug {debuggable trueminifyEnabled truesigningConfig signingConfigs.releaseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
文末会有demo的下载地址,可以直接参考build.文件,不用担心这些签名文件去哪找 。
API引入
API主要就是初始化和 。- HA Keepalived案例一:Keepalived双机热备精讲
- 2023年小暑热吗
- 十 LiveVideoStackCon讲师热身分享 —— “新潮”AI硬
- CSZ CMS 1.2.7 用户私信XSS漏洞复现+审计+修复建议
- Ubuntu 18.04.5 LTS 引导修复
- NOIP2017列队
- 【Python爬虫】CSDN热榜文章热门词汇分析
- 韩国进口方便面煮面三养火鸡面热干拌面要怎么吃
- amd积热是什么意思
- ipc开头的热点是啥