【Android进阶】1小时学会热更新--Tinker

2017-12-15  本文已影响59人  KingJA
Tinker

玩Dota的应该知道

热更新

热补丁技术也可以理解为一个动态修改代码与资源的通道,它适合于修改量较少的情况。

本文你将获悉

主流热更新框架的简单比较

image.png

Gitbut表现 (2017-12-08 15:00)

image.png
image.png
image.png

Tinker能做什么

Tinker不能做什么

利用Tinker Platform实现热更新

第一步:配置gradle

工程目录下添加插件


image.png
buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.2.1"
    }
}

app目录下gradle配置依赖compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.2.1"),并添加Tinker配置gradle【tinkerpatch.gradle

image.png

第二步:API 操作(具体看Demo)

public class App extends Application {
    ApplicationLike tinkerAppLike;

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
    }

    @Override
    public void onCreate() {
        super.onCreate();
        if (BuildConfig.TINKER_ENABLE){
            tinkerAppLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();
            TinkerPatch.init(tinkerAppLike)
                    //是否自动反射Library路径,无须手动加载补丁中的So文件
                    //注意,调用在反射接口之后才能生效,你也可以使用Tinker的方式加载Library
                    .reflectPatchLibrary()
                    //设置收到后台回退要求时,锁屏清除补丁,默认是等主进程重启时自动清除
                    .setPatchRollbackOnScreenOff(true)
                    //设置补丁合成成功后,锁屏重启程序,默认是等应用自然重启
                    .setPatchRestartOnSrceenOff(true);
        }
    }
}

在合适的时候获取补丁

TinkerPatch.with().fetchPatchUpdate(true);

在客户端获取补丁后,Tinker会根据配置选择在锁屏的时候或者重启的时候自动完成补丁修补。

第三步:利用插件生成增量APK

image.png

第四不:上传到Tinker Platform平台

发布补丁
实时监控

总结

一个框架如果没有良好的维护,那么最开始就不要使用或者早点弃用,在对比了多个主流热更新框架的github上的star数,未解决的issues数后,你就会知道,其实Tinker现在【根本】【没有】【对手】

一个好的框架应该也是一个容易使用的框架,我们的目的是拿来能直接干活,如果使用过于复杂,过多的时间用在了研究原理上就得不偿失了,毕竟热修复不是简单的东西。比起其它热修复框架,Tinker最大优势是多了平台支持,可支持补丁下发及管理,实时监控补丁安装动态,让热修复变得更简单,更接地气,玩家不用自己搭建平台下发更新补丁,绝对是小公司和个人项目的福音。而且Tinker已经平铺在腾讯系产品中,几亿设备上运行,和大厂共进退,不用担心没人维护,有问题无法解决。如果你暂时没有找到合适的,可以一试。

就像阿里技术的万壑说的,专业的事情交给专业的人去做,开发者应该把更多的经历放到自己的核心业务之中。

TinkerDemo

image.png
上一篇 下一篇

猜你喜欢

热点阅读