文章目录

  • 一、下载官方示例源码
  • 二、处理 TINKER_ID 问题
  • 三、编译 debug 包
  • 四、安装 APK 并运行
  • 五、修改 Gradle 构建脚本中的文件名称
  • 六、修改程序逻辑代码
  • 七、生成 patch 包
  • 八、热修复
  • 九、 源码资源

一、下载官方示例源码


Tinker 官方代码示例 : https://github.com/Tencent/tinker/tree/dev/tinker-sample-android

二、处理 TINKER_ID 问题


下载该 tinker-sample-android 代码 , 先处理 TINKER_ID 问题 , 参考 【错误记录】Tinker 热修复示例运行报错 ( Execution failed for task ‘:app:tinkerProcessD‘ . tinkerId is not set!!! )

解决 " tinkerId is not set!!! " 问题 , 有两种处理方案 :

方案一 :

在 gradle.properties 配置中 , 设置 TINKER_ID 参数 ,

TINKER_ID=1.0
TINKER_ENABLE=true

方案二 : 修改 https://github.com/Tencent/tinker/blob/dev/tinker-sample-android/app/build.gradle 构建脚本代码 , 使 gitSha 方法返回非空字符串 ;

def gitSha() {try {String gitRev = "1.0"if (gitRev == null) {throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")}return gitRev} catch (Exception e) {throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")}
}

三、编译 debug 包


运行 Gradle 面板中的 " tinker-sample-android / app / Tasks / other / assembleDebug " 任务 , 双击即可 ;

运行 assembleDebug 任务完毕后 , 在 " tinker-master\tinker-sample-android\app\build\bakApk " 目录下 , 会生成

  • app-debug-0423-21-38-18.apk
  • app-debug-0423-21-38-18-R.txt

两个文件 ;

还有一种方法 , 在 Terminal 中断面板中 , 执行 gradlew assembleDebug 命令 , 也可以运行 assembleDebug gradle 任务 ;

四、安装 APK 并运行


将上述编译好的 app-debug-0423-21-38-18.apk 安装文件 , 部署到应用中 , 运行应用 :

点击 " SHOW INFO " 按钮 , 即可查看运行效果 ;

五、修改 Gradle 构建脚本中的文件名称


根据上一步生成的两个文件

  • app-debug-0423-21-38-18.apk
  • app-debug-0423-21-38-18-R.txt

修改 app 下的 build.gradle 构建脚本 " tinker-sample-android\app\ build.gradle" , 主要使用 " 0423-21-38-18 " 这个时间参数 ;

在 Gradle 构建脚本中 , 修改如下四个变量中的时间相关值 , 将时间参数修改为 " 0423-21-38-18 " ,

ext {//for some reason, you may want to ignore tinkerBuild, such as instant run debug build?tinkerEnabled = true//for normal build//old apk file to build patch apktinkerOldApkPath = "${bakPath}/app-debug-0424-15-02-56.apk"//proguard mapping file to build patch apktinkerApplyMappingPath = "${bakPath}/app-debug-1018-17-32-47-mapping.txt"//resource R.txt to build patch apk, must input if there is resource changedtinkerApplyResourcePath = "${bakPath}/app-debug-0424-15-02-56-R.txt"//only use for build all flavor, if not, just ignore this fieldtinkerBuildFlavorDirectory = "${bakPath}/app-1018-17-32-47"
}

修改后的效果 :

ext {//for some reason, you may want to ignore tinkerBuild, such as instant run debug build?tinkerEnabled = true//for normal build//old apk file to build patch apktinkerOldApkPath = "${bakPath}/app-debug-0423-21-38-18.apk"//proguard mapping file to build patch apktinkerApplyMappingPath = "${bakPath}/app-debug-0423-21-38-18-mapping.txt"//resource R.txt to build patch apk, must input if there is resource changedtinkerApplyResourcePath = "${bakPath}/app-debug-0423-21-38-18-R.txt"//only use for build all flavor, if not, just ignore this fieldtinkerBuildFlavorDirectory = "${bakPath}/app-0423-21-38-18"
}

六、修改程序逻辑代码


修改 MainActivity 程序 , 放开该行注释代码 ,

七、生成 patch 包


在 Gradle 面板中 , 运行 " tinker-sample-android / app / Tasks / tinker/ tinkerPatchDebug " 任务 , 双击即可 ;

运行完成后 , 在 " tinker-sample-android\app\build\outputs\apk\tinkerPatch\debug " 目录下生成了 patch 包 ;

八、热修复


将 app-debug-patch_signed_7zip.apk 文件 , 更名为 patch_signed_7zip.apk , 拷贝到手机 SD 卡根目录 ;

点击 " LOAD PATCH " 按钮 , 会有 Toast 提示成功 " patch success, please restart process " , 热修复成功 ;

