AndroidAndroid开发经验谈流行

手把手教你android 热更新代码实操之路,不用重新打包照样修

2016-12-23  本文已影响1645人  haegyeong

前天晚上教我的女票使用bugly实现版本更新的时候,我突然发现bugly更新版本了,并且增加了一个重大的更新,我立马就充满鸡血,立马想尝试一下。毕竟我前几个月研究了一下热更新能力了,个人感觉微信的tinker比较强大一点,一下是对比图,不过我去看微信tinker的git跟着实现起来我却显的很无奈了,今天看到bugly已经集成进去了,让我感到非常happy,接下来我和大家一步一步实现bugly的热更新吧!!fixbug!!!!

下载博客一图片对比给大家参考一下

在开始讲解之前,可能有的人觉得很奇怪为什么要用bugly来集成,我拷贝官网的话给大家看看。

为什么使用Bugly热更新?

1、无需关注Tinker是如何合成补丁的

2、无需自己搭建补丁管理后台

3、无需考虑后台下发补丁策略的任何事情

4、无需考虑补丁下载合成的时机,处理后台下发的策略

5、我们提供了更加方便集成Tinker的方式

6、我们通过HTTPS及签名校验等机制保障补丁下发的安全性

7、丰富的下发维度控制,有效控制补丁影响范围

8、我们提供了应用升级一站式解决方案

我就特别喜欢这种简单快捷的实现方式。

废话不再多说,大家跟着我一起来敲键盘吧!!!

1、我们在项目中的build.gradle文件中加入:

// tinker gradle插件

classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.5')

// tinkersupport插件

classpath"com.tencent.bugly:tinker-support:latest.release"

注意:指定tinker插件版本为1.7.5,避免因为插件版本的变更导致补丁包的生成的问题。

第一步

2、在app module的“build.gradle”文件中添加如下配置(内容比较多粘贴内容你们看的也累也看不出什么东东,我截图标注几点重要的地方给大家注意下,文末给出链接大家加载参考)

添加依赖:

// 多dex配置

compile'com.android.support:multidex:1.0.1'

// 集成Bugly热更新aar(灰度时使用方式)

//    compile(name: 'bugly_crashreport_upgrade-1.2.0', ext: 'aar')

compile'com.tencent.bugly:crashreport_upgrade:latest.release'

第一注意点 第二注意点,有bug的应用根据这个id来找补丁 第三注意点

以上就是app的gradle要特别注意的几点,接下来我们继续撸码

3、自定义Application

-SampleApplication 不做任何操作,所有Application的代码都会放到ApplicationLike继承类当中

自定义application这里面不做任何操作,所有Application的代码都会放到ApplicationLike继承类当中

-SampleApplicationLike  这个类是Application的代理类,以前所有在Application的实现必须要全部拷贝到这里,在onCreate方法调用SDK的初始化方法

截图1 截图2

4、本章的重点出来了,就是修复代码工作:

看一下错误代码,我讲算术除于0,结果大家都知道,肯定挂了,不信,截图

算术错误
先制作一个有bug的app 注意:这个有bug的app就是官网所说的基准包了,即要修复的版本应用。
应用挂了

-修正代码 Fixbug,然后执行以下动作制作补丁


fix bug 制作补丁

bugly控制台,大家可以看到我上面有2.0以后的补丁,其实我也现在又个很纳闷的问题,就是如果我下发的补丁规则是开发设备就不会下载补丁,有知道的大神可以教教我么?或许我们可以互相探讨一下。(感谢@__Berial___ 指出开发设备要在代码中加入一句:Bugly.setIsDevelopmentDevice(this, true);)

上传补丁 log日志 成功修改错误

一大早我就过来尝试一下tinker强大的功能:新增方法,新增类和资源文件,接下来的修改代码我就不更新到githut,大家可以下载我的源码随便去搞搞研究一下

测试添加方法和新增一个类:

代码截图,添加一个方法和一个类 加载成功的log日志 加载成功的log日志

我们结束一下应用再进来,看到界面成功输出

最后输入我添加方法和添加一个类返回的字符拼接

在资源中新增一个图片,在布局中加入Imageview控件

修改布局文件,添加一个图片控件

在代码中找出该控件,并设置点击事件修改图片显示


代码修改控件显示的图片 运行出来的结果 运行出来的结果,图片已被更改

为了给真实的数据给你们,我也想亲手实践才好壮大我的胆去吹牛逼啊,所以我在官网拼命上传补丁,真心不容易,不过看到最终出来的效果,爽爽的

补丁啊补丁

注意坑:如果生成补丁的时候,提示的错误,不慌不忙,去检查一下混淆规则,我就是爱装逼,顺手把教程的混淆规则全拷上去了,我项目中没用到v4包,但是按道理应该没事吧,但是删除v4包的混淆就没事了

生成补丁的时候提示的错误 这里

接下来我们手工打道回府,哈哈、、如有错误请多多包涵,并教一下小弟,也可交流一下技术。

源码下载地址   git码云地址 兄弟们star一下再走呗

上一篇下一篇

猜你喜欢

热点阅读