前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android Gradle 插件】热修复实现 ① ( Android 热修复系统组成 | 热修复工作流程 | 热修复使用到的技术 | 热修复框架选择注意事项 )

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

作者头像
韩曙亮
发布2023-03-30 17:57:50
5630
发布2023-03-30 17:57:50
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、Android 热修复系统组成


Android 热修复系统组成 :

  • 手机端 SDK : 在手机中集成一个 SDK , 是 Android 手机端 的热修复支持组件 , 借助该组件实现动态加载外部修复包 ( 字节码文件 ) ;
  • 后端服务器 : 在服务器中 处理 手机端 SDK 的请求数据 , 以及 为管理操作界面进行后端支持 ;
  • 管理操作界面 : Android 开发者通过该界面 , 构建 | 发布 | 管理 | 监控 修复包文件 ;

一般情况下 管理操作界面 和 后端服务器 是一个 Java / .NET / PHP 开发的 Web 应用 ;

二、热修复工作流程


热修复工作流程 :

首先 , 开发者发现 BUG , 使用 Gradle 插件生成 修复包 ;

然后 , 开发者 将修复包上传到 服务器端 , 由服务器对热修复的修复包进行统一的管理 ;

最后 , 手机端的 SDK 每次启动都会到 服务器端 检查是否有最新的修复包 , 如果有则下载最新的修复包 , 并在本地配置该修复包 , 每次启动都加载并执行该修复包数据 ;

三、热修复使用到的技术


热修复使用到的技术 :

  • DexClassLoader 动态加载技术 : 主要是使用 自定义 DexClassLoader 类加载器 通过各种 代理 | 反射 | HOOK 等操作 加载外部的字节码数据 ; 热修复 , 插件化 , 换肤框架 都用到该技术 ;
  • 差分打包技术 : 使用 bsdiff.so 动态库 , 对比代码差异 , 进行差分打包 ;
  • 字节码插桩技术 : 使用 ASM , Javassit 技术 , 编译时替换相关类 ;
  • Android Gradle 插件相关技术 : 开发 自定义 Android Gradle 插件 , 整个热修复相关技术 ;
  • NDK 相关技术 : 需要 编译生成 so 动态库 ;

四、热修复框架选择注意事项


挑选热修复框架时 , 一定要要选择一直保持更新的框架 ;

凡是使用到 插件化 , 热修复 , 加固 等需要 HOOK 操作的框架时 , 必须注意 , HOOK 框架必须适配所有的 Android 版本, Android 源代码每个版本都不一样 , 选择的 HOOK 点也不一样 ;

如果选择 AndFix 热修复框架 , 该框架已经好几年没有更新 , 无法在新版本的手机操作系统中运行 , 一旦运行肯定崩溃 ;

哪怕是去年停止更新 , 支持到了 Android 12 , 今年新出了 Android 13 , 如果使用了该框架 , 则 应用无法在 Android 13 中正常运行;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Android 热修复系统组成
  • 二、热修复工作流程
  • 三、热修复使用到的技术
  • 四、热修复框架选择注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档