前段时间国家新闻出版广电总局发布通知,要求新浪微博按照有关规定,对视听节目服务进行全面整改。昨日,新浪微博官方发布公告:使用微博账号传播电影、电视剧,应当具有《电影片公映许可证》或《电视剧发行许可证》。将关闭超过15分钟以上的长视频上传功能。
本篇是
带心情去旅行
的第四篇投稿, 介绍了如何使用热修复框架Tinker,希望能够帮助到大家。
带心情去旅行
的博客地址:
http://www.jianshu.com/u/769d3d3a9d4b
不知你是否遇到这样的情况?千辛万苦上开发了一个版本,好不容易上线了,突然发现了一个严重bug需要进行紧急修复,怎么办?难道又要重新打包App、测试,发布新个版本?就为了修改一两行的代码?
莫慌,这种问题其实可以分分钟解决。如果你学会了这项黑科技——热修复。在用户使用App的时候,不知不觉,这个Bug就被修复了。
热修复:
热修复(也称热补丁、热修复补丁,英语:hotfix)是一种包含信息的独立的累积更新包,通常表现为一个或多个文件。这被用来解决软件产品的问题(例如一个程序错误)。——维基百科
本文介绍了Tinker的接入方式,更加详细的内容可以查阅
官方文档:
http://tinkerpatch.com/Docs/SDK
Tinker 是微信官方的Android热补丁解决方案,它支持动态下发代码、so库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用 Tinker 来更新你的插件。Tinker 所支持的功能如下:
Tinker 热补丁方案·不仅支持类、So以及资源的替换,它还是 2.X-7.X 的全平台支持。
额,我是说进入正题
在项目的 build.gradle 中:
然后在 app 的 gradle 文件 app/build.gradle 中:
在app目录下,创建 tinkerpatch.gradle(可以去后面的链接下载源码,把这个文件拷进去)
将 TinkerPatch 相关的配置都放于 tinkerpatch.gradle 中,然后在 app 的 gradle 文件 app/build.gradle 中还添加:
apply from: 'tinkerpatch.gradle'
完整的 app/buidl.gradle:
打开之前创建的 tinkerpatch.gradle 添加:
参数说明:
创建 FetchPatchHandler 用于检测是否更新(刚打开时会检测一次):
创建 MyApplication 初始化(reflectApplication =
true
时)
注意:
初始化的代码建议紧跟 super.onCreate(),并且所有进程都需要初始化,已达到所有进程都可以被 patch 的目的
如果你确定只想在主进程中初始化 tinkerPatch,那也请至少在 :patch 进程中初始化,否则会有严重的 crash 问题