阿里云Sophix 3.0热修复(使用流程)

阿里云Sophix 3.0热修复(使用流程)

使用前的文档:

阿里热修复点击打开链接

快速接入:点击打开链接

稳键接入点击打开链接

项目里使用的是  稳键接入  下面介绍稳定接入的流程使用

准备工作:

在app中gradle文件中添加(仓库)

 
  1. repositories {
  2. maven {
  3. url "http://maven.aliyun.com/nexus/content/repositories/releases"
  4. }
  5. }
添加依赖
  1. compile 'com.aliyun.ams:alicloud-android-hotfix:3.2.3'
Sophix SDK使用到以下权限
  1. <! -- 网络权限 -->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  5. <! -- 外部存储读权限,调试工具加载本地补丁需要 -->
  6. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

 配置AndroidManifest文件

在AndroidManifest.xml 中间的application 节点下添加如下配置:
  1. <meta-data
  2. android:name="com.taobao.android.hotfix.IDSECRET"
  3. android:value="App ID" />
  4. <meta-data
  5. android:name="com.taobao.android.hotfix.APPSECRET"
  6. android:value="App Secret" />
  7. <meta-data
  8. android:name="com.taobao.android.hotfix.RSASECRET"
  9. android:value="RSA密钥" />

这里注意一下,因为我在项目里使用的是稳健接入

稳健接入需要加入一个SophixStubApplication 的类

这里有一点需要注意SophixStubApplication 类里有个 括号里写原来自己的Application

  @Keep
    @SophixEntry(Application.class)
import android.content.Context;
import android.support.annotation.Keep;
import android.util.Log;

import com.jiaoyu.utils.ILog;
import com.taobao.sophix.PatchStatus;
import com.taobao.sophix.SophixApplication;
import com.taobao.sophix.SophixEntry;
import com.taobao.sophix.SophixManager;
import com.taobao.sophix.listener.PatchLoadStatusListener;


/******************************************
 * 类名称:SophixStubApplication
 * 类描述:热更稳定键入
 * @author: jhw
 * @time: 2018/5/21
 * @email: jhw505501898@163.com
 ******************************************/

public class SophixStubApplication extends SophixApplication {
    private final String TAG = "SophixStubApplication";

    // 此处SophixEntry应指定真正的Application,并且保证RealApplicationStub类名不被混淆。
    @Keep
    @SophixEntry(Application.class)
    static class RealApplicationStub {
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
//         如果需要使用MultiDex,需要在此处调用。
//         MultiDex.install(this);
        initSophix();
    }

    private void initSophix() {
        String appVersion = "2.4.4";
        try {
            appVersion = this.getPackageManager()
                    .getPackageInfo(this.getPackageName(), 0)
                    .versionName;
        } catch (Exception e) {
        }
        final SophixManager instance = SophixManager.getInstance();
        instance.setContext(this)
                .setAppVersion(appVersion)
                .setSecretMetaData(null, null, null)
                .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保存状态。
                            //必须使用原生的SharePreference

                            Log.i(TAG, "sophix preload patch success. restart app to make effect.");
                        }
                    }
                }).initialize();
    }
}
之后我们在配置下刚才新写的 SophixStubApplication类
  1. <application
  2. android:name="com.XX.XXXX.SophixStubApplication"
总结一下:
  1. 把此SophixStubApplication入口类添加进项目中,所有Sophix相关初始化放在此类中。并且不应包含开发者的任何业务逻辑代码。 若使用了MultiDex,也应在SophixStubApplication的initSophix之前添加,并且需要记得在原来的Application里面去除MultiDex,避免重复调用导致问题。
  2. 把RealApplicationStub的SophixEntry注解的内容改为自己原先真正的MyRealApplication类
  3. AndroidManifest里面的application改为新增的SophixStubApplication入口类。

项目里已经配置完成,我们开始使用热修复

打开 云控制台 


进入移动热修复 ---->  添加产品 ---->


进入刚才创建的应用 ---->  选择 Android ----->



这里需要创建你的项目了


创建完成 ----> 点击


这里的应用信息,可以看到你的Appkey值



这里的Appkey是在你项目里AndroidManifest.xml里配置的需要注意下

之后点击功能


添加一个版本

这里必须要注意,你现在要创建的版本,是与你App的版本一定要相符。

之后我们点击上传补丁 (补丁需要你的新的Apk包与之前有BUG的Apk包)


选择你的新旧包 关键点在 设置 里



设置好以后,点击 go 会比较两个apk 生成 一个补丁

我们把补丁上传到刚才上传补丁那里

成功以后,我们可以看到发布状态   点后面的操作,进入详情页面

按照 官方文档一步一步来,首先 把调式工具的APK下载到手机上(末尾有下载地址)

打开调式工具


打开扫一扫,扫描补丁


之后内容区域会出现 说明补丁加载成功,退出你有bug的App 重新进入一下试试


测试完成以后,我们测试下手机系统是否支持,我这里测试了。5.0 7.0 8.0的手机 都可以

点击新建发布灰度发布


我们要测试5个系统的手机我选择5个。 5个手机都下载上我们有bug的App

发布 ----> 打开5个手机App -----> 看下是否有提示补丁更新(这里的提醒补丁更新和点击确定退出App重新拉起App是自己写的,官方文档里没有,如果自己没有写提示的话,杀死App,重新进入看看App是否加载补丁成功)

完成灰度发布后,我们就可以点击 全量发布了! 全量发布,是更新所以有bug的App(版本必须相同)

 

到这里,阿里的热修 集成完毕使用完毕。

切记 : App版本与 添加的版本App版本必须相同

如果出现打包时或打补丁包时报错,可以看下我之前写的 解决打包与阿里系的冲突 

工具下载:

Windows版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_windows.zip

调试工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/hotfix_debug_tool-release.apk


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值