热修复之Tinker 开源库Demo测试
来源:互联网 发布:餐饮软件管理系统 编辑:程序博客网 时间:2024/06/05 05:02
本文是通过借鉴网上一些前辈的经验加上本人遇到一些问题的总结编写,如有错误还望不吝指正。
Tinker开源框架 https://github.com/Tencent/tinker
首先找到我们需要下载的demo工程——tinker-sample-android
接下来使用Android studio 导入工程
如果报以上错误,请按如下方法进行解决:
1、打开工程根目录下的build.gradle,看到如下的情况
将
classpath "com.tencent.tinker:tinker-patch-gradle-plugin:${TINKER_VERSION}"
改成
classpath "com.tencent.tinker:tinker-patch-gradle-plugin:1.7.1"
接下来是:
2、打开app/build.gradle,如下:
将
compile("com.tencent.tinker:tinker-android-lib:${TINKER_VERSION}") { changing = true }compile("com.tencent.tinker:tinker-android-anno:${TINKER_VERSION}") { changing = true }
改成如下:
//可选,用于生成application类compile('com.tencent.tinker:tinker-android-anno:1.7.1')//tinker的核心库compile('com.tencent.tinker:tinker-android-lib:1.7.1')
接下里我们同步一下gradle
还是报错了是吧,是不是下面这个错误呢?
我们大致可以看出好像是tinkerId 没有设置的问题,那么我们现在就给他设置一下吧!
下面方法时参考点击打开链接
在app的build.gradle文件中找到tinkerId = getTinkerIdValue()
并将其替换成tinkerId = "tinkerId"
,其中后面的值可以随意设置.
再替换ignoreWarning = false
为ignoreWarning = true
接下来我们在同步一下gradle
ok,终于不报错了
好的,接下来我们开始正式的使用Tinker,看看它到底有哪些修复功能。
首先,我们运行工程,运行的成功,在工程文件的app/build/bakApk/下将会生成一个debug签名的apk文件,这个apk就算是我们热修复之前的带bug的“old apk”,我们复制他的全名例如:
app-debug-1027-14-50-44.apk 然后继续回到我们app/build.gradle 搜索找到tinkerOldApkPath位置,更改后面的path为之前apk全称。
接下来,我们需要对有bug的应用进行修改:
我们修改java代码、资源文件等等,至于能不能修复请自行测试,这里只做方法介绍。
比如我们作如下修改:
打开MainActivity.class 我们加一句Log
更改String资源文件:
我们在试试更改布局文件看看效果如何:
接下里就是生成补丁咯
调用tinkerPatchDebug生成补丁文件
,其实就是在Android Studio中的Teriminnal中执行,需要注意的是调用该命令前需要加上 ./gradlew
前缀,完整的命令是:
./gradlew tinkerPatchDebug
如果你和我一样用上面这段是出现:不是内部命令的提示,那么请只输入gradlew tinkerPatchDebug
回车执行(不着急需要执行一小会儿时间)
直到我们看到如下:
没错 生成成功了,那么你可能就要问了文件呢?
不着急这就告诉你在哪里,我们在命令行往上翻看看最后生成的文件到底在哪里
原来在这里,赶紧去看看有没有
这个就是我们的差异文件,接下来就是如何打补丁了。
我们将生成的文件patch_signed_7.zip 拷贝到手机内存中
肯定有人就要说,应该可以改位置吧,没错,我们可以在MainActivity.class中,指定读取补丁文件的路径和名字
放好补丁到指定位置后,我们运行上次跑的“old apk”
好吧,我已经迫不及待要打补丁了 LOAD PATCH单击它加载补丁然后看到成功字样。
据官方介绍由于
There are some issues which Tinker can't dynamic update.
- Can't update AndroidManifest.xml, such as add Android Component.
- Do not support some Samsung models with os version android-21.
- Due to Google Play Developer Distribution Agreement, we can't dynamic update our apk.
所以我们不是即使生效,所以我们需要单击KILL SELE 杀掉程序
接下来,重新打开程序
测试结果如下:
对于补丁文件,可以加载(Load)也可以清除(Clean)
对于修复范围,包括java代码,资源文件(字符串文件、xml文件、drawable文件等)还有一些没有测
给张网上传的图吧
好咯,Tinker就讲到这里啦,至于原理什么的网上有很多,希望本篇博客对你有用,谢谢支持!
0 0
- 热修复之Tinker 开源库Demo测试
- Tinker 热修复 demo 使用指南
- Android热修复之Tinker
- Android热修复之Tinker使用初探
- Android热修复之Tinker接入流程
- Android 热修复(一) 之 Tinker
- Tinker热修复初探
- Android热修复 Tinker
- tinker热修复 简介
- Tinker热修复加固
- Tinker热修复示例
- Android热修复Tinker
- android 热修复 Tinker
- 热修复tinker
- Android Tinker热修复
- tinker热修复问题
- 热修复Tinker
- 初识 Tinker 热修复
- 3334 数据结构实验之栈七:出栈序列判定
- 自定义控件辅助神器ViewDragHelper
- java中的序列化(Serializable)和反序列化
- Poser 11基本使用
- Service Oriented 的 iOS 应用架构
- 热修复之Tinker 开源库Demo测试
- Android 笔记 通知/notifications
- 用poi在excel里画日历
- Backbone TodoMVC 源码分析
- Android 之任何Fragment间的广播消息接收
- 调试窗口颜色
- Linux 从虚拟地址到物理地址
- Dubbo学习参考
- Java 反射机制