阿里云移动端热修复-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可以应用上补丁。