Tinker 热修复框架 简单上手教程

导言

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

导入Sample工程

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

Tinker 热修复框架 简单上手教程_第1张图片
图1

编译运行原版apk

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

Tinker 热修复框架 简单上手教程_第2张图片
图2

修改源码 生成新版apk 补丁

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

  I am in the patch apk//新值```
还可以在`MainActivity`中添加一行代码(见图3)

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

![图3](http://upload-images.jianshu.io/upload_images/1983594-592e11c1d5498df7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)你可以自行做出更多的改动(这也是我们需要热修复的原因),然后再Gradle脚本中找到'app:/tinker/tinkerPatchDebug'这条命令(见图4),双击运行,它将生成debug版的patch(补丁)apk文件.![图4](http://upload-images.jianshu.io/upload_images/1983594-f4f3790493b3c08f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)运行完毕后,Tinker会告诉你生成的补丁apk文件所在位置.(见图5,6)![图5](http://upload-images.jianshu.io/upload_images/1983594-835030ab340f3983.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![图6](http://upload-images.jianshu.io/upload_images/1983594-98c8f4a47d7f5999.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)将`patch_signed_7zip.apk`这个文件拷贝到Android设备的`ExternalStorageDirectory()`路径下.文件的路径可以随意设定,只需在`MainActivity`中指明补丁Apk路径即可.(见图7)![图7](http://upload-images.jianshu.io/upload_images/1983594-ebdeda00112e7d04.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#### 安装热修复补丁 观察程序变化
点击APP主界面中的`LOAD PATCH`加载补丁,提示成功后,点击`KILL SELF`结束当前进程,重新启动后,即可发现变化.可以看到,经过上述修改,原有Apk的应用启动后在Log中打印为(见图8):![图8](http://upload-images.jianshu.io/upload_images/1983594-8d98c7ad3a4fa8f1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)而应用补丁后,打印结果为(见图9):![图9](http://upload-images.jianshu.io/upload_images/1983594-15f9ed2b104b5767.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)而这一切就是应用了热修复的结果.万事开头难,有了如此强大的框架,相信广大开发者开发的原生应用将更加强大.

**原文链接 http://www.trojx.me/2016/09/28/tinker-sample-introduction/ 转载请注明出处**

你可能感兴趣的:(Tinker 热修复框架 简单上手教程)