Android基于TinkerPatch的超详细热修复之旅

在我们开始热修复之旅之前,大家需要先明白的是这篇文章是基于TinkerPatch的,而不是微信的Tinker,虽然TinkerPatch是基于Tinker的项目,但他们终归是两码事。先附上Tinkerpatch的官网地址。


1.集成TinkerPathSDK:

  1. 登录官网,获取Appkey值;
  2. 在项目,注意不是modelGradle添加仓库jcenter的依赖:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {

        classpath ("com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:${TINKERPATCH_VERSION}") { changing = true }
    }

        3.在Module层的Gradle添加依赖:

 
dependencies { //无需引入tinker的任何库,使用tinkerpatch sdk即可,如之前项目使用过Tinker,则集成SDK时其他的tinker库需要删除,否则会报错 compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:${TINKERPATCH_VERSION}") { changing = true } compile "com.android.support:multidex:1.0.1" } //这个.gradle文件可以直接复制,无需修改,只是在生成补丁时修改部分内容 apply from: 'tinkerpatch.gradle'
      4.然后引入 tinkerpatch.gradle,放在module层中

然后需要更改一下内容,后面再细说;

         5.然后再自己的Application类,他与微信的Tinker区别就是你不用自己去安装微信的要求重新定义Application比较简单,然后写上相应的代码:

 
@Override public void onCreate() { super.onCreate(); // 我们可以从这里获得Tinker加载过程的信息 if (BuildConfig.TINKER_ENABLE) { tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike(); // 初始化TinkerPatch SDK TinkerPatch.init(tinkerApplicationLike) .reflectPatchLibrary() .setPatchRollbackOnScreenOff(true) .setPatchRestartOnSrceenOff(true); // 每隔3个小时去访问后台时候有更新,通过handler实现轮训的效果 new FetchPatchHandler().fetchPatchWithInterval(3); } }

注意写到这里,如果你没有仔细阅读他们的文档,会遇到一个大坑。待会再细说。

6.配置签名


基本到这就集成完成了。

2.打包:基础包以及补丁包

1.找到项目的Gradle视图,找到build一层,双击打包,此包为基础包,也就是你假装有bug的包,你可以自己先做个标记,代表这是有问题的基础包。我这里是以Debug版本为例的。


 

此时就会在下图生成打包好的基础包,app后面的则是你当时打包成功后生成的时间戳,这个后面会用到。


        2.  然后再来修改tinkerpatch.gradle中的 baseInfo代码,将你刚打好包的时间戳填入代码中

def bakPath = file("${buildDir}/bakApk/")
def baseInfo = "app-1.0.8-1110-17-18-39"
def variantName = "release"
        3. 再修改  appVersion ,记住与你Module中的build.gradle 中的versionName 一致。然后再修改一下代码,将之前基础包上的bug修复好。
appVersion = ""

4. 打补丁包。还是在这个视图,选中tinker目录下的圈圈部分,双击666。静待打包完成


大概半分钟后,打好的补丁包则在这里了:path_signed_7zip.apk 便是了。



3.上传补丁包,修复bug

1. 进到Tinkerpatch官网,找到自己的APP,如下图。因为我已经上传过补丁了。此时大家可以点击旁边的添加APP版本,然后根据自己的情况输入版本号。


添加好之后生成下图


然后上传之前打包好的补丁包:path_signed_7zip.apk 。 点击提交,然后杀掉手机上已经安装好基础包的APP进程,再打开等待表演开始。


也许你这时等了好久发现,咋没成功呀。进程杀死了N遍啊,是我打开的方式不对?

告诉你,此时你把此文往上翻,找到我标红的文字那里,是不是有个坑?

再去阅读他们的开发文档,你会发现:



对比一下,去看Application 的配置是不是发现了不一样?时间!! 问题出在轮询的时间上。

好了,以上就是大概Android热修复的全部流程了,由于写这篇文章与开发时间不一致,好些内容都忘了。希望能帮到大家。

小朋友和小朋友的妈妈都喜欢看~

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值