九、 源码资源


参考资料 :

  • 官方主页 : https://github.com/Tencent/tinker

  • Tinker 官方 Wiki 地址 : https://github.com/Tencent/tinker/wiki

  • Tinker 接入指南 : https://github.com/Tencent/tinker/wiki/Tinker-接入指南

  • Tinker 官方示例 : https://github.com/Tencent/tinker/tree/master/tinker-sample-android

源码资源 :

  • GitHub 地址 : https://github.com/Tencent/tinker/tree/dev/tinker-sample-android
  • CSDN 源码快照 : https://download.csdn.net/download/han1202012/17417498
    ( Tiinker 完整项目 )

【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )相关推荐

  1. 【Android 插件化】DroidPlugin 编译运行 ( DroidPlugin 简介 | 编译 DroidPlugin 官方示例 | 运行 DroidPlugin 官方示例 )

    文章目录 一.DroidPlugin 简介 二.DroidPlugin 编译运行 1.编译 DroidPlugin 官方示例 2.运行 DroidPlugin 官方示例 一.DroidPlugin 简 ...

  2. 【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 )

    文章目录 一.VirtualApp 简介 二.配置 VirtualApp 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配置远程仓 ...

  3. Android 热修复 HotFix 混淆apk生成patch包方案

    android 热修复框架目前了解的有qq空间分包方案的HotFix 和Nuwa,还有阿里开源的AndFix和Dexposed. https://github.com/dodola/HotFix ht ...

  4. 安装cantera并且运行一个官方示例

    说明 cantera是一个 开源化学反应动力学分析软件 是chemkin的替代品之一 chemkin最早也是开源的,但是现在被ANSYS收购了,所以商业化了. cantera类似一个库.这个软件没有G ...

  5. WRF示例运行(官方示例)

    [目的]该博客文用于备忘,有兴趣者可以照例实现,有疑问或需求在评论区留言即可: [内容]WRF的单层粗域实现: [参考]WRF实例运行系列(1)_钢筋火龙果的博客-CSDN博客_wrf运行实例 [气象 ...

  6. 【Android 热修复】Tinker 简介

    文章目录 一.Tinker 简介 二. 源码资源 一.Tinker 简介 https://github.com/Tencent/tinker/tree/dev/tinker-android 页面的 t ...

  7. Quick cocos2dx-Lua(V3.3R1)学习笔记(十)-----搭建安卓打包环境,用官方示例anysdk生成apk运行...

    话说我这一篇就写搭建打包安卓环境,是不是有点过早了(其实我主要是怕以后重装系统,忘了怎么搭建了),但是迟早要面对的痛苦,一直延后也不是办法,对吧. 在官方文档中,对于打包安卓apk,已经很清楚了,我写 ...

  8. 一个android工程生成两个aar,android studio生成aar包并在其他工程引用aar包(示例代码)...

    1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...

  9. android生成aar无效,android studio生成aar包并在其他工程引用aar包的方法

    1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...

最新文章

  1. [20161229]linux下使用oclumon命令(rac)
  2. svm加载数据集并预测
  3. python根据财务指标寻找价值股票
  4. yum mysql 版本低_mysql小版本升级(yum方式)
  5. vue 子组件给父组件传值
  6. 【论文】PathQG: 基于事实的神经问题生成
  7. 网络安全态势感知(NSSA)----引言
  8. GAN(生成对抗网络)的系统全面介绍(醍醐灌顶)
  9. Python小白逆袭大神的课程总结
  10. 店宝宝:10年前的小游戏集体复活
  11. Substance Painter 画高度贴图
  12. JVM垃圾收集器详解之Parallel Scavenge
  13. Groundhog and 2-Power Representation
  14. 编程术语晦涩_晦涩的编程语言的乐趣
  15. 不学c语言能学mysql吗_学C语言难不难?以及简说数据库
  16. 看完数学概念背后的故事,让孩子的数学兴趣激增1000倍!
  17. ARFoundation之路-环境配置(iOS)之二
  18. 中国SaaS平台的三种商业模式
  19. 【小技巧】Linux安装matlab教程
  20. 2018年已过半,Kubernetes和云原生的巨浪要把云计算带向何处

热门文章

  1. Struts2 XML配置详解
  2. 802.1x认证协议的应用
  3. 九维 Addon for SBO 功能说明及新版软件下载
  4. 后盾网lavarel视频项目---模型一对多关联简单实例
  5. hadoop入门学习系列之三mysq+php+mysqladmin安装
  6. python 字符串的魔法 day11(2)
  7. xp sp3安装.Net 4.0提示严重错误,0x80070643,解决办法2017版
  8. (四)学习CSS之position、bottom、left、right和top属性
  9. VS2010程序打包操作
  10. 基于子类的动态代理: