【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )
文章目录
- 一、下载官方示例源码
- 二、处理 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 包 | 热修复 )相关推荐
- 【Android 插件化】DroidPlugin 编译运行 ( DroidPlugin 简介 | 编译 DroidPlugin 官方示例 | 运行 DroidPlugin 官方示例 )
文章目录 一.DroidPlugin 简介 二.DroidPlugin 编译运行 1.编译 DroidPlugin 官方示例 2.运行 DroidPlugin 官方示例 一.DroidPlugin 简 ...
- 【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 )
文章目录 一.VirtualApp 简介 二.配置 VirtualApp 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配置远程仓 ...
- Android 热修复 HotFix 混淆apk生成patch包方案
android 热修复框架目前了解的有qq空间分包方案的HotFix 和Nuwa,还有阿里开源的AndFix和Dexposed. https://github.com/dodola/HotFix ht ...
- 安装cantera并且运行一个官方示例
说明 cantera是一个 开源化学反应动力学分析软件 是chemkin的替代品之一 chemkin最早也是开源的,但是现在被ANSYS收购了,所以商业化了. cantera类似一个库.这个软件没有G ...
- WRF示例运行(官方示例)
[目的]该博客文用于备忘,有兴趣者可以照例实现,有疑问或需求在评论区留言即可: [内容]WRF的单层粗域实现: [参考]WRF实例运行系列(1)_钢筋火龙果的博客-CSDN博客_wrf运行实例 [气象 ...
- 【Android 热修复】Tinker 简介
文章目录 一.Tinker 简介 二. 源码资源 一.Tinker 简介 https://github.com/Tencent/tinker/tree/dev/tinker-android 页面的 t ...
- Quick cocos2dx-Lua(V3.3R1)学习笔记(十)-----搭建安卓打包环境,用官方示例anysdk生成apk运行...
话说我这一篇就写搭建打包安卓环境,是不是有点过早了(其实我主要是怕以后重装系统,忘了怎么搭建了),但是迟早要面对的痛苦,一直延后也不是办法,对吧. 在官方文档中,对于打包安卓apk,已经很清楚了,我写 ...
- 一个android工程生成两个aar,android studio生成aar包并在其他工程引用aar包(示例代码)...
1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...
- android生成aar无效,android studio生成aar包并在其他工程引用aar包的方法
1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...
最新文章
- [20161229]linux下使用oclumon命令(rac)
- svm加载数据集并预测
- python根据财务指标寻找价值股票
- yum mysql 版本低_mysql小版本升级(yum方式)
- vue 子组件给父组件传值
- 【论文】PathQG: 基于事实的神经问题生成
- 网络安全态势感知(NSSA)----引言
- GAN(生成对抗网络)的系统全面介绍(醍醐灌顶)
- Python小白逆袭大神的课程总结
- 店宝宝:10年前的小游戏集体复活
- Substance Painter 画高度贴图
- JVM垃圾收集器详解之Parallel Scavenge
- Groundhog and 2-Power Representation
- 编程术语晦涩_晦涩的编程语言的乐趣
- 不学c语言能学mysql吗_学C语言难不难?以及简说数据库
- 看完数学概念背后的故事,让孩子的数学兴趣激增1000倍!
- ARFoundation之路-环境配置(iOS)之二
- 中国SaaS平台的三种商业模式
- 【小技巧】Linux安装matlab教程
- 2018年已过半,Kubernetes和云原生的巨浪要把云计算带向何处
热门文章
- Struts2 XML配置详解
- 802.1x认证协议的应用
- 九维 Addon for SBO 功能说明及新版软件下载
- 后盾网lavarel视频项目---模型一对多关联简单实例
- hadoop入门学习系列之三mysq+php+mysqladmin安装
- python 字符串的魔法 day11(2)
- xp sp3安装.Net 4.0提示严重错误,0x80070643,解决办法2017版
- (四)学习CSS之position、bottom、left、right和top属性
- VS2010程序打包操作
- 基于子类的动态代理: