本帖最后由 大山哥哥 于 2017-6-24 16:18 编辑
引言接下来说下关于AndFix以及现在推出的新的解决方案,两者之间的区别是什么呢?AndFix底层固定结构的替换方案稳定性不好,其使用范围也存在着诸多限制,虽然可以通过改造代码绕过限制来达到相同的修复目的,但这种方式既不优雅也不方便。而更大的问题是,Andfix只提供了代码层面的修复,对于资源和so的修复都还未能实现。而Sophix能做到类修复、资源修复、so文件修复, 补丁即时生效,不需要应用重启。最重要的是Sophix简单!
创建应用先在管理控制台创建应用。
创建成功后MHub控制台可以查看到对应App.
返回Hotfix控制台,刷新页面后可以看到对应的Hotfix App。
接入应用首先在咱们项目主module目录下的gradle文件中添加maven仓库地址以及配置sophix依赖。
配置完成后开始进行gradle编译。编译完成后,咱们则开始进入写代码得阶段。
配置权限
配置相关meta信息
至于写法,非常简单,只需要注意几个参数所对应得意思就ok 。关于初始化,需要注意的是initialize的调用应该尽可能的早,必须在程序入口的最开始进行(即Application的onCreate方法)SDK初始化操作,否则极有可能导致崩溃。而查询服务器是否有可用补丁的操作可以在后面的任意地方。
到此为止,其实操作得初始化已经ok了~至于补丁得修补,其实sophix已经帮咱们搞定了。
生成补丁
首先大家需要明白一个概念,什么叫做热修复。大家可以简单理解为,在用户不知情的情况下偷偷的把程序得漏洞给修复或者添加新的功能。而要想在用户不知情的前提下实现,首先就是不能引导用户安装apk。所以咱们只能通过其他得方式来实现,而这里就是通过补丁包得形式来搞定。只要程序检测到有补丁存在就加载补丁中得内容从而来实现上述需求。补丁生成工具下载地址:
那既然B 是正常得apk 。那么咱们就得参照A 和B 去比对,然后生成出来一个补丁,而A 能和补丁文件能够实现B 的结果。
这里有三个选项,官方也有给出详细得解释:
1. 强制冷启动:勾选的话强制生成补丁包为需要冷启动才能修复的格式。默认不选的话,工具会根据代码变更情况自动选择即时热替换或者冷启动修复。
2. 不比较资源:打补丁时不比较资源的变化。
3. 不比较SO库:打补丁时不比较SO库的变化。 接下来点击设置来配置打包得相关签名信息。
接下来点击GO!按钮然后工具就会帮咱们在桌面生成了一个叫做sophix-patch.jar的文件。
使用步骤如下:1. 输入程序包名并且点击连接应用,在下方查看结果。
2. 如果结果显示成功则输入补丁位于手机具体路径。然后点击本地应用补丁。这里我将补丁放在/sdcard/ 目录下
如果大家看到这个结果,那说明咱们其实已经实现了,但是要注意的是,需要先关闭A然后再重新打开该应用。
|