Tinker 热修复框架模拟使用

导言

前不久,腾讯推出了”微信小程序”这一概念,对移动原生应用的影响可谓巨大.而几乎就在同时,
腾讯在GitHub上开源了第一个项目Tinker,
这是一个Android平台的应用热修复框架.可以在不重新安装应用的情况下,对应用的代码/库
/资源进行更新.相关信息官方也已经给出详细介绍.
得到这个消息时,笔者也尝试学习它给的Sample,希望能够使用到自己的项目中去.毕竟热修补是
如今原生应用的一大痛点,有了热修补技术,类React Native应用的优势将缩小.
这是一篇Tinker简单上手的说明文字,演示如何运行官方的Sample,仅作互相学习交流

导入Sample工程

将官方给出的Sample工程
在AndroidStudio中打开.首先一点,在app的build.gradle文件中找到tinkerId = getTinkerIdValue()
并将其替换成tinkerId = "tinkerId",其中后面的值可以随意设置.再替换ignoreWarning = false
ignoreWarning = true.(见图1)

编译运行原版apk

按照往常操作一样,编译打包debug apk并安装.此时Tinker会在工程的app/build/bakApk/目录下
保存打包好的apk文件,找到刚才生成的apk文件,复制其完整文件名,在app的build.gradle文件找到
tinkerOldApkPath这一项设置,并将其设置为tinkerOldApkPath = "${bakPath}/<刚才生成的apk文件名>"(见图2)

修改源码 生成新版apk 补丁

MainActivity.java中,我们稍作改动,例如将R.string.test_resource对应的字符串资源的值修改(见图3),


1

2


<!--<string name="test_resource">I am in the base apk</string>-->//原值

<string name="test_resource">I am in the patch apk</string>//新值

还可以在MainActivity中添加一行代码(见图3)


1

Log.e(TAG, "i am on patch onCreate");


你可以自行做出更多的改动(这也是我们需要热修复的原因),然后再Gradle脚本中找到’app:/tinker/tinkerPatchDebug’这条命令(见图4),
双击运行,它将生成debug版的patch(补丁)apk文件.

运行完毕后,打开一下目录.

patch_signed_7zip.apk这个文件拷贝到Android设备的ExternalStorageDirectory()路径下.
文件的路径可以随意设定,只需在MainActivity中指明补丁Apk路径即可.(见图7)

安装热修复补丁 观察程序变化

点击APP主界面中的LOAD PATCH加载补丁,提示成功后,点击KILL SELF结束当前进程,
重新启动后,即可发现变化.可以看到,经过上述修改,原有Apk的应用启动后在Log中打印为(见图8):

而应用补丁后,打印结果为(见图9):

而这一切就是应用了热修复的结果.

时间: 2024-10-03 13:38:42

Tinker 热修复框架模拟使用的相关文章

Android热修复框架AndFix原理解析及使用

一.前言 最近腾讯弄出一个Tinker热修复框架,那么本文先不介绍这个框架,先来介绍一下阿里的一个热修复框架AndFix,这个框架出来已经很长时间了,但是看网上没有太多非常详细的讲解,这里就来做一次分析.正好项目中要使用到.首先这个框架是开源的:https://github.com/alibaba/AndFix 其实在最早的时候我已经分析了阿里的另外一个热修复框架:Dexposed框架,还不了解的同学可以点击这里查看:Dexposed框架原理解析以及使用 当时介绍这个框架的时候发现他的实现原理很

热修复框架Tinker的从0到集成之路

热修复框架Tinker的从0到集成之路 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/54411727 本文出自:[Alex_MaHao的博客] 项目中的源码已经共享到github,有需要者请移步[Alex_MaHao的github] 2015年10月,QQ空间提出了热修复方案,一时间热修复风靡Android界,阿里的AndFix,360的插件形式,开源的NUWA等,都分别提出了自己的热修复实现方案,2016年微信推出了自己的热修复框

Android中热修复框架Robust原理解析+并将框架代码从&quot;闭源&quot;变成&quot;开源&quot;(下篇)

