热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

前天晚上教我的女票使用bugly实现版本更新的时候,我突然发现bugly更新版本了,并且增加了一个重大的更新,我立马就充满鸡血,立马想尝试一下。毕竟我前几个月研究了一下热更新能力了

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 下载博客一图片对比给大家参考一下

在开始讲解之前,可能有的人觉得很奇怪为什么要用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,避免因为插件版本的变更导致补丁包的生成的问题。

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 第一步

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’

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 第一注意点

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 第二注意点,有bug的应用根据这个id来找补丁

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 第三注意点

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

3、自定义Application

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 自定义application这里面不做任何操作,所有Application的代码都会放到ApplicationLike继承类当中

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 截图1
《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 截图2

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

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 算术错误

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 先制作一个有bug的app 注意:这个有bug的app就是官网所说的基准包了,即要修复的版本应用。

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 应用挂了

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 fix bug
《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 制作补丁

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 上传补丁
《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 log日志

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 成功修改错误

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

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 代码截图,添加一个方法和一个类
《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 加载成功的log日志

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 加载成功的log日志

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 最后输入我添加方法和添加一个类返回的字符拼接

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 修改布局文件,添加一个图片控件

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 代码修改控件显示的图片

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 运行出来的结果

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 运行出来的结果,图片已被更改

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 补丁啊补丁

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

《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 生成补丁的时候提示的错误
《手把手教你android 热更新代码实操之路,不用重新打包照样修复大bug》 这里

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

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


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 荣耀V8搭载基于Android 6.0的EMUI 4.1,功能介绍及用户体验
    本文介绍了荣耀V8搭载基于Android 6.0的EMUI 4.1的功能,包括色温调节、护眼模式、智灵键和学生模式等。荣耀V8在色温调节方面提供了多种选择,用户可以根据自己的喜好进行调节。护眼模式能够减少屏幕蓝光辐射,预防眼部疲劳。智灵键位于机身侧面,用户可以自定义其功能,方便快捷操作。学生模式需要密码才能开启或关闭,为家长提供了更好的控制。通过本文,读者可以了解荣耀V8的功能特点及用户体验。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
author-avatar
爱的话心情_196
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有