一、接入

​ 按照官方文档https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170526100125接入。

  • 接入时使用enableProxyApplication = true方式接入

  • tinker-support.gradle中的bakPath更改,默认是在build文件夹下,每次clen会清空

    bakPath = file("${rootProject.rootDir}/tinkerApk/")
    复制代码
  • tinker-support.gradle中的tinkerId命名规范:

    • 基准包:tinkerId = "base-"+versionName
    • 补丁包:tinkerId = "patch-"+versionName+"补丁序号"

二、Jenkins打包

  • 正常打包流程还是按照之前的步骤执行

  • 打patch包时增加配置

    #打补丁包时打开,格式固定为patch-版本号-序号
    export tinkerId=patch-4.8.21-6
    #基准包路径
    export baseApkDir=app-1124-14-32-57#3.打[基准包]时注释,打[补丁包]需要打开
    sed -i '/def baseApkDir/c'"def baseApkDir =\"${baseApkDir}\";" app/tinker-support.gradle
    #打补丁包时打开,PS:为了和其他tinkerId区分,查找的tinkerId前加了空格
    sed -i '/tinkerId/c'"tinkerId =\"${tinkerId}\";" app/tinker-support.gradle
    复制代码
    • tinkerId 按照规范去修改

    • baseApkDie目录为有Bug的线上包的路径,拷贝最近一次打包的目录

    • 修改执行的Gradle TaskbuildTinkerPatchOnlineRelease

三、热修复流程

  1. 发现Bug
  2. 基于taghotfix分支
  3. hotfix分支打包
  4. 修复bug并提交
  5. 打补丁包
  6. 测试补丁
  7. 全量下发

四、测试流程

1.在AndroidStudio中chek线上bug包代码,在Bugly.init之后增加

Bugly.setIsDevelopmentDevice(getApplicationContext(), BuildConfig.DEBUG);
复制代码

2.签名一定与线上签名保持一致

3.运行代码

4.将补丁包上传至bugly热修复平台,选择开发设备下发

5.重启App,进入主界面之后,等待1-2分钟

6.再次重启App

注:如未修复,请重复5,6步骤两到三次

五、遇到的坑

  • 如果有多Flavors配置,需要在tinker-support.gradle中配置

    buildAllFlavorsDir = "${bakPath}/${baseApkDir}"
    复制代码

    去掉一些配置 只有打开buildAllFlavorsDir才可以去掉

    // 编译补丁包时,必需指定基线版本的apk,默认值为空
    // 如果为空,则表示不是进行补丁包的编译
    // @{link tinkerPatch.oldApk }
    baseApk = "${bakPath}/${baseApkDir}/app-release.apk"// 对应tinker插件applyMapping
    baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"// 对应tinker插件applyResourceMapping
    baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"
    复制代码

  • 涉及到渠道需要上传加固包的比如 360、应用宝,需要在tinker-support.gradle中配置

    isProtectedApp = true
    复制代码

    注意:这个配置不会影响非加固包

  • 注掉这个属性,官方文档有时候有这个属性,有时候没有。加了这个属性会导致编译不过

     // 是否开启反射Application模式enableProxyApplication = false
    复制代码
  • 混淆规则使用proguard-android.txt不要使用混淆优化 proguard-android-optimize.txt,不然在打差异包再次混淆时会报错

    proguardFiles getDefaultProguardFile('proguard-android.txt')
    复制代码
  • 7z配置

    • 本地配置

      sevenZip {zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
      }
      复制代码
    • Jenkins服务器配置

      sevenZip {zipArtifact = "com.tencent.mm:SevenZip:1.1.10"path = "/usr/bin/7za"}
      复制代码
  • 资源混淆 AndResGuard

    目前暂时不支持资源混淆

六、目前效果

出现过一次线上bug,使用Tinker热修复,配合bugly发布平台,总耗时大概20分钟,到目前为止修复率很高,而且没有引起任何二次bug
复制代码

