转载请标明出处:http://blog.csdn.net/listeners_Gao/article/details/60782235

前言

Tencent 开源 “Tinker–微信Android热补丁方案” 已经很长时间了,无奈自己太懒了,一直没有时间去尝试一下。最近公司准备开新项目,我准备接入这个热修复框架,这样能够及时去处理App中在使用过程产生的Bug问题,而不必为了处理一个Bug问题去更新一个新的版本。正式使用之前,自己先搞了一个Demo去尝试。在使用的过程中也遇到的了很多问题,故记录下来。废话不多说,开干。

接入指南

关于 Tinker 的介绍,以及与其它热修复框架的比较,这里就不多说了,不熟悉的可以查看Github上Tinker的Wiki,官方有详细解释。下面是网址:https://github.com/Tencent/tinker/wiki,但是我感觉官方的接入指南写的还不是很详细,也许是我比较菜的原因吧。

gradle接入

gradle是推荐的接入方式,在gradle插件tinker-patch-gradle-plugin中我们帮你完成proguard、multiDex以及Manifest处理等工作。

添加依赖

首先在项目的build.gradle中,添加tinker-patch-gradle-plugin的依赖:

然后在app的build.gradle中,添加Tinker的库依赖:

**注意:**TINKER_VERSION代表的是版本号,需要我们在gradle.properties文件中添加。当我们项目中多次使用这个TINKER_VERSION版本号时,如果需要修改此版本号,那么只需要修改gradle.properties的配置即可,简单方便。

app/build.gradle文件修改

完成上面两步后,个人建议,将tinker中tinker-sample-android的app/build.gradle拷贝到自己项目中的app/build.geadle中。因为配置热修复还是很麻烦的,需要你对gradle的知识有一定的了解,大牛可以随意。即使是拷贝示例中的的内容,也是需要修改的。

  1. 修改tinkerId的值–否则会报错:tinkerId is not set!!!(建议tinkerId的值与versionName一致即可)

  2. 将忽略警告设置为true:

配置签名文件:

API引入

接下来就是处理Application文件,tinker建议编写一个ApplicationLike的子类,你可以当成Application去使用,注意顶部的@DefaultLifeCycle(),其Application的属性,会在编译期生成一个SimpleTinkerInApplication类:

接着在清单文件中配置编译器生成的Application,以及添加对sd卡的读写权限,因为在加载补丁包时,需要读取补丁包。如果你是6.x以上的系统,自己添加上授权代码,或者手动在设置页面打开SDCard读写权限。

然后我们在Activity中添加一个Load patch的Button,添加一个点击显示Toast的按钮。点击Load Patch按钮时,加载补丁包,成功补丁包后会修改动态修改Toast显示的内容。(注意:这里只是测试,正式项目中建议参考官方示例,在Service中加载补丁包)

接着我们直接将项目运行到手机上,此时会生成Apk文件,找到如下图所示文件:

patch生成

修改app/build.gradle文件,如上图所示。接着修改Toast要显示的内容。使用tinkerPatchDebug生成差异包,也就是补丁包。可以使用命令,也可以使用android studio的工具,如图:

下面就是生成差异包的位置,将该差异包导入sd中,(该差异包名字可以自定义,只要对应即可)。

点击Load Patch按钮,停留片刻,程序会自动退出。重新进入程序,点击显示Toast的按钮,就会发现Toast显示的内容已改变。效果图:

以上就是使用Tinker热修复框架的过程,源码地址:https://github.com/ListenerGao/TinkerDemo

更多相关文章

  1. [转载]Android实现更换皮肤功能
  2. APK反编译软件以及方法
  3. Android数据库的操作之存储和获取
  4. Android逆向之旅---解析编译之后的AndroidManifest文件格式
  5. 网络配置 - 定制APN
  6. 收藏老罗的----------Android应用程序组件Content Provider简要
  7. Android(安卓)8.0 SystemUI下拉状态栏快捷开关
  8. 自定义属性时TypedArray的使用方法
  9. Android学习路线(八)为Action bar添加action按钮

随机推荐

  1. android 自定义view 不执行 ondraw的解决
  2. Android(安卓)8. Android(安卓)方法过时
  3. 调试Android第三方应用所需要的工具
  4. AndClear - Android(安卓)Clean-up Manag
  5. android防止控件多次点击
  6. android 重写TextView 实现文字整齐排版
  7. android保存用户名密码
  8. android 全屏去掉底部虚拟导航栏
  9. android studio 56 下载网络歌曲 代码
  10. Android(安卓)Fragment