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

导言

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

导入Sample工程

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

图1

编译运行原版apk

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

图2

修改源码 生成新版apk 补丁

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

  <string name="test_resource">I am in the patch apk</string>//新值```
还可以在`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/ 转载请注明出处**
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • Tinker使用 前言 写在前面的话,在上家公司一直在主导组件框架的开发,所以对Android领域组件化,热更新的...
    徐正峰阅读 1,862评论 6 6
  • #微信热修复框架Tinker 接入指南----------> Tinker简介:By腾讯微信团队开发,技术原理简介...
    奈何心善阅读 912评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,274评论 25 707
  • 由于进入冬季北京的雾霾天气增加,致使同学们不能每天锻炼身体,为此班主任带领大家利用课间时间进行平板支撑的练习。 一...
    孩儿王阅读 939评论 0 0
  • 一直以来,我都很喜欢一句话“致良知,不作恶”。觉得自己很善良,不做坏事,自己境界真高啊,和王阳明大师的境界要差不多...
    SallyWong阅读 880评论 1 2