关于Tinker的使用网上很多教程,由于最近项目需要实现热修复,所以就学习了下微信的Tinker 使用,在这记录下方便以后查看。以下是关于Tinker的优缺点。
一、Tinker SDK的接入
添加 gradle 插件依赖,在项目的builder.gradle里面添加TinkerPatch 插件
[代码]xml代码:
repositories {
mavenLocal() google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' //无需再单独引用tinker的其他库 classpath ("com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:${TINKERPATCH_VERSION}") { changing = true } }
第二步 集成 TinkerPatch SDK
在app的gradle文件app/build.gradle中
dependencies {
// 多dex 打包的类库compile 'com.android.support:multidex:1.0.1'//无需引入tinker的任何库,使用tinkerpatch sdk即可implementation("com.tinkerpatch.sdk:tinkerpatch-android-sdk:${TINKERPATCH_VERSION}") { changing = true }
}
三、下载官方demo,将项目中的tinkerpatch.gradle文件直接放入自己的项目中,在app的gradle文件app/build.gradle中 添加
apply from: 'tinkerpatch.gradle' //引用tinkerpatch.gradle文件
修改tinkerpatch.gradle
四、在Application 中初始化TinkerPatch
/** * 我们需要确保至少对主进程跟patch进程初始化 TinkerPatch */ private void initTinkerPatch() { // 我们可以从这里获得Tinker加载过程的信息 if (BuildConfig.TINKER_ENABLE) { tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike(); // 初始化TinkerPatch SDK TinkerPatch.init( tinkerApplicationLike// new TinkerPatch.Builder(tinkerApplicationLike)// .requestLoader(new OkHttp3Loader())// .build() ) .reflectPatchLibrary() .setPatchRollbackOnScreenOff(true) .setPatchRestartOnSrceenOff(true) .setFetchPatchIntervalByHours(3) ; // 获取当前的补丁版本 Log.d(TAG, "Current patch version is " + TinkerPatch.with().getPatchVersion()); // fetchPatchUpdateAndPollWithInterval 与 fetchPatchUpdate(false) // 不同的是,会通过handler的方式去轮询 TinkerPatch.with().fetchPatchUpdateAndPollWithInterval(); } }
五、打包全量包(就是需要发布的有bug 的apk)和补丁
六、进入官网发布 补丁,秩序将path-signed-7zip.apk发布即可,详细内容请参考官方文档
提示 Tinker 并不支持即时更新,发布补丁后需重启应用才能实现更新。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