Android热修复Tinker接入文档相关推荐

  1. Android 热修复Tinker接入实战

    1 热修复原理 热修复的原理一句话总结就是:就是dex的动态替换. 首先,我们知道PC上的JVM是直接解析class字节码的,而android上的JVM是解析dex文件的,因此Android程序要运行 ...

  2. Android 热修复 Tinker接入及源码浅析

    本文已在我的公众号hongyangAndroid首发. 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/54882693 本文出自 ...

  3. Android 热修复 Tinker接入及源码浅析最精彩没有之一

    接入Tinker 接入tinker目前给了两种方式,一种是基于命令行的方式,类似于AndFix的接入方式:一种就是gradle的方式. 考虑早期使用Andfix的app应该挺多的,以及很多人对grad ...

  4. Android 热修复 Tinker Gradle Plugin解析

    本文已在我的公众号hongyangAndroid原创首发. 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/72667669 本文 ...

  5. Android热修复-Tinker简析

    一.简介 日常工作工作中难免会遇到项目上线后出现bug问题,如果紧急发版往往由于渠道审核时间问题,导致bug修复不及时,影响用户体验.这时我们需要引入热修复,免去发版审核烦恼. 热更新优势: 让应用能 ...

  6. Android 微信热修复 Tinker 接入过程及使用方法

    一.前言 学习热修复 Tinker 的使用,主要有两个原因: 业务需要:项目会出现一些细小的bug,需要等到发布新版才能修复,因此一直有关注热修复这块的技术. 技术驱动:这是一件需要一直保持的事情,不 ...

  7. Android热修复Tinker原理分析

    目录 1.tinker的class文件修复 2.tinker的资源文件修复 3.几种热修复方案对比 1.tinker的class文件修复 1.1.先说dex文件的加载和类的查找过程 1.1.1.dex ...

  8. android热修复原理底层替换,Android 热修复 - 各框架原理学习及对比

    写在开头 从15年开始各技术大佬们开始研究热修复技术,并陆续开源了许多的热修复框架.如 Jasonross 的 Nuwa,美团的 Robust,阿里的 Andfix,腾讯的 Tinker 等等...均 ...

  9. Android热修复之Tinker集成最新详解

    前言 该文章属于初级集成详解,侧重Tinker的使用,如若想深入了解其原理请自行查阅相关文档Tinker相关文档 当前市面的热补丁方案有很多,其中比较出名的有阿里的 AndFix.美团的 Robust ...

最新文章

  1. 前端技术选型的遗憾和经验教训
  2. 【重磅】Tensorflow2.0实现29种深度强化学习算法大汇总
  3. Linux RPM 常用命令
  4. php mysql特殊符号过滤微信小程序_微信小程序数据过滤(filter)方法
  5. centos安装xrdp实现远程桌面访问
  6. Window 消息大全使用详解(无聊没事做)
  7. 我的BERT!改改字典,让BERT安全提速不掉分(已开源)
  8. kvm系列之四:热添加技术
  9. 【水果识别】基于matlab GUI自助水果超市【含Matlab源码 594期】
  10. 《Redis开发与运维》学习第一章
  11. 简约却不简单的科学原理闲谈(A Talk:Principles with simplicity but complicacy)
  12. python win7 sp1_64位win7需要升级Windows 7 Service Pack 1(sp1)升级包
  13. 宝塔面板php无法安装,宝塔面板php无法安装怎么办
  14. es进行curl请求时报错:missing authentication token for REST request
  15. 小猪短租网requests库使用
  16. 让你的编程不再乏味:「陪伴姬」来了!
  17. 第三章 区块链率先敲开金融的大门
  18. attribute和property的区别 (转载)
  19. oracle触发器和包,Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)
  20. linux 嵌入式 播放器,基于Linux的嵌入式媒体播放器研究

热门文章

  1. 多城市教育培训机构行业企业站群系统源码-强大的SEO功能-内置三千多个城市
  2. 微擎乐慧云智慧农场源码V1.0.1
  3. 云海轻站V 1.0.17+智慧文章1.0.1插件(公众号同步官方最新版)
  4. 华北计算机研究所分房,请教公安部第一研究所这样分房合理吗??
  5. matlab画gds图,如何将图片转换为.gds文件?(转)
  6. 算法只能应用于计算机吗,把你的原则转换成算法,让计算机和你一起决策
  7. WordPress百度快速提交插件-加速百度爬虫和收录
  8. 5.1.1越狱后必装插件!
  9. vs2008 调试js
  10. FullCalendar 一: 日程安排FullCalendar