专栏名称: 郭霖
Android技术分享平台,每天都有优质技术文章推送。你还可以向公众号投稿,将自己总结的技术心得分享给大家。
目录
相关文章推荐
开发者全社区  ·  中国十大古都城市 ·  20 小时前  
开发者全社区  ·  商·玉高冠鸟柄形器 ·  昨天  
开发者全社区  ·  太奇葩了!离职后被前公司调查去向...... ·  昨天  
开发者全社区  ·  防御式编程:程序员降职后启动 ... ·  昨天  
开发者全社区  ·  woc!日本情侣干了票大的 ·  2 天前  
51好读  ›  专栏  ›  郭霖

Android热修复——Tinker

郭霖  · 公众号  · android  · 2017-06-29 08:00

正文

今日科技快讯

前段时间国家新闻出版广电总局发布通知,要求新浪微博按照有关规定,对视听节目服务进行全面整改。昨日,新浪微博官方发布公告:使用微博账号传播电影、电视剧,应当具有《电影片公映许可证》或《电视剧发行许可证》。将关闭超过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 添加:

参数说明:

  • bakPath: 基包路径

  • baseInfo: 基包文件夹名(打补丁包的时候,需要修改)

  • appKey: 进入官网注册一个账号,新增APP,得到对应的appKey。

使用

创建 FetchPatchHandler 用于检测是否更新(刚打开时会检测一次):

创建 MyApplication 初始化(reflectApplication = true 时)

注意: 初始化的代码建议紧跟 super.onCreate(),并且所有进程都需要初始化,已达到所有进程都可以被 patch 的目的

如果你确定只想在主进程中初始化 tinkerPatch,那也请至少在 :patch 进程中初始化,否则会有严重的 crash 问题

打生产包







请到「今天看啥」查看全文