热修复的两个框架Bugly+Sophix
前几天在一些公众号中看到这两个框架,但是没在意,毕竟我从来没用过热修复,因为根本用不到,我们做的外包,只针对一家,出了Bug及时改并且发布版本(反正是一个没什么前途的app),而且合作方 也默认如此,所以从来没用到过,周日闲的无聊,就先把Sophix看了一下,最终运行成功。
我不说是怎么集成的,毕竟再怎么讲也讲过官方文档还有一些大神的博客,我只说一下我遇到的问题:
官方文档
想了想,Sophix用起来挺傻瓜式的,没什么好讲的,开始配置的时候一个App ID,一个App Secret、RSA密钥他们的位置不好找,在这个位置点击列表的管理就可以看到这三个
这篇从头到尾讲的挺清楚的
在通过新旧包进行对比产生补丁包的时候,我(window版本)只是勾选了日志,并配置了签名,正常;
在用官方提供的测试软件的时候,不管我怎么输入包名都没用,都显示连接不上,然后我就没用这个测试软件,直接上传补丁后下发,然后正常接收,如果有问题
SophixManager.getInstance().setContext(this).setAppVersion(appVersion).setAesKey(null).setEnableDebug(true).setPatchLoadStatusStub(new PatchLoadStatusListener() {@Overridepublic void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {// 补丁加载回调通知if (code == PatchStatus.CODE_LOAD_SUCCESS) {// 表明补丁加载成功Log.e("ccer", "成功");} else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {// 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;// 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3Log.e("ccer", "重启");} else {// 其它错误信息, 查看PatchStatus类说明Log.e("ccer", "other"+code);}}}).initialize();
可以在最后的else中打印一下code,对比code码来找原因,这个官方文档有。然后这个没怎么费时间就ok了,当然,我没深入使用,只是简单的试试效果,还不错,然后就无意中看到了费用问题。
价格总览
万一哪天要是做大了,这也是一大笔钱啊;
走,换一家;
今天看的Bugly,用起来挺头疼的,开始集成的时候还好,然后到调整出效果一大堆毛病;
官方文档
正常的集成
thinker-support.gradle
.../*** 此处填写每次构建生成的基准包目录*/
def baseApkDir = "app-1225-13-47-33"/*** 对于插件各参数的详细解析请参考*/
tinkerSupport {...// 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性
// tinkerId = "base-3.0"tinkerId = "patch-3.0-2"...}...
其他的都和官网差不多,主要用到的就是这几个参数
在配置混淆规则的时候,要打开混淆
buildTypes {release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.release}}
不然生成不了app-release-mapping.txt文件;
顺序:
先生成基准包(也就是你要上线的包)
thinker-support.gradle中要更改一下
tinkerId = "base-3.0"
最好base后面跟着版本号
从右往左看,双击assembleRelease,会生成最左侧的那个日期基准包,等下次你要执行这个命令的时候,直接可以在中间那个红框中找到直接执行;现在基准包生成了,准备生成补丁包;
thinker-support.gradle中要更改一下
def baseApkDir = "app-1225-13-47-33"
这个日期要和左侧的那个基准包的日期以及名字要 一样(我这左边有多个,你选择你要上线的那个)
tinkerId = "patch-3.0-2"
这个也要改一下;
然后执行生成补丁,双击buildTinkerPatchRelease
还是从右往左看,双击后,大概3、5秒后生成补丁包,最左边的,下次生成同样可在中间选择
最终提交那个patch-signed_7zip.apk到官网中;
这个才是整个修改后的针对基准包而生成的补丁文件,之前我就搞错了,每次我都是先在手机上运行一遍,然后生成基准包,补丁,压根就不是针对我手机上运行的那个的补丁,所以一直没效果;还有那个tinkerId我也只是改动base后面的数字,直到偶然才换到patch,浪费了不少时间;开始连那两个命令都没找到,找了半天,我还以为那两个命令是在终端执行。。。
还有
public class SampleApplication extends TinkerApplication {public SampleApplication() {super(ShareConstants.TINKER_ENABLE_ALL, "com.xiey94.bugly.SampleApplicationLike","com.tencent.tinker.loader.TinkerLoader", true);}
}
里面的参数看清楚,第三个参数要搞清楚自己的包名,官网给的是xxx.xxx,不要一时眼花看过去了。
在SampleApplicationLike中要配置自己的App ID
@Overridepublic void onCreate() {super.onCreate();// 这里实现SDK初始化,appId替换成你的在Bugly平台申请的appId// 调试时,将第三个参数改为trueBugly.init(getApplication(), "App ID", true);}
很奇怪,App Key怎么没用到???还是只是初始阶段没用到
最后,一切按照官方的来,我的就OK了!
还有一个好消息,就是他不收费。当然还得吐槽一下,它的生效时间有点慢。
(我在xml中放了一个TextView,写到我帅吗?然后补丁改为贼帅,第一遍竟然不出来,我还以为他在质疑自己,终于第二次他遵从了心底的声音,但是这个停顿让我很受打击,这个圣诞节有点不愉快!!!)
多渠道打包官网也有讲:
方法一:gradle配置productFlavors方式[有限制,一次最多五个渠道包]
如果你配置超过5个的话,那么就意味着你要一个补丁,一个补丁上传到Bugly补丁管理后台,况且我们也只允许同时下发5个版本的补丁。这里提一下为什么要上传所有渠道的补丁,因为通过productFlavors配置,会修改buildConfig类中的FLAVOR字段,这会导致生成的不同渠道包的dex是不一样的,所以只能针对具体渠道进行打补丁。这就非常的尴尬了,那怎么办呢?有没有版本通过一个补丁就能够修复所有渠道,答案是:有的,但前提是你要保证所有渠道包代码是一致的。
方法二:多渠道打包、walle
目前只遇到、解决这么些问题,应该是我只处于尝试阶段,所以见识浅短,当我正真用到的时候载深入探究。
值得注意的一点就是他们都有一些限制,当你考虑用到这个的时候,你要考虑清楚它的限制。
热修复的两个框架Bugly+Sophix相关推荐
- 热修复原理学习(1)热修复技术介绍
今天开始学习热修复的原理知识,学习方向是阿里团队编写的<深入探索Android热修复技术原理>,所以研究的热修复框架是Sophix. 之前对热修复的知识做过了解,具体是这一篇:热修复原理学 ...
- Android热修复技术选型参考
背景 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷. 热修复技术对比 1.公司角度 大致可以分为阿里系和腾讯系和其他,如下: 阿里系 Dexposed ...
- 深入解析:Android热修复技术选择和原理
背景 想要成为一名优秀的Android开发,你需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~. 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修 ...
- Android热修复技术选择和原理分析
背景 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷. 热修复技术对比 1.公司角度 大致可以分为阿里系和腾讯系和其他,如下: 阿里系 Dexposed ...
- Android热修复之AndFix
Android热修复之AndFix 最近我看到身边的小伙伴在看android热修复相关的文章,正好趁着休息的时间我在掘金社区看到了一篇讲android热修复的文章,于是我仔细读完了那篇文章.在读完那边 ...
- 阿里SopHix热修复框架
2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner ...
- Android-第三方开源框架:Bugly让热修复变得如此简单
作者:GitLqr 纸上说来终觉浅,时间比较充裕的小伙伴建议去B站观看视频讲解:Android第三方开源库系列-热修复框架使用.原理及项目实战(已完结) 一.简述 在上一篇<热修复--Tinke ...
- 热修复——Bugly让热修复变得如此简单
一.简述 在上一篇<热修复--Tinker的集成与使用>中,根据Tinker官方Wiki集成了Tinker,但那仅仅只是本地集成,有一个重要的问题没有解决,那就是补丁从服务器下发到用户手机 ...
- 安卓开发腾讯Bugly热修复集成和使用思路
文章目录 一,官方集成 一.获取App ID 二.添加插件依赖 三.集成SDK 四.配置Tinker 1.overrideTinkerPatchConfiguration 2.baseApkDir 3 ...
最新文章
- zabbix性能优化
- SQLErrorCodeSQLExceptionTranslator 使用以下的匹配规则
- spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持
- 计算机网络期末复习提纲
- python matplotlib数据可视化教程_matplotlib的Python数据可视化和探索——入门指南
- 微赞企动协会wac_xiehui3.0.9全开源版模块
- HDU3930(离散对数与原根)
- Android异常总结---Test run failed:Unable to find instrumentation target package
- 【IE】IE对line-height 失效的的解决方案
- windows下设置PHP环境变量
- 数学建模安装matlab,数学建模神器——Matlab下载安装教程
- Java初学者的建议!
- CKA 认证笔记 - CKA 认证经验帖
- QML 语法(Syntax)
- 第十三章 音视频播放——Qt
- 安装Brat标记工具
- android开发 app消息提醒功能,Android中利用App实现消息推送机制的代码
- 激励反向传播的自上而下注意力神经模型
- Java实现eml文件的解析
- sql怎么撤回update_如何写好5000行的SQL代码
热门文章
- android 浏览器打开本地html文件,如何在Android浏览器中加载本地HTML文件
- 关于UltraISO打开iso文件后只有部分文件问题
- Nginx源码分析——worker进程源码与工作原理(一)
- 《活着》——余华作品
- ps cc2018启动界面无响应解决方案
- python创建文件夹
- 智慧屏鸿蒙Os好在哪,荣耀智慧屏和电视的区别到底在哪?鸿蒙OS+海思3芯片,真的强...
- 什么是脚本,什么是脚本语言
- Paging3、Room使用,1、从本地Room数据库加载 2、直接网络获取数据加载 3、网络访问数据到Room数据库再加载 4、封装使用
- 已有Win10基础上安装Ubuntu双系统(含BIOS操作)