阿里Sophix热修复体验

前言:
之前看了关于热修复的相关文章,想找个代码试试,奈何感觉使用起来有些麻烦,之后就不了了之。看到了阿里的Sophix,嗯,感觉不那么复杂,步骤简单,就着手自己敲了敲。主要记录下自己找了很久,费时步骤)

相关文档:
阿里热修复:https://www.aliyun.com/product/hotfix
快速接入:https://help.aliyun.com/document_detail/53240.html?spm=a2c4g.11174283.3.1.D6UW0D
AndroidSDK稳健接入:https://help.aliyun.com/document_detail/93825.html?spm=a2c4g.11186623.6.580.38ec5c56sA6o2C

开始:(Android Studio)
1.在app中gradle文件中添加

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

添加依赖:

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

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

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

重点注意:这里的App ID,App Secret,RSA密钥需要换成你在阿里云上该应用相应值。这里重点介绍这些值是怎么来的,找了我好久。
a。【申请账号】如果你没有阿里云账号请申请。
b。【添加移动热修复】申请后点击右方头像,出现你的账号信息,点击你设置的用户名,会出现账号管理界面,如下
这里写图片描述
点击管理控制,把鼠标放在云计算服务基础上,出现设置图标,点击图标,进入如下界面:
这里写图片描述
鼠标放在移动服务上,看见移动热修复,点击上,然后点击左侧的对勾确认。你会在左侧菜单上看到移动热修复。
这里写图片描述
如果它提示要你实名,就老老实实实名吧。
c。【创建应用】按照上述步骤点击移动热修复,添加产品
这里写图片描述
添加成功后点击刚创建的产品,添加应用,你可以添加一个Android应用。
这里写图片描述
这里的应用名和包名我对应上了创建好的应用名和包名。创建后没有找到RSA密钥
,接着来。
这里写图片描述
点击右方那个应用信息:
这里写图片描述
ok,这里就对应上述要修改的值了。
4.初始化(没有在attachBaseContext中执行时,在用阿里的工具生成补丁时会出错)
新建一个类继承Application,重写attachBaseContext方法(重点),执行完super后执行下述代码:

 String appVersion;
        try {
            appVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
        } catch (PackageManager.NameNotFoundException e) {
            appVersion = "1.0";
            e.printStackTrace();
        }
        // 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) {
                            // 表明补丁加载成功
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
                            // 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3
                        } else {
                            // 其它错误信息, 查看PatchStatus类说明
                        }
                    }
                }).initialize();
        // queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
        SophixManager.getInstance().queryAndLoadNewPatch();

然后在AndroidManifest.xml中将application的name修改为自定义的Application(我弄的时候把这个给忘记了,怎么能忘记这个步骤呢,傻)
5.对第一次原代码进行打包,并在手机上执行。
6.修改代码,进行第二次打包。

7.有了原包和修改后的包怎样生成补丁呢。请看:
https://help.aliyun.com/document_detail/53247.html?spm=a2c4g.11186623.4.8.ShKMF8

注意:
这里生成补丁包时,第一次提醒你设置。设置不止要设置上部分,下边的一些信息也要设置上。
打开下载的阿里生成补丁工具:
这里写图片描述
打开后点击设置:
这里写图片描述
配置信息:
这里写图片描述
配置好了才能生成补丁,不然会出错。

8.生成补丁后需要调试补丁:
https://help.aliyun.com/document_detail/53248.html?spm=a2c4g.11186623.4.8.1kSSEF

ok,完美ending。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值