阿里云Sophix 快速集成
阿里云Sophix 快速接入
1. 创建登录阿里云账号
首先登录阿里云地址:链接: https://www.aliyun.com/product/hotfix?spm=5176.8142029.388261.233.kapzlu;登录认证后就可以使用了。
2. 项目集成
1.在项目目录下添加依赖库

2.在app目录下添加依赖

3.创建SpApplication类继承SophixApplication类,并在清单文件引用SpApplication类;MyApplication .class为你原本的Application类。
// An highlighted block
/*** Sophix入口类,专门用于初始化Sophix,不应包含任何业务逻辑。* 此类必须继承自SophixApplication,onCreate方法不需要实现。* 此类不应与项目中的其他类有任何互相调用的逻辑,必须完全做到隔离。* AndroidManifest中设置application为此类,而SophixEntry中设为原先Application类。* 注意原先Application里不需要再重复初始化Sophix,并且需要避免混淆原先Application类。* 如有其它自定义改造,请咨询官方后妥善处理。*/public class SpApplication extends SophixApplication {private final String TAG = "SpApplication";// 此处SophixEntry应指定真正的Application,并且保证RealApplicationStub类名不被混淆。@Keep@SophixEntry(MyApplication .class)static class RealApplicationStub {}@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);// 如果需要使用MultiDex,需要在此处调用。// MultiDex.install(this);MultiDex.install(this);initSophix();}private void initSophix() {String appVersion = "1.0";try {PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);appVersion = packageInfo.versionName;} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}SophixManager.getInstance().setContext(this)/*设置版本号,版本号与控制台的版本号统一,才可以更新这里我踩的坑,控制台上添加版本,是添加需要更新的版本,与版本升级没有关系*/.setAppVersion(appVersion)//<可选>用户自定义aes秘钥, 会对补丁包采用对称加密 必须为16位.setAesKey("")/*<可选> isEnabled默认为false, 是否调试模式, 调试模式下会输出日志以及不进行补丁签名校验.线下调试此参数可以设置为true, 查看日志过滤TAG正式发布必须改为false,否则存在安全风险*/.setEnableDebug(false)/*<可选,推荐使用> 三个Secret分别对应AndroidManifest里面的三个,可以不在AndroidManifest设置而是用此函数来设置Secret*/.setSecretMetaData("", "","")/*<可选> 设置patch加载状态监听器,该方法参数需要实现PatchLoadStatusListener接口*/.setPatchLoadStatusStub(new PatchLoadStatusListener() {@Overridepublic void onLoad(int mode, int code, String info, int handlePatchVersion) {// 补丁加载回调通知Log.e("sophix", "onLoad: 补丁加载回调通知 code = " + code+"------info"+info);if (code == PatchStatus.CODE_LOAD_SUCCESS) {// 表明补丁加载成功Log.e("sophix", "onLoad: 表明补丁加载成功");} else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {// 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;// 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3Log.e("sophix", "onLoad: 表明新补丁生效需要重启. 开发者可提示用户或者强制重启");SophixManager.getInstance().killProcessSafely();} else {// 其它错误信息, 查看PatchStatus类说明Log.e("sophix", "onLoad: 其它错误信息, 查看PatchStatus类说明"+code);}}}).initialize();}}
- 在项目入口,推荐在MainActivity 的onCreate方法中获取是否有patch,建议不要放在application里面 这个补丁是需要我们代码主动去拿,在onCreate中调用SDK里面方法:
SophixManager.getInstance().queryAndLoadNewPatch();
5.添加权限如下
// An highlighted block
<!-- 网络权限 --><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"/>
- 配置IDSECRET,APPSECRET,RSASECRET 这个是需要去阿里云后台先创建app 然后创建成功后会有相应的数据,对应填写就行;上面setSecretMetaData动态设置过的话这里可以不用配置;
<!-- 阿里云热更新配置 --><meta-dataandroid:name="com.taobao.android.hotfix.IDSECRET"android:value="" /><meta-dataandroid:name="com.taobao.android.hotfix.APPSECRET"android:value="" /><meta-dataandroid:name="com.taobao.android.hotfix.RSASECRET"android:value=""/>
3. 生成补丁
1.补丁工具下载
patch补丁包生成需要使用到打补丁工具SophixPatchTool, 如还未下载打包工具,请前往下载Android打包工具。
Mac版本打包工具地址:链接: http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_macos.zip
Windows版本打包工具地址:链接: http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_windows.zip
Linux版本打包工具地址:链接: http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_linux.zip
2.工具使用
选中老包和修改过的新包,相应的密码,然后注意的是AES KEY是和SpApplication里面代码设置:.setAesKey(“xxxxxxxxxxxxxx”),值一模一样,为了解析安全设置一定要填,然后点击确定,在点击GO 按钮,生成patch的jar包

3.补丁调试发布
把生成的jar上传到阿里云后台,在阿里云控制台先创建版本,然后点击查看详情,点击右上角上传补丁按钮,上传完成后,先在本地手机上扫描测试,如下图,


显示扫描patch包的路径和是否成功信息,显示successful代表成功,这时候打开app,在不手动更新app情况下,看看内容是否已经更新。然后测试没问题的话就可以发布了。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
