Android热修复(Hot Fix)案例全剖析(一)

    说到热修复技术,我们不得不先谈一下什么是冷修复。

冷修复

    当我们发现上线的应用APK存在Bug,我们通过发布新的应用APK,去替换旧的应用APK,以达到解决Bug的目的,但是这样做存在很大的缺点,需要用户二次下载APK,浪费用户流量,费时、费力、用户体验差。

热修复

    当我们发现上线的应用APK存在Bug,我们在用户使用过程中就把Bug修复了,优点是其过程中用户不需要把应用程序停止、卸载、重新安装、重启,大大改善了用户体验。

热修复原理解析

    通常作为一款应用,最容易出现Bug的地方,是java代码。我们知道Oracle的套路,java源文件是被编译成.class文件,用ClassLoader加载.class;而安卓使用Dalvik/ART虚拟机,由于版权问题,谷歌把.class编译成了dex文件,并通过ClassLoader加载dex。我们的热修复方案,其实就是基于我之前博客中讲到的Android dex多分包方案实现的。想学习了解Android Dex多分包技术的童鞋,请点击链接查看:彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一)

为了便于大家形象具体的理解热修复技术的流程,我给大家画一幅原理图。

这里写图片描述

待修复项目搭建

    明白了热修复的流程以后,为了方便给大家演示热修复的流程,我们首先新建一个含有Bug的项目,该项目有一个页面,页面中包含两个按钮,一个按钮点击后会执行错误未修复的代码,另一个按钮点击后执行热修复操作。

MainActivity代码如下:

public class MainActivity extends Activity {
   
    Button btnOpen, btnModify;
    NullTest nt = new NullTest();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnOpen = (Button) findViewById(R.id.btn_open);
        btnModify = (Button) findViewById(R.id.btn_modify);
        btnOpen.setOnClickListener(new OnClickListener() {

            @Override
            public void 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值