阿里云移动端热修复-Sophix(for Android)-基本使用

 前段时间公司要用到热修复这个功能,然后就去简单的了解了一下,本篇简单记录下阿里云热修复Sophix的使用方法,关于热修复原理的问题后续了解了再记录。

 

创建应用

阿里云上创建自己的应用信息,步骤不多介绍,很简单,按照官方文档的步骤来操作就行。

以下是自己Android项目中添加相关代码。

 

引入阿里仓库

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

 

添加依赖

implementation('com.aliyun.ams:alicloud-android-hotfix:3.3.0')

 

添加权限

<! -- 网络权限 -->
<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"/>

 

在AndroidManifest的application标签中配置

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

 

在Application类中初始化(直接粘贴以下代码就好)

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // initialize最好放在attachBaseContext最前面,初始化直接在Application类里面,切勿封装到其他类
        SophixManager.getInstance().setContext(this)
                .setAppVersion(getVersionName())
                .setAesKey(null)
                .setEnableDebug(true)//正式发布该参数必须为false
                .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 {
                            // 其它错误信息, 查看PatchStatus类说明
                        }
                    }
                }).initialize();
        // queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
        SophixManager.getInstance().queryAndLoadNewPatch();
    }
    public String getVersionName() {
        try {
            return this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }
}

 

下载补丁工具

官方下载:点击下载。里面有各个版本,按需下载就好。

 

生成补丁

旧包为当前服务器上运行的apk,新包为代码改动后的apk。两个apk的版本须一致。

上传完后单击Go就会生成补丁。

点击日志可以查看改动的内容及输出日志。

点击设置可以更改补丁输出路径等。

发布 

执行完毕后在输出的目录下多了一个sophix-patch.jar文件,随后进入阿里云控制台找到应用,输入版本号,随后上传刚刚生成的jar包,点击发布就完成了。

发布完后重启应用时就会生效了(重启必须杀死进程)

 

备注

已加固的apk不能生成补丁,但已加固的apk可以应用上补丁。

 

posted @ 2022-08-09 09:39  渣娃  阅读(788)  评论(0编辑  收藏  举报