Sophix热修复方案-阿里巴巴

这两天学习Sophix热修复碰到很多问题,最后也成功,最后总结下经验

  • 与其它的区别
    这里写图片描述
  • 位置
    官方地址
    在这里

  • 创建一个项目
    这里写图片描述

  • 对应的配置参数
    这里写图片描述

  • 配置as
    在build.gradle中添加依赖包

allprojects {
    repositories {
        jcenter()
        maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
    }
}

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

在AndroidManifest.xml中配置

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

权限

    <! -- 网络权限 -->
    <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中初始化

 /**
     * 热修复初始化
     */
    private void initHotfix() {
        String appVersion;
        try {
            appVersion = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
            Log.i("jam",appVersion);
        } catch (Exception e) {
            appVersion = "1.1";
        }

        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("jam",PatchStatus.CODE_LOAD_SUCCESS+"");
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
                            // 建议: 用户可以监听进入后台事件, 然后应用自杀
                            Log.i("jam",PatchStatus.CODE_LOAD_RELAUNCH+"");
                        } else if (code == PatchStatus.CODE_LOAD_FAIL) {
                            // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载
                            // SophixManager.getInstance().cleanPatches();
                            Log.i("jam",PatchStatus.CODE_LOAD_FAIL+"");
                        } else {
                            // 其它错误信息, 查看PatchStatus类说明
                            Log.i("jam",code+"----"+info);
                        }
                    }
                }).initialize();
        SophixManager.getInstance().queryAndLoadNewPatch();
    }

以上已经配置完相关的,接下来运行一个带有bug的apk和一个改好的apk
需要去官网下载生成jar包的工具和本地测试的apk
工具地址

  • 生成jar
    这里写图片描述
    不建议选中,会影响打包
  • 会生成 sophix-patch.jar 同名字的jar,在本地使用官方提供的工具测试

这里写图片描述

  • 创建补丁版本
    这里写图片描述
    这里写图片描述
  • 最后
    以上是所有这两天相关的东西,爬坑:补丁版本号与versionName版本号保持一致才会有效,手机的绝对路径(我的是华为):/storage/emulated/0/。第一次成功后首页地图定位图标会换了,第二次是对的,没找出什么原因希望以后会碰到或者可以学习到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值