首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

文章目录 一、Android 修复系统组成 二、修复工作流程 三、修复使用到的技术 四、修复框架选择注意事项 一、Android 修复系统组成 ---- Android 修复系统组成 : 手机端..., 整个修复相关技术 ; NDK 相关技术 : 需要 编译生成 so 动态库 ; 四、修复框架选择注意事项 ---- 挑选修复框架时 , 一定要要选择一直保持更新的框架 ; 凡是使用到 插件化..., 修复 , 加固 等需要 HOOK 操作的框架时 , 必须注意 , HOOK 框架必须适配所有的 Android 版本, Android 源代码每个版本都不一样 , 选择的 HOOK 点也不一样...; 如果选择 AndFix 修复框架 , 该框架已经好几年没有更新 , 无法在新版本的手机操作系统中运行 , 一旦运行肯定崩溃 ; 哪怕是去年停止更新 , 支持到了 Android 12 , 今年新出了...Android 13 , 如果使用了该框架 , 则 应用无法在 Android 13 中正常运行;

57910

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

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

73220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 修复解析

    ://github.com/5A59/android-training/tree/master/common-tec/CommonTec 项目,其中 hotfix 和 patch 是修复代码 示例代码基于...5 修复和插件化 插件化和修复的原理,都是动态加载 dex/apk 中的类/资源,两者的目的不同。插件化目标在于加载 activity 等组件,达到动态下发组件的功能,修复目标在修复已有的问题。...其中最重要的是方法和类的替换,所以有不少修复框架只做了方法和类的替换,而没有对资源和 so 进行处理。 9 主流的修复框架对比 这里选取几个比较主流的修复框架进行对比 ?...上面是修复框架的一些对比,如果按照实现 dex 修复的原理来划分的话,大概能分成下面几种: native hook Andfix dex 插桩 QzoneNuwa InstantRun Robust...10.4 InstantRun 原理 InstantRun 是 AndroidStudio 2.0 新增的功能,方便快速的增量编译应用并部署,美团参照其原理实现了 Robust 修复框架

    96941

    Android修复AndFix

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

    76780

    Android修复框架之优逆势分析(Hotfix)

    在Dex的加载,资源加载上都做了优化,解决了其他修复框架上面无法解决的痛点。整体做了大量的优化和改进,唯一的遗憾就是不开源,但是也将整套技术方案整理成电子书,也算是一种回馈吧。...阿里Dexposed -- native解决方案 原理: 直接在native层进行方法的结构体信息对换,从而实现完美的方法新旧替换,从而实现修复功能   他的思想完全来源于Xposed框架,完美诠释了...与Dexposed框架相比AndFix框架更加轻便好用,在进行修复的过程中更加方便了 缺点: 面临稳定性与兼容性问题 AndFix不支持新增方法,新增类,新增field等 相关链接: 文章:https...来自蘑菇街 Android 修复探索之路 ?...其他文章 浅谈Android修复: http://blog.csdn.net/caihongdao123/article/details/52051799

    2.3K110

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

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

    1.3K40

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

    Android修复技术无疑是Android领域近年来最火热的技术之一,同时也涌现了各种层出不穷的实现方案,如QQ空间补丁方案、阿里AndFix以及微信Tinker等等,从本篇博客开始,计划写一个系列博客专门介绍修复的相关内容...,本系列博客将一一介绍这些框架的原理和源码分析,作为本系列的开篇,本篇博客将对修复技术进行一个概述,并对以上几种方案进行对比。...修复框架简单对比 接下来先对几个修复框架进行简单的介绍,后续将分别单独开一篇博客对其进行详细分析。...1.QQ空间修复补丁技术 QQ空间修复的方案是基于dex分包方案的基础之上,简单来说就是把BUG方法修复以后,重新生成一个dex,从服务器下载之后,将其插入到dexElements数组的最前面,...当然除了上述3个框架,还有美团的Robust,可惜的是这个框架并未开源,所以不在此列出,本篇博客只是简单介绍了这些框架的原理,后续的博客将对这些修复框架进行详细的分析。

    39110

    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修复

    62820

    Android修复技术总结

    插件化和修复技术是Android开发中比较高级的知识点,是中级开发人员通向高级开发中必须掌握的技能,插件化的知识可以查我我之前的介绍:Android插件化。...本篇重点讲解热修复,并对当前流行的修复技术做一个简单的总结。 修复 什么是修复? 简单来讲,为了修复线上问题而提出的修补方案,程序修补过程无需重新发版!...综上,对于上面的几种框架技术总结如下: ? 修复方案总结 代码修复有两大主要方案:一种是阿里系的底层替换方案,另一种是腾讯系的类加载方案。底层替换方案限制颇多,但时效性最好,加载轻快,立即见效。...sophix采用的也是全量合成dex的技术,这个技术是从手淘插件化框架Atlas汲取的。直接利用Android原先的类查找和合成机制,快速合成新的全量dex。...资源修复Android修复的过程中,不仅需要对错误的代码进行修复,还需要对资源文件进行修复。目前市面上的资源修复方案基本上都是参考Instant Run的实现。

    1.6K70

    Android中的修复

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

    1.9K10

    手动实现Android修复

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

    72750

    Android 修复】Tinker 简介

    文章目录 一、Tinker 简介 二、 源码资源 一、Tinker 简介 ---- https://github.com/Tencent/tinker/tree/dev/tinker-android 页面的...tinker-android 是 Tinker 的核心项目 , tinker-android-anno 是注解处理器 , 自定义 Application 时 , 不需要继承 Application..., 可以通过注解生成 Application ; 对应构建脚本的 com.tencent.tinker:tinker-android-anno:1.9.1 依赖 ; 参考 AnnotationProcessor.java...注解处理器 ; 参考 DefaultLifeCycle.java 注解 ; tinker-android-lib 是核心库 , 一些工具类放在该库中 ; 对应构建脚本的 com.tencent.tinker...:tinker-android-lib:1.9.1 依赖 ; tinker-android-loader 修复中 dex 数组相关操作在该库中 ; 二、 源码资源 ---- 参考资料 : 官方主页

    70220

    Android修复——Tinker(入门)

    如果你学会了这项黑科技——修复。 在用户使用App的时候,不知不觉,这个Bug就被修复了。...莫慌 修复:修复(也称热补丁、修复补丁,英语:hotfix)是一种包含信息的独立的累积更新包,通常表现为一个或多个文件。这被用来解决软件产品的问题(例如一个程序错误)。... <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE...就这样,整个修复的流程就完成了。 注意:一定要关闭后打开,修复才会生效。 ?...】Walle多渠道打包&Tinker修复 Tinker已知的问题: Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件; 由于Google Play的开发者条款限制

    3.2K120

    Android修复技术总结

    插件化和修复技术是Android开发中比较高级的知识点,是中级开发人员通向高级开发中必须掌握的技能,插件化的知识可以查我我之前的介绍:Android插件化。...本篇重点讲解热修复,并对当前流行的修复技术做一个简单的总结。 修复 什么是修复? 简单来讲,为了修复线上问题而提出的修补方案,程序修补过程无需重新发版!...综上,对于上面的几种框架技术总结如下: ? 修复方案总结 代码修复有两大主要方案:一种是阿里系的底层替换方案,另一种是腾讯系的类加载方案。...sophix采用的也是全量合成dex的技术,这个技术是从手淘插件化框架Atlas汲取的。直接利用Android原先的类查找和合成机制,快速合成新的全量dex。...资源修复Android修复的过程中,不仅需要对错误的代码进行修复,还需要对资源文件进行修复。目前市面上的资源修复方案基本上都是参考Instant Run的实现。

    1.4K60

    修复框架HotFix源码解析

    0x00 讲起 Android修复,相信大家对其都略知一二。修复可以说是继插件化之后,又一项新的技术。...目前的 Android 修复框架主要分为了两类: 基于 Native Hook:使用 JNI 动态改变方法指针,比如有 Dexposed 、AndFix 等; 基于 Java Dex 分包:改变 dex...的 Task ; hackDex : 只有一个 AntilazyLoad 类,独立打成一个 hack.dex ,防止出现 CLASS_ISPREVERIFIED 相关的问题; hotfixlib : 修复框架的...系统 API Level >= 14 的; Android 系统 API Level < 14 的; 其实阿里云的修复Android系统 API < 14 的代码是差不多的,就是把 .dex 修改为了...0x05 References 安卓App热补丁动态修复技术介绍 Android 热补丁动态修复框架小结

    59820

    Android修复学习之旅——Andfix框架完全解析

    Android修复学习之旅开篇——修复概述 Android修复学习之旅——HotFix完全解析 Android修复学习之旅——Tinker接入全攻略 在之前的博客《Android修复学习之旅...——HotFix完全解析》中,我们学习了修复的实现方式之一,通过dex分包方案的原理还有HotFix框架的源码分析,本次我将讲解热修复的另外一种思路,那就是通过native方法,本篇博客,我们将深入分析...3.根据sdk版本判断是否支持(支持Android2.3-7.0系统版本) // from android 2.3 to android 7.0 private static boolean isSupportSDKVersion...进而也修复不了了。 接下来就是交给native方法了,由于Android4.4后才用的Art虚拟机,之前的系统都是Dalvik虚拟机,因此Natice层写了2个方法,对不同的系统做不同的处理方式。...diff.dex文件,只是这里更像是Android中的apk文件目录格式,同样有一个META-INF目录,这里存放了签名文件以及需要修复类信息的PATCH.MF文件: 至此,Andfix框架已基本分析完毕

    1K10

    Android修复实践应用—AndFix

    一直关注App的修复的技术发展,之前做的应用也没用使用到什么修复开源框架。在App的修复框架没有流行之前,做的应用上线后发现一个小小的Bug,就要马上发一个新的版本。...我亲身经历过一周发两个版本,真的折腾用户的节奏~~所以,要开始考虑引入修复。下面记录使用开源框架阿里巴巴的AndFix过程。...实现的原理 这里说的不是修复怎么实现修bug的原理,这里说的是怎么使用AndFix。...//github.com/alibaba/AndFix (AndFix的官网) http://blog.csdn.net/lmj623565791/article/details/49883661 (Android...也许你会问为了修复一个补丁而增加这么多的依赖,值得吗?我认为还可以吧,因为我的项目一般会使用到这些。

    75360

    全面了解Android修复技术

    WeTest 导读 本文探讨了Android修复技术的发展脉络,现状及其未来。 修复技术概述 修复技术在近年来飞速发展,尤其是在InstantRun方案推出之后,各种修复技术竞相涌现。...代码修复 代码修复是最常见,也是修复中最重要的部分,因为程序错误往往都是代码逻辑的错误。最初的修复方案也仅支持代码修复。...类加载方案 1、Qzone Qzone的超级修复方案是业界最早的修复方案之一,原理简单而巧妙,影响深刻而久远,在此简单介绍。Android类加载的源码如下: ?...Android修复技术虽然百花齐放,但却并没有哪种方案能够解决所有问题,统一当前的局面。...而最近阿里又推出了Sophix,针对各种类型的修复又做了深度的优化,虽然没有开源代码,但是发布了《深入探索Android修复技术原理》,引起Android社区的关注,其统一各种修复方案的意图也十分明显

    75720

    Android 进阶解密笔记-修复

    由于android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏比较多时,就难免会导致应用所需要的内存超过这个系统分配的内存限额,这就会导致程序崩溃等严重后果。...检测工具 最常见的是:Leakcanary leakCanary是Square开源框架,是一个Android和Java的内存泄露检测库,如果检测到某个 activity 有内存泄露,LeakCanary...常见的内存泄漏 单例造成的内存泄漏 单例在Android中经常使用,如果使用不当会造成内存泄漏,因为单例的静态特性使得他的生命周期与应用的生命周期一样长,这就造成当前对象的生命周期比单例短,单例又持有该对象的引用...查了很多资料,发现这是 Android SDK中输入法的一个Bug,在15<=API<=23中都存在,目前Google还没有解决这个Bug。

    38820

    全面了解 Android 修复技术

    原文链接:http://wetest.qq.com/lab/view/338.html WeTest 导读 本文探讨了Android修复技术的发展脉络,现状及其未来。...代码修复 代码修复是最常见,也是修复中最重要的部分,因为程序错误往往都是代码逻辑的错误。最初的修复方案也仅支持代码修复。...Android类加载的源码如下: 可以看出当有多个dex文件时,他们会组成一个有序数组,按顺序加载,而对于一个已经加载的Class是不会再次加载的,由此得出修复方案:把需要修复的类打包成一个dex...Android修复技术虽然百花齐放,但却并没有哪种方案能够解决所有问题,统一当前的局面。...而最近阿里又推出了Sophix,针对各种类型的修复又做了深度的优化,虽然没有开源代码,但是发布了《深入探索Android修复技术原理》,引起Android社区的关注,其统一各种修复方案的意图也十分明显

    1.1K30
    领券