四、Tinker 封装与拓展
1、拷贝文件
将Demo 中提供的tinker 包下的所有文件及文件夹都拷贝到自己项目中。
![](https://img.kancloud.cn/1e/d5/1ed5b92193fed941cbfff56ee16919d5_424x447.jpg)
这些文件其实就是Tinker 官方Demo 中的文件完全复制过来的,只是多加了一些注释。
简单说明下,这几个文件的作用:
1.SampleUncaughtExceptionHandler:Tinker 的全局异常捕获器。
2.MyLogImp:Tinker 的日志输出实现类。
3.SampleLoadReporter:加载补丁时的一些回调。
4.SamplePatchListener:过滤Tinker 收到的补丁包的修复、升级请求。
5.SamplePatchReporter:修复或者升级补丁时的一些回调。
6.SampleTinkerReport:修复结果(成功、冲突、失败等)
7.SampleResultService::patch 补丁合成进程将合成结果返回给主进程的类。
8.TinkerManager:Tinker 管理器(安装、初始化Tinker)。
9.TinkerUtils:拓展补丁条件判定、锁屏或后台时应用重启功能的工具类。
这些只是对Tinker 功能的拓展和封装罢了,都是可选的,但这些文件对项目的功能完善会有所帮助,建议加入到自己的项目中。如果你仅仅只是为了修复bug,而不做过多的工作(如:上传打补丁信息到服务器等),则无须理会这些文件的作用,当然你也可以自己封装。
对于这些自定义类及错误码的详细说明,请参考:「Tinker 官方Wiki:可选的自定义类」。
2、清单文件中添加服务
前面添加的文件中,有一个SampleResultService 文件,是四大组件之一,所以必须在清单文件中声明。
```
<service
android:name="com.lqr.tinker.service.SampleResultService"
android:exported="false"/>
```
- 第一章 热修复设计
- 第一节、AOT/JIT & dexopt 与dex2oat
- 一、AOT/JIT
- 二、dexopt 与dex2oat
- 第二节、热修复设计之CLASS_ISPREVERIFIED 问题
- 一、前言
- 二、建立测试Demo
- 三、制作补丁
- 四、加载补丁
- 五、CLASS_ISPREVERIFIED
- 第三节、热修复设计之热修复原理
- 一、Android 热修复
- 二、Android 虚拟机和编译加载顺序
- 三、混合模式的理解
- 四、源码类到机器执行的文件过程
- 五、补丁包
- 六、类补丁生效原理
- 七、Davlik 虚拟机的限制
- 八、Davlik Class resolved by unexpected DEX: 限制和处理方式
- 九、类加载器的双亲委派加载机制
- 第四节、Tinker 的集成与使用(自动补丁包生成)
- 一、简述
- 二、Tinker 组件依赖
- 三、Tinker 的配置及任务
- 四、Tinker 封装与拓展
- 五、编写Application 的代理类
- 六、常用API
- 七、测试
- 八、细节
- 第二章 插件化设计
- 第一节、Class 文件与Dex 文件的结构解读
- 一、Class 文件
- 二、Dex 文件
- 三、Class 文件和Dex 文件对比
- 第二节、Android 资源加载机制详解
- 第三节、四大组件调用原理
- 第四节、so 文件加载机制
- 第五节、Android 系统服务实现原理
- 第三章 组件化框架设计
- 第一节、阿里巴巴开源路由框——ARouter 原理分析
- 第二节、APT 编译时期自动生成代码&动态类加载
- 第三节、Java SPI 机制
- 第四节、AOP&IOC
- 第五节、手写组件化架构
- 第四章 图片加载框架
- 第一节 图片加载框架选型
- 第二节 Glide 原理分析
- 第三节 手写图片加载框架实战
- 第五章 网络访问框架设计
- 第一节 网络通信必备基础
- 第二节 OkHttp 源码解读
- 第三节 Retrofit2 源码解析
- 第六章 RXJava响应式编程框架设计
- 第一节 RXJava之链式调用
- 第二节 RXJava之扩展的观察者模式
- 第三节 RXJava之事件变换设计
- 第四节 Scheduler 线程控制
- 第七章 IOC架构设计
- 第一节 依赖注入与控制反转
- 第二节 ButterKnife 原理上篇、中篇、下篇
- 第三节 IOC架构设计之Dagger2架构设计
- 第八章 Android架构组件 JetPack
- 第一节 LiveData的工作原理
- 第二节 Navigation 如何解决tabLayout 问题
- 第三节 ViewModel 如何感知View 生命周期及内核原理
- 第四节 Room 架构方式方法
- 第五节 dataBinding 为什么能够支持MVVM
- 第六节 WorkManager 内核揭秘
- 第七节 Lifecycles 生命周期