阿里热修复Hotfix的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou906767220/article/details/80865132

申请账号

登录移动热修复控制台:https://hotfix.console.aliyun.com/,点击右上角创建App

配置

第1步:集成hotfix

gradle远程仓库依赖, 打开项目找到app的build.gradle文件,添加如下配置:
添加maven仓库地址:

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

添加

dependencies {
    compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.7'
}

第2步:添加权限和配置meta-data值

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

application节点下添加meta-data属性

 <meta-data
            android:name="com.taobao.android.hotfix.IDSECRET"
            android:value="AppId" />
        <meta-data
            android:name="com.taobao.android.hotfix.APPSECRET"
            android:value="AppSecret" />
        <meta-data
            android:name="com.taobao.android.hotfix.RSASECRET"
            android:value="RSA密钥"/>

AppId 、AppSecret和RSA密钥在你申请的应用下有这个三个值

第3步:实例化hotfix

在你的Application下添加一下内容,记住这个要放在所有内容的首位

 /**
  * 实例化hotfix
 */
private void initSophix() {
        String appVersion = "1.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(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保存状态。
                            Log.i(TAG, "sophix preload patch success. restart app to make effect.");
                        }
                    }
                }).initialize();
    }

到此已完成hotfix的大部分工作,接下来是测试

测试

第1步: 生成补丁包

  • 下载补丁工具

patch补丁包生成需要使用到打补丁工具SophixPatchTool, 如还未下载打包工具,请前往下载Android打包工具。

我已windows 为例,解压下载的工具,会得到下图。双击运行SophixPatchTool.exe
,运行前请确保你的jdk 版本大于或等于7。

  • 旧包:<必填> 选择基线包路径(有问题的APK)。
  • 新包:<必填> 选择新包路径(修复过该问题APK)。
  • 日志:打开日志输出窗口。
  • 高级:展开高级选项。
  • 设置:配置其他信息。
  • GO!:开始生成补丁。

  • 补丁输出路径:<必填> 指定生成补丁之后补丁的存放位置,必须是已存在的目录。

  • Key Store Path:<选填>本地的签名文件的路径,不输入则不做签名。
  • Key Store Password:<选填>证书文件的密码。
  • Key Alias:<选填>Key的别名。
  • Key Passwrod:<选填>Key的密码。
  • AES Key:<选填>自定义aes秘钥, 必须是16位数字或字母的组合。必须与setAesKey中设置的秘钥一致。
  • Filter Class File:<选填>本地的白名单类列表文件的路径,放进去的类不会再计算patch,文件格式: 一行一个类名。

第2步:测试补丁包是否正确

方法一:网络
手机需要下载Sophix调试工具,打开工具填写你的包名,点击连接应用,然后扫描电脑二维码,下面会出log。

方法二:本地调试
手机本地调试,填写手机本地补丁包的绝对路径,就刚用工具打出补丁包的jar,然后应用补丁包就可以了。

第3步:发布补丁包

补丁包正确的话就可以发布了,下面有灰度发布和全部发布

猜你喜欢

转载自blog.csdn.net/zhou906767220/article/details/80865132