热更新实践

作者: 风的低语 | 来源:发表于2019-04-11 11:36 被阅读14次

    “热部署” – 方法内的简单修改,无需重启app和Activity。 “暖部署” – app无需重启,但是activity需要重启,比如资源的修改。 “冷部署” – app需要重启,比如继承关系的改变或方法的签名变化等。

    阿里云Sophix热修复之简单使用

    Sophix集成示例:

    第一步:找到Project的build.gradle文件,在allProjects节点下加上如下代码:
    repositories {
              maven { url"http://maven.aliyun.com/nexus/content/repositories/releases"}
    }
    
    
    第二步:找到Module的build.gradle文件,添加依赖:

    compile'com.aliyun.ams:alicloud-android-hotfix:3.0.7'
    然后同步project

    第三步:添加权限,SDK使用到以下权限
      <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!--<! -- 外部存储读权限,调试工具加载本地补丁需要 –>-->
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    
    

    READ_EXTERNAL_STORAGE/ACCESS_WIFI_STATE 权限属于Dangerous Permissions,自行做好android6.0以上的运行时权限获取

    第四步:密钥等配置,在application节点下加入以下配置:
    <meta-data
    android:name="com.taobao.android.hotfix.IDSECRET"
    android:value="App ID" />
    <meta-data
    android:name="com.taobao.android.hotfix.APPSECRET"
    android:value="App Secret" />
    <meta-data
    android:name="com.taobao.android.hotfix.RSASECRET"
    android:value="RSA密钥" />
    
    
    第五步:登录阿里云热修复管理控制台,填入对应3个value
    第六步:代码集成

    在Application的attachBaseContext方法里加入Sophix初始化

        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            SophixManager.getInstance().setContext(this)
                    .setAppVersion(getAppVersion())
                    .setAesKey(null)
                    .setEnableDebug(true)
                    .setPatchLoadStatusStub(new PatchLoadStatusListener() {
                        @Override
                        public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
                            // 补丁加载回调通知
                            if (code == PatchStatus.CODE_LOAD_SUCCESS) {
                                // 表明补丁加载成功
                            } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                                // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
                                // 建议: 用户可以监听进入后台事件, 然后应用自杀
                            } else if (code == PatchStatus.CODE_LOAD_FAIL) {
                                // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载
                                 SophixManager.getInstance().cleanPatches();
                            } else {
                                // 其它错误信息, 查看PatchStatus类说明
                            }
                        }
                    }).initialize();
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            ......
           // queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
            SophixManager.getInstance().queryAndLoadNewPatch();
    }
    
    

    自此SDK的集成已经差不多完成,官方给出了很详细的集成方法,官方集成文档

    第七步:生成热修复补丁

    我们直接看官方文档这里面写的很详细,细到每个设置每个参数都有说明

    第八步:调试并发布补丁

    首先我们需要上传补丁到阿里云管理后台,点此查看详细操作
    接下来是对补丁的调试,点此查看详细操作
    调试没毛病后,发布补丁,参考管理后台使用说明的step5

    相关文章

      网友评论

        本文标题:热更新实践

        本文链接:https://www.haomeiwen.com/subject/vumoiqtx.html