首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户6296428的专栏

    有赞移动修复平台建设

    作者:李子 部门:电商技术中心 一、背景 1.1 为什么要搭建修复平台 随着公司的快速发展,需求的快速增加,App迭代也越来越频繁,如果移动应用出现问题,不仅仅影响用户体验,还会影响公司口碑,甚至可能造成资损 下游则是 C 用户,作为应用发布生命周期的最后一环,为所有应用补全了修复 和 灰度分发相关的能力。 同时为了讲清楚修复平台,本文以Android为例按照修过程,顺序介绍。 MBD 操作拉取分支修复问题 移动团队达到一定规模后,需要同步制定相应的分支规范,其中修相关的分支管理需要考虑两个问题: 1. 验证补丁首先要考虑怎么方便开发者使用,步骤越少越快越好,因为通常发布修本身就是非常紧急的问题,由于有赞内部有移动助手App(支持常用的开发功能,开发环境切换,抓包等) 移动同学都会使用,因此可以把修验证功能放在移动助手 有赞修复平台,是结合有赞移动团队实际开发过程遇到的问题,逐步解决逐渐完善的,读者可以结合自身团队打造合适的修复管理平台,希望有赞修复平台的建设经验可以对你有所帮助。

    1.6K30发布于 2020-08-24
  • 移动修复工具:线上崩溃的分钟级手术刀

    传统工具缺乏二进制校验,68%的团队未审计修包安全性(OWASP移动安全报告)。 3. 分钟级修复手术室 理想系统需跳过应用商店审批: 下发补丁包秒级生效(Android/iOS双支持) 自动灰度验证(5%设备通过后全量推送) 崩溃修复时效从3天→19分钟(Tinker实测) AI调度官: NLP解析“紧急修复支付模块崩溃”自动生成补丁工单 预测修包对启动时间的影响(误差<±5%) 本土化闪电战: 深度适配《移动互联网应用程序备案管理办法》 ⚠️ 协同需求: Android修需Tinker支持 iOS补丁依赖JSPatch ⚡ Tinker - Android修引擎✅ 修复统治力: 无感补丁下发:用户无需重启APP生效关键修复 类级别替换:支持新增字段 ⚡ 黄金作战公式板栗看板+Tinker+阿里HotFix= 线上崩溃修复提速80倍 安全漏洞封堵率100% 性能回退趋近零风险 行业铁律(信通院2025移动安全标准): 修复生效时效需<

    34910编辑于 2025-07-24
  • 来自专栏小陈飞砖

    修复

    文章目录 概述: 一、底层方法替换 原理: 二、类加载 原理: 1、java类加载机制 2、Android类加载机制 3、修复实现原理 二、主流更新框架介绍 1、Tinker 3、AndFix 4、 Nuwa 参考1 概述: 修复有两种方式:一方面是阿里系为代表的底层方法替换,另一方面是以腾讯系为代表的类加载方案。 前者支持立即生效,但是限制比较多;后者必须冷启动生效,相对较稳定,修复范围广。之前分析过微信的修复框架 Tinker 即属于后者, 《Tinker 接入及源码分析》。 本篇文章主要分析以 AndFix 为代表的底层方法替换方案,并且实现了《深入探索 Android 修复技术原理》中提到的方法替换新方案。 一、底层方法替换 原理: 参考 方法替换是 AndFix 的修复方案的关键,虚拟机在加载一个类的时候会将类中方法解析成 ArtMethod 结构体,结构体中保存着一些运行时的必要信息以及需要执行的指令指针地址

    1.3K20编辑于 2022-06-25
  • 来自专栏Android技术分享

    Flutter 修复,生态、跨计划公布

    以下几点是我们今年会着重关注的: 核心和基础 易用性 生态系统 支持移动之外的平台 动态更新 工具链 我们的计划会根据大家的反馈以及新的市场变化来做调整,这份路线图里的内容不尽然是我们一定会完成的工作 关注领域 核心和基础 我们的首要任务依然是为 Flutter 现有的核心和基础添砖加瓦: 修复 Bug:Bug 修复的优先级主要是基于 Issue 下的互动数量,比如 GitHub 自带的一些针对 Issue 移动之外的支持 我们将继续把 Flutter 拓展到更多形态的终端,以实现我们的目标:构建一个便携 UI 工具包,在任何需要的地方画出每一帧像素。 动态更新 Dart 语言平台为 Flutter 应用开发提供了重载(Hot Reload)的特性,让开发者们无需重新部署就可以把代码推送到应用中去。 Android 上的动态修复:让开发者直接将代码更新从服务器推送到 Android 应用里; 动态载入:让应用里不常用的部分延迟加载。

    3.4K20发布于 2019-04-17
  • 来自专栏刘望舒

    修复原理之修复框架对比和代码修复

    前言 在Android应用开发中,修复技术被越来越多的开发者所使用,也出现了很多修复框架,比如:AndFix、Tinker、Dexposed和Nuwa等等。 如果只是会这些修复框架的使用那意义并不大,我们还需要了解它们的原理,这样不管修复框架如何变化,只要基本原理不变,我们就可以很快的掌握它们。 这一个系列不会对某些修复框架源码进行解析,而是讲解热修复框架的通用原理。 ,分别是代码修复、资源修复和动态链接库修复,其中每个核心技术又有很多不同的技术方案,每个技术方案又有不同的实现,另外这些修复框架仍在不断的更新迭代中,可见修复框架的技术实现是繁多可变的。 部分修复框架的对比如下表所示。

    1.7K40发布于 2018-03-26
  • 来自专栏韩曙亮的移动开发专栏

    【Android Gradle 插件】修复实现 ① ( Android 修复系统组成 | 修复工作流程 | 修复使用到的技术 | 修复框架选择注意事项 )

    文章目录 一、Android 修复系统组成 二、修复工作流程 三、修复使用到的技术 四、修复框架选择注意事项 一、Android 修复系统组成 ---- Android 修复系统组成 : 手机 SDK : 在手机中集成一个 SDK , 是 Android 手机修复支持组件 , 借助该组件实现动态加载外部修复包 ( 字节码文件 ) ; 后端服务器 : 在服务器中 处理 手机 SDK 是一个 Java / .NET / PHP 开发的 Web 应用 ; 二、修复工作流程 ---- 修复工作流程 : 首先 , 开发者发现 BUG , 使用 Gradle 插件生成 修复包 ; 然后 , 开发者 将修复包上传到 服务器 , 由服务器对修复修复包进行统一的管理 ; 最后 , 手机的 SDK 每次启动都会到 服务器 检查是否有最新的修复包 , 如果有则下载最新的修复包 , 并在本地配置该修复包 ; NDK 相关技术 : 需要 编译生成 so 动态库 ; 四、修复框架选择注意事项 ---- 挑选修复框架时 , 一定要要选择一直保持更新的框架 ; 凡是使用到 插件化 , 修复 , 加固 等需要

    82510编辑于 2023-03-30
  • 来自专栏深入理解Android

    Android修复学习之旅开篇——修复概述

    Android修复技术无疑是Android领域近年来最火热的技术之一,同时也涌现了各种层出不穷的实现方案,如QQ空间补丁方案、阿里AndFix以及微信Tinker等等,从本篇博客开始,计划写一个系列博客专门介绍修复的相关内容 为什么会出现修复? 简单来说,以前出现bug的时候,都要重新发包对bug进行修复,这样带来的缺点是明显的,需要用户重新升级app,覆盖率太慢,成本太高。 所以就出现了修复技术,通过打补丁的方式,通过从服务器下载补丁包,然后对有问题的类中出问题的方法,进行替换,优点是用户无感知修复,无需下载新的应用,代价小。 修复框架简单对比 接下来先对几个修复框架进行简单的介绍,后续将分别单独开一篇博客对其进行详细分析。 1.QQ空间修复补丁技术 QQ空间修复的方案是基于dex分包方案的基础之上,简单来说就是把BUG方法修复以后,重新生成一个dex,从服务器下载之后,将其插入到dexElements数组的最前面,

    57610编辑于 2022-06-22
  • 来自专栏小程序类

    移动四种更新技术对比

    1、QZone的更新方案QZone方案推出比较早,对修复技术的推进很有启发意义。它是基于Android dex分包方案,最关键的技术点在于利用字节码插桩的方式绕开了预校验问题。 这种方案只支持App重启之后才能修复,也就是App在运行的时候加载到了补丁包也不能及时修复,需要App重新启动的时候才会修复,这是因为QZone方案是基于类加载区需要重新加载补丁类才能实现的,所以必须进行重启才能修复 此外,QZone方案只支持到类结构本身代码层面的修复,不支持资源的修复。 缺点需要下次启动才修复。4、FinClip 小程序容器更新方案虽说h5与小程序均能帮助 Hybrid 应用实现更新,但鉴于小程序优于h5的性能,这里仅为大家介绍基于小程序容器的更新方案。 FinClip是近几年大的小程序容器技术,App 通过连接后台,从后台拉取小程序包,通过小程序容器运行,可以帮助「Native+小程序」混合开发应用实现更新原理:(请技术同学帮忙校正/补充)实现了小程序的容器

    2.1K20编辑于 2022-08-15
  • 来自专栏Android开发指南

    Android修复AndFix

    修复主要用来修复代码、修复bug、添加独立的功能,他的原理主要是操作PathClassLoader、DexClassLoader。 那么这样的话,就可以在这个dexElements中去做一些事情,比如,在这个数组的第一个元素放置我们的patch.jar,里面包含修复过的类,这样的话,当遍历findClass的时候,我们修复的类就会被查找到 优点: 重大bug,需要紧急修复 可以下次迭代修复的bug 影响用户体验的行为 无需重启 缺点: 无法添加新类(内部类也不行)和新的字段、新的方法? 资源文件无法替换   试了下换原有的图片可以,但是新增的不行 不能修改xml布局文件   不能 加固后的包补丁无法使用,如果要加固,需要加固前的包来生成补丁,不过这样生成的补丁也很容易破解 不能对同一个方法修复两次

    91880发布于 2018-05-14
  • 来自专栏Android补给站

    Android 修复解析

    5 修复和插件化 插件化和修复的原理,都是动态加载 dex/apk 中的类/资源,两者的目的不同。插件化目标在于加载 activity 等组件,达到动态下发组件的功能,修复目标在修复已有的问题。 而修复重在解决替换已有的有问题的类/方法/资源等。 其中最重要的是方法和类的替换,所以有不少修复框架只做了方法和类的替换,而没有对资源和 so 进行处理。 9 主流的修复框架对比 这里选取几个比较主流的修复框架进行对比 ? 上面是修复框架的一些对比,如果按照实现 dex 修复的原理来划分的话,大概能分成下面几种: native hook Andfix dex 插桩 QzoneNuwa InstantRun Robust Aceso 全量替换 dex Tinker 混合方案 Sophix 下面对这几种修复的方案进行详细分析。

    1.2K41发布于 2019-08-01
  • 来自专栏韩曙亮的移动开发专栏

    【Android 修复修复原理 ( 修复框架简介 | 将 Java 字节码文件打包到 Dex 文件 )

    文章目录 一、 修复框架简介 1、类替换 2、so 替换 3、资源替换 4、全平台支持 5、生效时间 6、性能损耗 7、总结 二、 将 Java 字节码文件打包到 Dex 文件 一、 修复框架简介 ---- 修复框架 : 修复框架有很多 , 只选择几个典型的进行对比研究 ; Tinker : 微信 ; QZone : Q 空间 ; AndFix : 阿里 ; Robust : 美团 ; 下面从几个方面的功能及性能分析上述四个修复框架 ; Tinker , QZone 是以 Java 层作为修复的对象 ; AndFix , Robust 修复框架不支持类替换 , 使用的是定点替换修复的机制 ; AndFix , Robust 是以 , 即时生效 ; 6、性能损耗 Tinker , AndFix , Robust 性能损耗较小 ; QZone 性能损耗较大 ; 7、总结 开源的修复框架中 , 综合所有的要素 , 推荐使用 Tinker 修复框架 , 除了即时生效的时效性之外 , 其它性能参数都可以接受 ; 二、 将 Java 字节码文件打包到 Dex 文件 ---- 程序出现 BUG , 修复好之后 , 发布修复包到服务器中 ,

    1K20编辑于 2023-03-29
  • 来自专栏Android开发与分享

    【Android】修复——Tinker(入门)

    千辛万苦上开发了一个版本,好不容易上线了,突然发现了一个严重bug需要进行紧急修复,怎么办?难道又要重新打包App、测试,发布新个版本?就为了修改一两行的代码? 莫慌,这种问题其实可以分分钟解决。 如果你学会了这项黑科技——修复。 在用户使用App的时候,不知不觉,这个Bug就被修复了。 莫慌 修复:修复(也称热补丁、修复补丁,英语:hotfix)是一种包含信息的独立的累积更新包,通常表现为一个或多个文件。这被用来解决软件产品的问题(例如一个程序错误)。 就这样,整个修复的流程就完成了。 注意:一定要关闭后打开,修复才会生效。 ? V2 Scheme的walle; 若不同渠道存在功能上的差异,建议将差异部分放于单独的dex或采用相同代码不同配置方式实现; 已通过Walle实现:【Android】Walle多渠道打包&Tinker修复

    3.7K120发布于 2018-05-18
  • 来自专栏向治洪

    Android修复技术总结

    本篇重点讲解热修复,并对当前流行的修复技术做一个简单的总结。 修复 什么是修复? 简单来讲,为了修复线上问题而提出的修补方案,程序修补过程无需重新发版! 而修复的开发流程显得更加灵活,无需重新发版,实时高效修复,无需下载新的应用,代价小,最重要的是及时的修复了bug。 ? 当前热门的修复技术 当前热门的修复技术有: QQ空间超级补丁、微信[Tinker] 阿里的Sophix、阿里Hotfix 饿了么Amigo 美团Robust 360RePlugin … 修复技术 修复方案总结 代码修复有两大主要方案:一种是阿里系的底层替换方案,另一种是腾讯系的类加载方案。底层替换方案限制颇多,但时效性最好,加载轻快,立即见效。 资源修复 在Android修复的过程中,不仅需要对错误的代码进行修复,还需要对资源文件进行修复。目前市面上的资源修复方案基本上都是参考Instant Run的实现。

    1.6K60发布于 2018-02-06
  • 来自专栏ppjun专栏

    Dex修复原理

    市场上修复有两种一种是基于multidex的更新修复(比如tinker),另外一种是native hook(比如dexposed),tinker这种是反射获取dexelements数组,修改dex加载顺序 修复包括两个部分 从远程端下载修复好bug的补丁包 客户安装补丁包,加载补丁包的类。 使用android�类加载器,在类没被加载到模拟器前(一般在application修复,如果类已加载,再去记载相同的类就无效了)然后先加载补丁dex,再去加载原来的app里面的dex,因为加载过的类 不会被加载第二次,从而做到修复。 以上就是multidex修复的原理。

    1.4K20发布于 2018-09-05
  • 来自专栏Android机动车

    Android修复简单总结

    Dex修复 Dex修复分为部署底层替换与冷部署重启 1.1 部署底层替换 直接在native虚拟机层替换原有方法,是在原来类的基础上进行修改。 SO库修复 3.1 SO实时生效 1.Dalvik虚拟机下动态注册的native方法需实时修复,必须对so文件改名 2.静态注册的native方法的实时修复,因为无法得知so库中哪些native方法发生了变更 ,很难做到修复 3.对于新增动态注册的native方法,需在dex中增加相应的Java方法,否则加载so文件时报NoSuchMethodError,而增加Java方法是无法做到实时生效修复,所以so库新增动态注册的 native方法也无法做到实时生效修复 3.2 SO冷部署重启生效 1. 反射注入方式将补丁SO插入到nativeLibraryDirectories/nativeLibraryPathElements数组的最前面,达到优先加载补丁SO的目的,从而实现SO修复

    79220发布于 2018-08-03
  • 来自专栏刘望舒

    手动实现Android修复

    修复时用来指定新的dex optimizedDirectory:dex文件的输出目录(因为在加载jar/apk/zip等压缩格式的程序文件时会解压出其中的dex文件,该目录就是专门用于存放这些被解压出来的 2.修复的实现方法 加载class会使用BaseDexClassLoader,在加载时,会遍历文件下的element,并从element中获取dex文件 方案 ,class文件在dex里面 , 找到dex 的方法是遍历数组 , 那么修复的原理, 就是将改好bug的dex文件放进集合的头部, 这样遍历时会首先遍历修复好的dex并找到修复好的类 . 3.手撸一个修复Demo 在了解了大致的修复过程之后,我们要准备好以下几个东西: 带有bug的apk,并且可以获取到dex文件来修复修复bug的dex文件 因为修复工作是需要隐秘的进行的 , 毕竟有 至此, 在Splash界面的检测时会见到到目标的dex文件, 返回true , 会开始进行修复(拼接Element数组)的操作, 再次进入到主界面当然就不会报错了.

    1K50发布于 2018-07-30
  • 来自专栏韩曙亮的移动开发专栏

    【Android 修复】Tinker 简介

    是核心库 , 一些工具类放在该库中 ; 对应构建脚本的 com.tencent.tinker:tinker-android-lib:1.9.1 依赖 ; tinker-android-loader 修复

    96120编辑于 2023-03-29
  • 来自专栏太阳影的学习记录

    HotPatcher修复的使用

    主要是研究如何使用HotPatcher打包和修复。 打包完成之后就可以将打出来的.pak文件放到release版本的目录下实现手动更: UE在启动后会自动挂载这个路径的pak。除了这个路径还有另外几个路径,但是优先级不一样。 . /LuaProto.exe -log运行游戏,可以在命令行看到修改Lua脚本后打印出来的内容,同时可以看到地图的修改: 参考 UE4 资源更打包工具 HotPatcher UE4更新:HotPatcher

    1.4K10发布于 2021-10-15
  • 来自专栏码农帮派

    Android中的修复

    主流的修复方案: 1. 底层替换 - AndFix 在运行时替换掉底层有Bug的方法的地址,将他们的指针指向修复之后的方法的内存地址,从而实现修复的功能。 类加载方案 - Tinker、QZone 利用Android中类加载机制中的dexElements,将修复之后的dex文件放置到dexElements前面,屏蔽掉有问题的dex文件的加载,从而实现修复的功能 类加载方案时效性较差,因为Java的双亲委派机制的原因,首次打开不会重复加载类,需要再次打开才能生效,修复范围广,实现简单,易于控制。 动态加载dex实现修复 ? ,从而实现dex修复。 Tinker修复原理 ? 修复的实现过程: 1. 使用bsdiff对新旧apk做差异化分析,获得差异化产物patch.apk补丁文件。

    2.7K10发布于 2021-02-25
  • 来自专栏Helloted

    修复=Runtime+Javascriptcore

    一、运行时 修复的基本原理就是Runtime运行时的方法替换,主要是下列几个方法 class_replaceMethod:方法替换 method_exchangeImplementations:IMP swizzledMethod); } }); 二、Javascriptcore Javascriptcore是一个iOS原生框架,用于javascript与Objecive C语言进行相互调用,而我们修改需要用到的就是 javascript可以调用OC方法 三、修复

    56620编辑于 2022-06-07
领券