Android APP热修复程序库——AndFix

简介: AndFix 是一种在线修复错误的解决方案,而不是重新分发 Android 应用程序。它作为Android 库分发。

AndFix 是一种在线修复错误的解决方案,而不是重新分发 Android 应用程序。它作为Android 库分发。

Andfix是一个缩写“而固醇热-修复”。

AndFix支持从2.3到7.0的Android版本,ARM和X86架构,Dalvik和ART运行时,32位和64位。

AndFix 的补丁压缩文件格式为.apatch。它从您自己的服务器发送到客户端以修复您的应用程序的错误。

原则

AndFix的实现原理是方法体的替换

image.png

方法替换

AndFix判断方法应该替换为java自定义注解,通过hook来替换。AndFixart_replaceMethod在 ART 或dalvik_replaceMethodDalvik 中有一个本地方法。

有关更多详细信息,请点击此处。

process.png

一体化

怎么获得?

直接将 AndFix aar 作为编译库添加到您的项目中。

对于您的 maven 依赖,

<dependency>
    <groupId>com.alipay.euler</groupId>
    <artifactId>andfix</artifactId>
    <version>0.5.0</version>
    <type>aar</type>
</dependency>

对于您的 gradle 依赖项,

dependencies {
  compile 'com.alipay.euler:andfix:0.5.0@aar'
}

如何使用?

  1. 初始化 PatchManager,
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
  1. 加载补丁,
patchManager.loadPatch();

您应该尽早加载补丁,通常在应用程序的初始化阶段(例如Application.onCreate())。

  1. 添加补丁,
patchManager.addPatch(path);//path of the patch file that was downloaded

下载新的补丁文件后,它将立即生效addPatch。

开发者工具

AndFix 提供了一个名为apkpatch的补丁制作工具。

怎么获得?

该apkpatch工具可以在这里找到。

如何使用?

  • 准备两个android包,一个是在线包,一个是你通过编码修复bug后的包。
  • .apatch通过提供两个包生成文件,
usage: apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
 -a,--alias <alias>     keystore entry alias.
 -e,--epassword <***>   keystore entry password.
 -f,--from <loc>        new Apk file path.
 -k,--keystore <loc>    keystore path.
 -n,--name <name>       patch name.
 -o,--out <dir>         output dir.
 -p,--kpassword <***>   keystore password.
 -t,--to <loc>          old Apk file path.

现在您获得了应用程序的救星,补丁文件。然后你需要以某种方式将它发送给你的客户,推或拉。

有时,您的团队成员可能会修复彼此的错误,并且不仅生成一个.apatch. 对于这种情况,您可以.apatch使用此工具合并文件,

usage: apkpatch -m <apatch_path...> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
 -a,--alias <alias>     keystore entry alias.
 -e,--epassword <***>   keystore entry password.
 -k,--keystore <loc>    keystore path.
 -m,--merge <loc...>    path of .apatch files.
 -n,--name <name>       patch name.
 -o,--out <dir>         output dir.
 -p,--kpassword <***>   keystore password.

运行示例

  1. 将 samplesI/AndFixDemo 导入您的 IDE,使用 AndFix(库项目或 aar)附加 AndFixDemo 依赖项。
  2. 构建项目,将包保存为1.apk,然后安装在设备/模拟器上。
  3. 修改com.euler.test.A,参考com.euler.test.Fix。
  4. 构建项目,将包保存为2.apk。
  5. 使用 apkpatch 工具制作补丁。
  6. 将补丁文件重命名为out.apatch,然后复制到sdcard。
  7. 运行 1.apk 并查看日志。

注意

混淆器

如果您启用 ProGuard,您必须保存 mapping.txt,以便您的新版本的构建可以与"-applymapping" 一起使用。

并且有必要保持课程如下,

  • 本机方法
    com.alipay.euler.andfix.AndFix
  • 注解
    com.alipay.euler.andfix.annotation.MethodReplace

为了确保在运行混淆和静态分析工具(如 ProGuard)后可以找到这些类,请将以下配置添加到您的 ProGuard 配置文件中。

-keep class * extends java.lang.annotation.Annotation
-keepclasseswithmembernames class * {
    native <methods>;
}

自修改代码

如果你使用它,比如Bangcle。要生成补丁文件,最好使用原始 apk。

安全

以下内容很重要,但超出了 AndFix 的范围。

  • 验证补丁文件的签名
  • 验证优化文件的指纹

API 文档

可以在此处找到库 javadoc 。

相关文章
|
存储 消息中间件 人工智能
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
747 10
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
814 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
搜索推荐 数据挖掘
直播App程序源码开发前期功能调研:运营角度思考如何有利于推广运营获利
在直播App程序源码开发的前期,功能调研至关重要。除了技术实现的可行性,更需要从运营角度出发,思考哪些功能能够助力推广运营,最终实现获利。山东布谷科技从运营角度,对直播App功能进行调研分析
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
2221 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
587 1
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
1083 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
监控 Java API
Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传
本文介绍的 OkDownload 是一个专为 Android 设计的开源下载框架,支持多线程下载、断点续传和任务队列管理等功能,具备可靠性、灵活性和高性能特点。它提供了多种配置选项和监听器,便于开发者集成和扩展。尽管已多年未更新,但依然适用于大多数文件下载需求。
1646 1
|
存储 安全 Linux
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
292 0
|
测试技术 API Android开发
Android经典实战之简化 Android 相机开发:CameraX 库的全面解析
CameraX是Android Jetpack的一个组件,旨在简化相机应用开发,提供了易于使用的API并支持从Android 5.0(API级别21)起的设备。其主要特性包括广泛的设备兼容性、简洁的API、生命周期感知、简化实现及方便的集成与测试。通过简单的几个步骤即可实现如拍照、视频录制等功能。此外,还提供了最佳实践指导以确保应用的稳定性和性能。
881 0

热门文章

最新文章