Sophix热修复问题以及加固
来源:互联网 发布:uboot源码详解 编辑:程序博客网 时间:2024/05/16 02:28
听说这个可以两行代码实现热修复,瞬间按耐不住了,
正好公测阶段,申请了一下权限,等了将近一天吧,通过了认证。然后就是开开心心去尝试了
以下是尝试中遇到的问题:
额,,等会说吧,要不先说一下怎么接入,虽然产品文档已经很透明了,但是还是说一下吧
导包都会哈
这里我用的Kotlin 编写的,在Application 中实现需要添加的代码,也就是这两行代码实现热修复
// initialize最好放在attachBaseContext最前面SophixManager.getInstance().setContext(this) .setAppVersion(appVersion) .setAesKey(null) .setEnableDebug(true) .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) { // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启; // 建议: 用户可以监听进入后台事件, 然后应用自杀 } else if (code == PatchStatus.CODE_LOAD_FAIL) { // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载 // SophixManager.getInstance().cleanPatches(); } else { // 其它错误信息, 查看PatchStatus类说明 } } }).initialize();
// queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中SophixManager.getInstance().queryAndLoadNewPatch();
然后就完了—zzz
像之前玩Tinker的时候可没这么简单
好了接下来就是问题所在了
很简单的问题,我弄了一上午,最后发现一句关键的话
1.4 版本管理说明说明一:patch是针对客户端具体某个版本的,patch和具体版本绑定eg. 应用当前版本号是1.1.0, 那么只能在后台查询到1.1.0版本对应发布的补丁, 而查询不到之前1.0.0旧版本发布的补丁.说明二:针对某个具体版本发布的新补丁, 必须包含所有的bugfix, 而不能依赖补丁递增修复的方式, 因为应用仅可能加载一个补丁eg. 针对1.0.0版本在后台发布了一个补丁版本号为1的补丁修复了bug1, 然后发现此时针对这个版本补丁1修复的不完全, 代码还有bug2, 在后台重新发布一个补丁版本号为2的补丁, 那么此时补丁2就必须同时包含bug1和bug2的修复才行, 而不是只包含bug2的修复(bug1就没被修复了)
我当时手贱改了一下
SophixManager.getInstance().setContext(this) .setAppVersion(“1.0.1”)//注意下我写的是1.0.1
实际中我测试的版本是1.0 –而且我在版本=控制台写的也是1.0,
这就尴尬了,轮询器查找不到1.0.1版本jar 文件。
后来改了一下,瞬间世界观崩塌,好伤心一下子好用了~~
问题二:加固
加固问题,Tinker 不支持加固,后来我就没深入尝试,但是Sophix 可以呀,但是不能拿加固完成的版本作为旧包,新包。
你需要的只是在加固之前生成差异包,不然会无法生成jar 文件
问题三:四大组件
对于Sophix 不能创建四大组件的问题,我想了一下,我觉得我们可以尝试一下在旧版本先占几个坑,作为空实现,我们起名 TextActivity1,记得在清单文件中注册一下
我们发布后发现出问题了,肿么办,OK ,现在只需要在我们占的坑TextActivity1中实现方法以及逻辑,最后通过intent 跳转一下,啦啦啦 —成功
不用谢我,推荐一波个人网站,喜欢的话请收藏吧,
–! 臣跪谢
阅读全文
2 0
- Sophix热修复问题以及加固
- Sophix热修复实践
- sophix热修复笔记
- 热修复技术 Sophix
- 阿里热修复方案Sophix
- sophix热修复技术使用
- 阿里热修复框架Sophix
- 阿里热修复之Sophix
- 阿里热修复Sophix 3.0
- 浅析Android热修复sophix
- Tinker热修复加固
- Android热修复之Sophix初探
- Android热修复方案--sophix简单使用
- 移动热修复Sophix之初体验
- 阿里热修复——sophix
- 阿里SopHix热修复框架接入
- 阿里云热修复sophix详解
- android热修复-阿里Hotfix最新版(Sophix)
- View 的测量
- 阿里前端笔试
- Centos 7的firewalld用法
- Spring多数据源的配置
- Allowance
- Sophix热修复问题以及加固
- 运行项目无法正常启动 常见粗心错误(SSM)
- Windows上安装ArcGIS Enterprise(ArcGIS 10.5为例)
- Spark内核源码深度剖析:Spark内核架构深度剖析
- ORACLE多表查询优化
- double 类型的有效位
- iOS 加载图片方法imageNamed 与 imageWithContentsOfFile 比较
- 百度分享,直接复制代码(就行了,拿去用)
- 9、class获取、添加删除状态切换