zoukankan      html  css  js  c++  java
  • APP热修复

    APP热修复的概念:

      APP修复是针对修复app中的bug场景来定义的。当我们已上线的app出现bug的时候,我们想在用户不知情的情况下修复这个bug,那么就会用到热修复。

    APP热修复的实现原理:

      首先,生成新版本的apk与旧版本的apk的差异补丁包文件;

      其次,使用热修复框架的Api在Application中去尝试加载指定路径的补丁差异包;

      最后,只需要将补丁差异包宝贝到对应路径,代开有bug的App,在Applcation创建的时候就会将补丁包文件加载到内存中并且替换对应的方法。

    常用的热修复框架---阿里的AndFix

      使用步骤:

      首先,在gradle文件中依赖AndFix类库,并且在Application的onCreate方法中编写加载patch文件的代码:

    //经反复测试,0.5的版本不如0.4的版本稳定,因此我们用稳定的版本
    //compile 'com.alipay.euler:andfix:0.5.0@aar'
    compile 'com.alipay.euler:andfix:0.5.0@aar'

      添加加载patch文件的代码:

    public class MyApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            PatchManager patchManager = new PatchManager(this);
            String appVersion = "1.0";//当前app的版本号
            patchManager.init(appVersion);
    ​
            //开始加载patch文件
            patchManager.loadPatch();
    ​
            File patchFile = new File(Environment.getExternalStorageDirectory(),"out.apatch");
            try {
                if(patchFile.exists()){
                    //指定patch文件的路径
                    patchManager.addPatch(patchFile.getAbsolutePath());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

      我们将2个apk文件和签名文件一同复制到AndFix-master oolsapkpatch-1.0.3目录下,使用apkpatch命令产生出patch文件,命令如下:

    apkpatch -f fix.apk -t bug.apk -o bug_fix -k test.jks -p 111111 -a test -e 111111

      将patch文件放到指定的路径下,运行带有bug的应用,重新启动application,就会自动覆盖原来的带有bug的代码。

    注:不必担心patch文件会被用户误删,因为patch文件已经复制到了应用的包下。

    热修复只是用于bug层级的修复,阿里的AndFix只是用于方法的修复,不能对类和Android四大组件进行修复。而且热修复具有不稳定性,而且无法适配所有的手机。

  • 相关阅读:
    46、Spark SQL工作原理剖析以及性能优化
    45、sparkSQL UDF&UDAF
    44、开窗函数及案例
    43、内置函数及每日uv、销售额统计案例
    42、JDBC数据源案例
    41、Hive数据源复杂综合案例
    40、JSON数据源综合案例实战
    39、Parquet数据源之自动分区推断&合并元数据
    Java 的String类
    Java学习之旅基础知识篇:面向对象之封装、继承及多态
  • 原文地址:https://www.cnblogs.com/yegong0214/p/6511578.html
Copyright © 2011-2022 走看看