热修复技术 Sophix

1.首选我们要去阿里云移动开放平台去注册自己的账号,在这里我就不做介绍了。
2.想了解阿里云热修复技术多么牛的可以查看这篇文章

震惊!阿里热更新框架 Sophix 背后隐藏的真相竟然是……

3.接下来我们言归正传介绍下sdk的接入由于我一直使用的是Android studio 所以对于eclipse的使用就不做过多介绍了。

A. 我们先要在移动控制台去创建自己的应用地址为 https://hotfix.console.aliyun.com/

B. 接下来我们要创建一个Android studio工程在工程的model的app的build.gradle中添加相应的依赖

首先要添加maven支持
repositories {
    maven {
        url "http://maven.aliyun.com/nexus/content/repositories/releases"
    }
}
然后要添加库依赖
compile 'com.aliyun.ams:alicloud-android-hotfix:3.0.9'

C. 接下来需要设置我们的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" />
然后是我们的参数
<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密钥" />
(如果我们不想在xml中定义这些内容可以写到其他地方下面的步骤会介绍到)

D. 如果我们加了混淆的话可以添加如下混淆配置

#基线包使用,生成mapping.txt
-printmapping mapping.txt
#生成的mapping.txt在app/buidl/outputs/mapping/release路径下,移动到/app路径下
#修复后的项目使用,保证混淆结果一致
#-applymapping mapping.txt
#hotfix
-keep class com.taobao.sophix.**{*;}
-keep class com.ta.utdid2.device.**{*;}
#防止inline
-dontoptimize

E. 接下来需要在我们的application类中写入如下初始化代码(如果没有的话需要自己写个类继承application并在AndroidManifest.xml里面完成注册)

1.在attachBaseContext(Context base)方法中加入如下代码
// initialize最好放在attachBaseContext最前面
//setSecretMetaData(idSecret, appSecret, rsaSecret): <可选,推荐使用> 三个Secret分别对应AndroidManifest里面的三个,可以不在AndroidManifest设置而是用此函数来设置Secret。放到代码里面进行设置可以自定义混淆代码,更加安全,此函数的设置会覆盖AndroidManifest里面的设置,如果对应的值设为null,默认会在使用AndroidManifest里面的。
//setEnableDebug(isEnabled):设置是否为debug模式
//setUnsupportedModel(modelName, sdkVersionInt):<可选> 把不支持的设备加入黑名单,加入后不会进行热修复

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

2.public void onCreate()方法中加入如下处理
  // queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
  //实时检查是否有热修复更新
  SophixManager.getInstance().queryAndLoadNewPatch();

F. 通过以上处理代码部分就完成了 我们需要使用生成补丁的工具工具连接如下
https://help.aliyun.com/document_detail/53247.html?spm=5176.doc53240.6.548.kFzYkm
将两个apk包作对比生成差异文件。将文件上传到控制台。

G. 最后控制台上添加版本 ->上传补丁->点击查看详情->发布版本

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值