android 热修复视频,Android热修复

所谓热修复,简单来说就是不以下载新版本apk的方式来修改应用的bug,而是在应用启动后从服务器下拉补丁包实现动态修复bug。所以在应用出现bug后,我们只需要打一个补丁,用户无需下载安装新的版本。主要是针对一些紧急的bug的修复。

d90798fefbef

常规修复

d90798fefbef

热修复

修复bug,首先我们要能够获取应用出现的bug。而应用是安装在用户手中的,开发人员是无法直接获取的,所以我们要收集用户端出现的bug。有一些三方的开源库已经实现了改功能,如:腾讯的buglay,这里我们自己简单实现一下。

收集异常

如果我们要收集,那么首先能够捕获到异常,然后现将异常信息保存在本地文件中,等应用再次启动联网后上传到服务器即可。

注意:我们不仅保存异常的信息,还应该将应用的一些信息,如:版本号等;手机信息,如:手机型号,系统版本等保存,因为应用在不同型号的手机上可能存在差异化。这样更有利于我们的调试。

Thread.UncaughtExceptionHandler

这是系统给我们提供的一个接口,如果我们想全局捕获异常,只要实现该接口即可。

下面看一下具体的代码:

public class ExceptionCrashHandler implements Thread.UncaughtExceptionHandler {

private static ExceptionCrashHandler instance;

private Context mContext;

private Thread.UncaughtExceptionHandler mDefaultExceptionHandler;

//构造方法私有化

private ExceptionCrashHandler() {}

/**

* 获取实例

* @return

*/

public static ExceptionCrashHandler getInstance() {

if (instance == null) {

synchronized (ExceptionCrashHandler.class) {

if (instance == null) {

instance = new ExceptionCrashHandler();

}

}

}

return instance;

}

/**

* 初始化操作

* @param context

*/

public void init(Context context) {

this.mContext = context;

//设置全局捕获异常类为本类

Thread.currentThread().setUncaughtExceptionHandler(this);

//获取系统默认的全局异常捕获类,用于输出异常信息

mDefaultExceptionHandler = Thread.currentThread().getDefaultUncaughtExceptionHandler();

}

/**

* 全局捕获异常

*/

@Override

public void uncaughtException(Thread thread, Throwable throwable) {

mDefaultExceptionHandler.uncaughtException(thread, throwable);//系统默认的处理(打印异常信息)

//保存信息到文件,等应用下次启动上线后上传到服务器

saveInfoToSd(throwable);

}

这里我们采用的是单例模式,实现UncaughtExceptionHandler接口需要重写uncaughtException(Thread thread, Throwable throwable) 方法,该方法在出现异常时,自动回调。我们需要在里面实现我们的逻辑,主要是将异常的信息保存在本地。我们还调用了mDefaultExceptionHandler.uncaughtException()方法,只要是执行默认的异常处理,方便我们的调试。否则我们在后台的日志中就看不到异常输出了。

简单测试

工具类已经写好,我们简单测试一下,页面上有一个按钮,当点击按钮时执行下面的代码:

public void btTest(View view){

int num = 2 / 0;//该代码一定会抛出异常。

}

d90798fefbef

阿里热修复-AndFix

1.添加依赖

2.使用

patchManager = new PatchManager(context);

patchManager.init(appversion);

patchManager.loadPatch();//加载之前的补丁

patchManager.addPatch(path);//添加新的补丁

path:是补丁包的路径

生成补丁包

andfix给我们提供了生成补丁包的工具

d90798fefbef

通过命令生成补丁包

apkpatch.bat -f -t -o -k -p -a -e

-f : 没有Bug的新版本apk

-t : 有bug的旧版本apk

-o : 生成的补丁文件所放的文件夹

-k : 签名打包密钥

-p : 签名打包密钥密码

-a : 签名密钥别名

-e : 签名别名密码(这样一般和密钥密码一致)

d90798fefbef

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

text 两端对齐 小程序_leetcode 68 文本左右对齐

给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 填…

for循环如果先--_乐字节Java循环:循环控制和嵌套循环

乐字节小乐上次讲完了Java反射,接下来小乐给大家讲述Java循环。循环有以下四部分:Java循环一、循环控制1. do..while直到型 ( 先执行后判断) ,结构为:先执行循环体,后判断布尔表达式。循环体至少执行一次其流程图如下:2. for灵活的…

input框传值是怎么才能是整形_做了这些项目,到底多久才能化妆?

要说变美有两招最好用:一是化妆,二是整形。化妆能让长相普通的妹子变个大美妞,但程序繁琐的很,手残宝宝都表示好心累。整形就不一样了,不用左一层右一层的涂粉底神马的,绝对是手残党的福利,最最…

html纵向固定导航菜单代码,jQuery和css3响应式垂直固定导航菜单插件

这是一款非常实用的jQuery和css3响应式垂直固定导航菜单插件。当你的页面上有很多的内容,用户需要花费大量的时间才能找到他们想要的内容。这个垂直固定导航菜单插件能够为页面提供一个内容预览,使用户能非常轻松的找到他们需要的内容。HTML结构导航菜单…

单点登录 cas 设置回调地址_单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?...

实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下两个:1、存储信任 ;2、服务器生产~验证信任 ; 3、拿到服务器再次验证。单点登录的常见落地实现技术有哪…

python 长度queue_python:常见的数据结构

​ Python中常见的数据结构可以统称为容器。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。线性数据结构分类:栈(stack)--先进后出、 队列(queue)-先进先出、双端队列(deque…

纯java pdf转换成html,java pdf转换html代码

java pdf转换html代码[2021-02-03 00:56:42] 简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#xff1a…

tina中信号带宽_如何评测示波器带宽

示波器最重要的单一特性,即带宽在频率域提供范围标示。带宽以Hz衡量,根据频率决定信号范围,以便能精确显示及进行测试。带宽不足,则示波器将不能显示出实际信号的准确表现。例如,信号的幅度也许会不准确、边缘也许会不…

esc指令检查打印状态_【行业知识分享】八千字解读ESC系统

汽车电子稳定控制系统ESC(Electronic StabilityController)是一个主动安全控制系统,通过传感器监控车辆自身行驶状态,在车辆紧急躲避障碍物、转弯等容易出现不稳定状况时,以及在转向过度或转向不足情况下,利用动力系统干预及制动系…

html滚动字幕如何向下移动,按向下键的同时,菜单选项向下移动,浏览器右边的滚动条也跟着跑怎么办。这个bug怎么改...

是事件冒泡的锅吗?若果是,cancelbubble加到哪一行下面?若果不是应该怎么改.下拉菜单body,ul,li{ margin:0; padding:0; font-size:13px;}ul,li{list-style:none;}#divselect{width:186px; margin:80px auto; position:relative; z-index:10000;}#divsel…

c语言中文网 vc++6.0下载量_【新手必看】C语言开发环境,请查收!

C语言开发环境的选择,貌似是告诉我们,工欲善其事,必先利其器。01、Visual StudioVisual Studio(简称 VS),它是 Windows 下的标准 IDE,VS系列为IDE(集成开发环境)&#xf…

hssfworkbook.write 生成文件 数据丢失_电脑文件丢失了,数据恢复我只用这一个软件!...

电脑使用久了,遇到硬盘数据丢失或者误删乃是常见之事。所以这样的事情发生之时,最重要的是找到一个明智的解决方法,切忌浮躁,一个不小心,可能造成更严重的后果。据不完全统计,当电脑文件丢失后,…

html如何让图片跟字体重叠,CSS设置图片与文字的间距

【实例介绍】CSS设置图片与文字的间距希望图片本身与文字有一定的距离只需要给标记添加margin属性即可。margin属性包括margin.top、margin-right,margin-bottom、margin—left、margin。属性margin可以用来同时设置图片的四边外边距,而其他的…

查看so库中是否有某个定义_论Linux ELF中动态库符号重定义利用 属性/Linker 做隐藏的手法...

假如libgetthree.so libgetseven.so , 同时这两个so内部都用了internal_do_calculation()函数,并且各自定义了自己的internal_do_calculation()的实现,你会想当然的认为他们各自不影响,libgetthree和libgetseven会分别用自己的internal_do_ca…

android 手写签批_Android手写签批功能实现(适配Android6

Android手写签批功能的实现在于三个点,mupdf,偏移量的计算,droidText0.5.jar实际步骤:使用muPdf将PDF加载出来弹出透明的popwindow,popWindow使用画板(一般签批我们都会用有笔锋的钢笔或者毛笔)将签批好的图片生成Bitm…

华为新系统鸿蒙能互通吗,「连接」万物的鸿蒙,能拯救华为手机吗?

为 IoT 而生的鸿蒙操作系统,其优势与特点几乎都是围绕「万物互联」展开的。在曝光两年之后,华为的鸿蒙系统终于正式和用户见面了。6 月 2 日,华为鸿蒙操作系统及华为全场景新品发布会开启,正式推出 HarmonyOS 2.0,并发…

c++中outtextxy_第12章 坚持一百秒(《C和C++游戏趣味编程》配套教学视频)

本章我们将编写坚持一百秒游戏,玩家通过鼠标控制火箭躲避一架UFO和越来越多的反弹子弹,效果如图所示。首先学习图片的导入和显示,并利用结构体实现一颗反弹的子弹;然后学习面向对象编程的知识,利用类和对象实现新版本的…

update yum 到指定版本_centos使用yum update升级到指定小版本

参考: https://www.cnblogs.com/configure/p/10918189.html提供一个搜狐镜像的7.6的yum源:[C7.6.1810-base]nameCentOS-7.6.1810 - Basebaseurlhttp://mirrors.sohu.com/centos/7.6.1810/os/$basearch/gpgcheck1gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-K…

腾讯移动分析+html5,FAQ · 腾讯移动分析 文档

1. 常见问题1.1. 产品问题Q1:如何联系技术支持?目前问题统一在工单系统进行反馈,麻烦填写详细的信息,方便技术支持定位。Q2:腾讯移动分析是否付费?腾讯移动分析的现有功能都是免费的。Q3:自定义事件个数是否有限制?目前…

赛码行测题库_行测数字推理题库

实用文案 数字推理题 725 道详解 【 1 】 7 , 9 , -1 , 5 , ( ) A 、 4 ; B 、 2 ; C 、 -1 ; D 、 -3 分析 : 选 D , 7+9=16 ; 9+ ( -1 ) =8 ; ( -1 ) +5=4 ; 5+ ( -3 ) =2 , 16 , 8 , 4 , 2 等 比 【 2 】 3 , 2 , 5/3 , 3/2 , ( ) A 、 1/4</