AndFix,全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 6.0,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文件是以 .apatch 结尾的文件。原理AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法;直接在native层
一直关注App的修复的技术发展,之前做的应用也没用使用到什么修复开源框架。在App的修复框架没有流行之前,做的应用上线后发现一个小小的Bug,就要马上发一个新的版本。我亲身经历过一周发两个版本,真的折腾用户的节奏~~所以,要开始考虑引入修复。下面记录使用开源框架阿里巴巴的AndFix过程。实现的原理这里说的不是修复怎么实现修bug的原理,这里说的是怎么使用AndFix。如果你想了解更多的
原创 2021-05-22 09:57:54
589阅读
前言大家应该看过不少人分享的面试成功的面经,是不是觉得自己“说不定也可以”呢?这里重提一个理论:幸存者偏差。当取得资讯的渠道,仅来自于幸存者时(因为死人不会说话),此资讯可能会存在与实际情况不同的偏差。所以,今天要分享的是凉经。第一章:修复1、AOT/JIT & dexopt 与dex2oat 2、修复常见问题之CLASS_ISPREVERIFIED 问题 3、修复原理 4、Tink
导语什么是修复修复又称热补丁,一般是用事先定义好的接口,从网络下载代码并更新客户端代码,从而在用户无感知、也无需重装App的情况下,实现动态修复或动态更新。这样带来的优势就是成本低、效率高,快速作用,节省应用发布时间,缩短开发周期,降低开发成本;方便数据统计和测试反馈,有利于更好地改进App。 正常的流程:修复流程:修复特点:无需重新发版,实时高效修复;用户无感知修复,无需下
阿里云修复官网地址移动修复(Mobile Hotfix)是阿里云提供的全平台App修复服务方案。产品基于阿里巴巴首创hotpatch技术,提供最细粒度修复能力,让您无需等待实时修复应用线上问题。主要解决问题产品已有功能,出现问题,无需发版,即可发补丁,实时修复。存量功能微调HotFix总体来说最大的优势在于:补丁即时生效,不需要应用重启;补丁包同样采用差量技术,生成的PATCH体积小;对
转载 2023-09-13 21:24:35
148阅读
修复说白了就是”即时无感打补丁”,比如你们公司上线一个app,用户反应有重大bug,需要紧急修复。2015年以来,Android开发领域里对修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案.如果按照通常做法,那就是程序猿加班搞定bug,然后 测试 ,重新打包并发布。这样带来的问题就是成本高,效率低。于是,修复就应运而生.一般通过事先设定的接口从网上下载无Bug的代码来替换有B
一直觉得Android修复深不可测,即使网上有很多的介绍,但是没有自己动手一下,也很难理解。今天终于自己参考了各种文档,写了一个简单的Demo 并成功实现,所以和大家分享一下。概念的介绍就不再赘述了。1. Demo 简介一个类Cat, 里面仅实现了 say方法,仅返回一个 “汪汪汪”的String, 显然这是个bug.我们需要做的就是在不重新安装apk 的情况下(当然这里也是模拟),达到修复
转载 2023-07-26 16:45:16
49阅读
Tinker 腾讯开源修复框架,https://github.com/Tencent/tinker 已知的的问题 Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件(1.9.0支持新增非export的Activity); 由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码; 在Android
前言 说起修复,已经是目前Android开发必备技能。我所了解的一种实现方式就是类加载方案,即 dex 插桩,这种思路在插件化中也会用到。除此之外,还有底层替换方案,即修改替换 ArtMethod。采用类加载方案的主要是以腾讯系为主,包括微信的 Tinker、饿了么的 Amigo;采用底层替换方案主要是阿里系的 AndFix 等。今天我将围绕修复实现原理以及常见的修复方式来讲解热修复。目录
转载 2023-05-26 15:51:41
1557阅读
一 .修复原理       最近一段时间因为需求变化较大,觉得发版比较麻烦,就了解了一下修复技术。它更多适用于刚发出去的包有Bug需要紧急修复的时候会用到。即以修复Bug的角度出发,在不需要二次安装下修复已知的Bug。了解完修复应用场景后就得了解它的原理。首先要认识几个关键的词。ClassLoader:用于Android中类的加载
本篇博客是笔者第一次接触修复的学习笔记,主要分享内容:1. 什么是android修复?2. 如何实现修复?目前有什么方案?3. 修复背后的原理?Android修复是啥?常见的使用场景刚发布的应用出现闪退、ANR等bug,及时修复 。及时推送一些小的功能给用户使用。优势所在无需重新发布,实时高效修复bug用户无需操作,无需下载新的应用修复成功率高,降低损失修复方案和背后的原理修复主要
转载 2023-07-11 18:48:30
101阅读
前言去年写过一篇修复的文章,那时候刚开始接触,照猫画虎画的还算比较成功。但是那种修复需要重新启动APP,也就是在JAVA层实现的修复。我们知道目前Android主流的修复还有在Native层实现修复的,就是在Native层替换方法,不用重新启动APP。今天写了个Demo,下面主要分享一下它的主要原理。1、修复目前,修复的原理主要有两种技术,一是不需要启动APP就能实现修复,在Native层
 阿里Dexposed -- native解决方案原理:直接在native层进行方法的结构体信息对换,从而实现完美的方法新旧替换,从而实现修复功能  他的思想完全来源于Xposed框架,完美诠释了AOP编程,这里用到最核心的知识点就是在native层获取到指定方法的结构体,然后改变他的nativeFunc字段值,而这个值就是可以指定这个方法对应的native函数指针,所以先从Java层
