黑马it培训logo

您现在位置:行业新闻> 教育> 浏览文章

  热修复的出现为实现秒级恢复故障创造了可能,java培训机构中也会给同学讲到这yi块内容,比如说什么是Java热修复?热修复的实现步骤有哪些,您可以来黑马先锋郑州运营中心进行免费试听课,把不会不懂的问题,交给我们老师,我们会给您详细的解答,下面直切回答。

  Java热修复是什么

  目前较火的热修复方案大致分为两派:阿里系:DeXposed、andfix:从底层二进制入手(C语言);腾讯系:tinker:从Java加载机制入手。今天主要讲解基于Java加载机制,来研究热修复的实现方法。

  安卓的类加载器在加载yi个类时会先从自身DexPathList对象中的Element数组中获取(Element[] dexElements)到对应的类,之后再加载。在for循环中,shou先遍历出来的是dex文件,然后再是从dex文件中获取class,所以,我们只要让修复好的class打包成yi个dex文件,放于Element数组的第yi个元素,这样就能保证获取到的class是zui新修复好的class。

什么是Java热修复?热修复的实现步骤

  热修复的三个实现步骤

  1、得到dex格式补丁。修复好有问题的Java文件(根据bug的实际情况修改代码即可);将Java文件编译成class文件;将class文件打包成dex文件(dx指令程序)。

  2、加载dex格式补丁。

  3、加载jar、apk、zip格式补丁。注意这类压缩包中必须放着yi个dex文件,而且对名字有要求,必须是classes.dex。

  Java-debug

  Java-debug-tool提供了多个trouble-shot命令,但杀手级的命令就两个,methodTrace和redefineClass。

  methodTrace命令,用于快速问题发现,可以做到不暂停JVM而获取到方法调试信息。基本格式:

  mt -c -m

  可选参数:-d -t -i -n -time -u等。

  redefineClass命令,可以做到不重启JVM而进行类字节码替换,实现方法热修复。当使用mt命令定位到问题之后,修复了的代码如果需要快速上线,那么就可以使用该命令。命令的使用格式为:

  rdf -p [className1:class1Path className1:class2Path]

  findClass命令,它可以在目标JVM找到你需要的类,并且告诉你类的具体信息,比如类是否已经加载?如果加载,那么加载类的classLoader是哪yi个等。这个命令可以允许你不输入类的全限定名,并可以允许你输入正则表达式去匹配类。

  如果你看了小编的解答,还是不懂,还是不清楚什么是Java热修复?热修复的实现步骤该怎么操作,您可以联系我们黑马的在线客服,郑州黑马java培训机构会给您真实的回答!


预约IT培训老师添加微信号:13121380081 领取免费VIP内部课程
关键字:java 修复 实现 步骤
黑马培训链接:http://www.heimaxf.com/jiaoyu/756
网友评论