热修复技术之sophix初探

接入方法 官方文档

一、接入步骤

1.app下build.gradle文件中配置

repositories {
    maven {
        url "http://maven.aliyun.com/nexus/content/repositories/releases"
    }
}

dependencies {
    ...
    compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.9'
}

2.AndroidManifest.xml中配置

    <!-- 网络权限 -->
    <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"/>

<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密钥" />
</application>

3.application中配置

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        String appVersion = "1.0";
        try {
            appVersion = this.getPackageManager()
                    .getPackageInfo(this.getPackageName(), 0)
                    .versionName;
        } catch (Exception e) {
        }
        // initialize最好放在attachBaseContext最前面,初始化直接在Application类里面,切勿封装到其他类
        SophixManager.getInstance().setContext(this)
                .setAppVersion(appVersion)
                .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) {
                            // 表明补丁加载成功
                            Log.i("------S-----",info);
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
                            // 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3

                        } else {
                            // 其它错误信息, 查看PatchStatus类说明
                            Log.e("------E-----",info);
                        }
                    }
                }).initialize();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        // queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
        SophixManager.getInstance().queryAndLoadNewPatch();
    }

至此接入sophix已完成


二、推送补丁步骤

1.生成补丁官方文档

  1. 假设线上版本1.0.0的类A中有bug,你就紧急debug并coding修复了这个bug;

  2. 此时命名已修复bug版本的版本号为1.0.1并打包;

  3. 于是乎,你有了两个版本的apk ;
    这里写图片描述

    4.下载阿里云补丁生成工具并安装下载地址

    5.选择两个版本的apk生成补丁
    添加新旧包
    设置输出路径和签名
    得到的补丁

2.调试补丁官方文档

测试工具下载
上传补丁
测试和推送补丁

3.推送补丁操作地址

点击上图中底部的【确认发布】,至此完成补丁的推送。

最后附上GitHub Demo地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值