一.回顾框架原理 本篇继续来看热修复框架Robust原理,在之前的一篇文章中已经详细讲解了:Robust框架原理,因为这个框架不是开源的,所以通过官方给出的原理介绍,咋们自己模拟了案例和框架逻辑的简单实践.最后在通过反编译美团app进行验证咋们的逻辑实现是否大致不差.最终确定实践的逻辑大同小异.但是在上一篇文章末尾多次强调了,这个框架吸引我研究的不是他热修复技术,而是他有一个技术点,就是如何在编译期给每个类每个方法都加上修复功能代码,对于上层开发代码是透明的.因为从之前案例可以看到,如果方法没有

阿里SopHix热修复框架

2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner热更新)和阿里最新出品Sophix.它们在原理各有不同,适用场景各异.不过从技术上来说多数热修复框架是基于ClassLoader加载机制.下面是常见热修复框架的比较. 开通热修复服务 读者可以打开Sophix热修复的官网:Sophix官网1.注册阿里云账号,选择移动热修复服务 ,选择之后需要开通此功

介绍自己的一个Android插桩热修复框架项目QuickPatch

QuickPatch项目地址:https://gitee.com/egg90/QuickPatch 和 https://github.com/eggfly/QuickPatch 同步更新 类似于美团的Robust插桩热修复,但是代码可读性比较强,还在继续完善,todo list在项目README里 特性:基于函数插桩,兼容性好(Android版本升级不需要做修改),支持热更新无需重启app,参考了美团的Robust插桩热修复框架,精简了很多实现细节,代码可读性高 一句话原理 简单地讲,就是通过编

十分钟教会你使用安卓热修复框架AndFix

腾讯最近开发出一个Tinker,阿里也有一个Dexposed框架,当然还有一个就是今天的主角热修复框架AndFix.接下来,我会从它的概念.原理.使用方法等为你详细介绍. 1.什么是AndFix?AndFix是阿里巴巴出的一个专门针对Android的热修复框架,那什么是热修复呢?就是不需要重新安装APK而达到修复bugs的目的.看看阿里巴巴官方对AndFix的描述:英文好的可以看官网说明文档(有翻译不妥欢迎指出)1.AndFix是一个Android库,它是在线解决bugs,而不是重新安装app的

阿里 AndFix 热修复框架简介

阿里AndFix热修复框架简介 热修复原理: Android的类加载机制 Android的类加载器分为两种,PathClassLoader和DexClassLoader,两者都继承自BaseDexClassLoader PathClassLoader代码位于libcore\dalvik\src\main\Java\dalvik\system\PathClassLoader.java DexClassLoader代码位于libcore\dalvik\src\main\java\dalvik\sys

一款超级简单易用的Android热修复框架 WandFix 使用详解

WandFix是一个基于java ClassLoader实现的热修复框架. 效果展示: 优点: 类似于黄油刀可以直接对成员变量添加@InjectObject("com.example.motordex.AppParsenterImpl2")注解,来绑定热修复包中的实现类. 无需关闭应用即可使修复包生效. 与mvp模式搭配使用效果最佳. 可以自己定义需要热修复的类. 可以自己配置dex加密算法,保护dex文件的安全. 可以通过注解单独设置某个对象是否禁用双亲委托. 使用 使用方法: gi

探索安卓热修复框架AndFix的奥秘

虽然阿里的AndFix框架已经出来很长时间了,但是还不了解它的同学依然挺多,接下来就跟着我一起来到AndFix的世界里一起看看,如何达到不用重新安装app就可以修复bug. 1.什么是AndFix?AndFix是阿里巴巴出的一个专门针对Android的热修复框架,那什么是热修复呢?就是不需要重新安装APK而达到修复bugs的目的.看看阿里巴巴官方对AndFix的描述:英文好的可以看官网说明文档(有翻译不妥欢迎指出)1.AndFix是一个Android库,它是在线解决bugs,而不是重新安装app