阿里热修复Sophix的使用教程

第一步:进入阿里云官网,完成注册登录后,

创建成功后:

 

 

在阿里云上创建项目结束

 

第二步:接下来是在项目中集成热修复:

首先在项目的app的build.gradle中添加

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

}

 

compile 'com.aliyun.ams:alicloud-android-hotfix:3.2.4'

 

第三步:自定义热修复需要的SophixStudApplication类:

 

SophixStubApplication的完整代码如下:

/**
 * Sophix入口类,专门用于初始化Sophix,不应包含任何业务逻辑。
 * 此类必须继承自SophixApplication,onCreate方法不需要实现。
 * 此类不应与项目中的其他类有任何互相调用的逻辑,必须完全做到隔离。
 * AndroidManifest中设置application为此类,而SophixEntry中设为原先Application类。
 * 注意原先Application里不需要再重复初始化Sophix,并且需要避免混淆原先Application类。
 * 如有其它自定义改造,请咨询官方后妥善处理。
 */
public class SophixStubApplication extends SophixApplication {
    private final String TAG = "SophixStubApplication";
    private SharedPreferences sp;
    // 此处SophixEntry应指定真正的Application,并且保证RealApplicationStub类名不被混淆。
    @Keep
    @SophixEntry(SpeechApplication.class)
    static class RealApplicationStub {}
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
//         如果需要使用MultiDex,需要在此处调用。
         MultiDex.install(this);
        initSophix();

    }

    @Override
    public void onCreate() {
        super.onCreate();
        //热修复
        SophixManager.getInstance().queryAndLoadNewPatch();
    }

    private void initSophix() {
        sp = getSharedPreferences("config", Context.MODE_PRIVATE);
        String appVersion = "0.0.0";
        try {
            appVersion = this.getPackageManager()
                    .getPackageInfo(this.getPackageName(), 0)
                    .versionName;
        } catch (Exception e) {
        }
        final SophixManager instance = SophixManager.getInstance();
        instance.setContext(this)
                .setAppVersion(appVersion)
                .setSecretMetaData(getResources().getString(R.string.idSecret), getResources().getString(R.string.appSecret), getResources().getString(R.string.rsaSecret))
                .setEnableDebug(true)
                .setEnableFullLog()
                .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(TAG, "sophix load patch success!");
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 如果需要在后台重启,建议此处用SharePreference保存状态。
                            //Log.i(TAG, "sophix preload patch success. restart app to make effect.");
                            SharedPreferences.Editor editor = sp.edit();
                            editor.putString("hotFix","b1");
                            editor.apply();
                            editor.commit();
                        }
                    }
                }).initialize();
    }
}

 

 

第四步:创建热修复继承之前的application类,如果已存在,则不需要重新创建,该类名必须要和SophixStubApplication中

要一模一样。

 

如果原本项目中没哟创建application类,则创建(该类,可以不填写内容,只要存在onCreate方法):

 

完成以上步骤后,则代码集成已完成。

第五步:开始打补丁,

假如有Bug的apk版本号是1.0.0,那修复bug后的apk也要是1.0.0,将有bug的apk和修复bug的apk用不同名称保存,接着打开

 

该程序 进行生成补丁。

该程序的下载步骤:如下

 

下载成功解压后,点击运行 显示如下:

将有bug的apk和修复后的apk加入 

再点击设置:

选择补丁产生后放在何处

如何是debug包,在不需要填写下面的信息,如何是正式包,则需要填写

 

生成的补丁如上。

 

第六步:

在控制台中,首先添加apk版本号

 

添加成功以后,点击上传补丁

 

 

 

 

 

 

如果热修复集成成功,那手机上运行的存在bug的apk会被修复,如果加载成功设备总数不为0,则修复成功

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值