简述Android开发技术修复原理以及使用代码示例 修复(HotFix)是指在运行时修改代码,以达到修复应用程序bug的目的,而不需要重新发布新版本的应用程序。修复可以使得应用程序的修复时间缩短,用户无需下载新版本的应用程序,也能及时修复应用程序的bug,提升用户体验。 修复的原理是通过ClassLoader实现的。ClassLoader是Java虚拟机(JVM)加载类的机制,Androi
转载 2023-07-06 14:25:46
143阅读
一、背景调研了一下目前主流的修复架构主要是两种,底层替换方案 底层替换方案限制颇多,但时效性最好,加载轻快,立即见效 阿里系的AndFix、Sophix 类加载方案 类加载方案时效性差,需要重新冷启动才能见效,但修复范围广,限制少 QZone超级补丁、微信Tinker其一是类和资源整体替换方案,QZone超级补丁、微信Tinker就是这种。利用DexClassLoader在应用启动阶段替换需要
转载 2023-07-26 16:49:38
65阅读
什么是Android修复技术简单来说就是不重新安装apk的情况下,通过补丁,修复bug正常开发流程修复开发流程目前主流的修复技术框架阿里系的: Andfix、Hotfix、Sophix腾讯系的:QQ空间超级补丁技术、Qfix、Tinker(微信)美团系的:Robust饿了么的:Amigo关于修复的技术积淀最开始 ,是手淘基于Xposed进行了改进,产生了针对Android Dalvik虚拟
上篇讲到代码修复技术分为两类:底层替换修复和类加载修复。这篇主要是对这两者底层原理的学习。一、底层替换修复原理1. 即时生效的Andfix简单概括下Andfix:众多修复技术中,Andfix做到了非常炫酷的即时生效功能,无需重启应用就可以修复类中的方法,同时他也存在无法适配某些机型的缺点。他的核心方法在于replaceMethod函数中:我们来看一下Andfix修复的大概流程:上面能看到
很早之前就想深入的研究和学习一下修复,由于时间的原因一直拖着,现在才执笔弄起来。一. 实现套路总所周知,目前修复的实现套路基本上离不开以下两种:实现套路描述代表底层替换方案底层替换方案限制颇多,但时效性最好,加载轻快,立即见效阿里系的AndFix、Sophix类加载方案类加载方案时效性差,需要重新冷启动才能见效,但修复范围广,限制少QZone超级补丁、微信Tinker二. 方案对比分析虽然
什么是修复呢?修复是针对修复app中的bug的场景来定义的。 假设,现在用户使用的app有个方法报错了,那么解决这个问题,目前有2种方式: 一:直接下载整个最新app重新安装;二:使用增量更新的方式下载patch包合成新apk,重新安装; 虽然增量更新的体验更好,但是这2种方式的共同问题是都需要重新安装。那么,有没有一种方式不用重新安装app,在用户不知不觉中就修复了bug呢? 修复
接触这一行也有很久了,从开始的实习到带团队,中间接触过很多人,前不久身边刚好有人去面试了阿里,抖音等这些公司还成功的面试上了,现在来分享一下面试前需要准备的知识点很多人去面试之前,不知道会问到那些知识,也不知道要做什么准备,今天我们就来整理一下要去面试,并且成功拿到offer你需要懂的什么技能,希望对大家有所帮助第一章:修复1、AOT/JIT & dexopt 与dex2oat 2、
转载 10月前
38阅读
  • 1
  • 2
  • 3
  • 4
  • 5