在线热修复基本流程

每个APP都会集成一个用于捕获并统计线上Crash的SDK,通过这个SDK,我们可以知道APP的健康状况,这是在线修复的基础。从线上Crash的统计中可以得知APP是否存在需要在线热修复的严重性Crash。如果存在,那么接着根据Crash日志定位分析出哪里的代码出的问题,这是需要基于这个发布的版本号对应的代码标签拉出一个bugfix分支,并在这个分支上修复问题。问题修复后,首先是开发人员自测,再提交体侧申请,测试回归并确认问题已经解决后,开发就可以在自动化构建平台出发bugfix分支的构建,这个构建会同时执行前后两个版本APK的对比,生成补丁文件。补丁文件生成后,就需要想办法下发给出问题 的APP。这里可以有两种方法,一,APP实现了自己的推送功能,也就是和服务器保持稳定的长连接,可以通过这个通道直接把补丁问价推送给用户手机上的APP。另外一种是手机并没有长连接,那么只能在某个时机让APP主动向服务器请求是否需要打补丁,如果需要就下载补丁文件,这个一般都是放在APP启动时去判断。当补丁文件生成后,就可以开始将bugfix分支修复的代码同步合并带主干分支,以确保后续不会出现相同的问题。

Dexposed

Dexposed 是阿里巴巴无线事业部开源的Android平台下的无侵入运行时AOP框架,该框架基于AOP思想,支持经典的AOP使用场景,可应用于日志记录、性能统计、安全控制、事务处理、异常处理等方面。
Dexposed的AOP实现是完全非侵入式的,没有使用任何注解处理器、编织器或者字节码重写器。集成Dexposed,只需要在应用初始化阶段加载一个很小的JNI库。
Dexposed实现的hooking,不仅科技hook应用中的自定义函数,也可以hook应用中调用的Android框架的函数。基于动态类加载技术,运行中的APP可以加载一小段经过编译的Java AOP代码,在不需要重启APP的前提下实现修改目标的APP的行为。

集成Dexposed

依赖一个aar包,其中包含一个名为dexposedbridge.jar的Jar包,以及两个.so文件:libdexposed.so和libdexposed_l.so。在自定义Application中初始化:

private boolean mIsSupported = false;//设备是否支持dexposed
private boolean mIsLDevice = false;//设备Android系统是否是Android 5.0及以上
@Override
public void onCreate(){super.onCreate();//check device if support and auto load libsmIsSupported = DexposedBridge.canDexposed(this);mIsLDevice = Build.VERSION.SDK_INT >= 21;
}

Dexposed基本用法

在Dexposed中,对于某个函数而言,有三个注入点可供选择:

  • 函数执行前注入–before
  • 函数执行后注入–after
  • 替换函数执行中的代码段–replace

Android在线热修复基本流程相关推荐

  1. Android OTA升级原理和流程分析(五)---update.zip包从上层进入Recovery服务

    转载自:http://blog.chinaunix.net/uid-22028566-id-3533854.html 文章开头我们就提到update.zip包来源有两种: 一个是OTA在线下载(一般下 ...

  2. Android在线音乐播放器

    波尼音乐 系列文章 Android开源在线音乐播放器--波尼音乐 Android开源音乐播放器之播放器基本功能 Android开源音乐播放器之高仿云音乐黑胶唱片 Android开源音乐播放器之自动滚动 ...

  3. android在线播放音乐

    2019独角兽企业重金招聘Python工程师标准>>> android在线音乐 一种方法是调用android自带的播放器 //调用系统自带播放器Intent intent = new ...

  4. 【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )

    文章目录 一. Android 工程修改包名流程 二. 修改 applicationId 三. 修改 package 包名 四. AndroidManifest.xml 清单文件组件 五. 修改 R ...

  5. Android O: View的绘制流程(二):测量

    在前一篇博客Android O: View的绘制流程(一): 创建和加载中,  我们分析了系统创建和加载View的过程,这部分内容完成了View绘制的前置工作. 本文开始分析View的测量的流程. 一 ...

  6. Android O: View的绘制流程(三):布局和绘制

    前一篇文章Android O: View的绘制流程(二):测量中,  我们分析了View的测量流程.  当View测量完毕后,就要开始进行布局和绘制相关的工作,  本篇文章就来分析下这部分流程. 一. ...

  7. Android内存泄漏的检测流程、捕捉以及分析

    https://blog.csdn.net/qq_20280683/article/details/77964208 Android内存泄漏的检测流程.捕捉以及分析 简述: 一个APP的性能,重度关乎 ...

  8. camera (19)---Android 相机开发的基本流程

    [Android 相机]Android 相机开发的基本流程 https://blog.csdn.net/bluewindtalker/article/details/54563910 相机开发现在有2 ...

  9. Android audio切换设备通道流程(二十八)

    Android audio切换设备通道流程 1.frameworks/base/media/java/android/media/AudioManager.java public void setMo ...

最新文章

  1. Openstack组件实现原理 — Keystone认证功能
  2. 公司禁用U盘和移动硬盘的方法
  3. python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
  4. Sql获取表信息(包括结构及字段说明)
  5. Oracle 1204 RAC failover 测试 (六)
  6. fadein和fadeto_jQuery fadeIn,fadeOut,fadeTo
  7. [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 06 用户界面层...
  8. 制造业升级智造业,阿里云提炼了9大场景
  9. Litjson快速入门
  10. HTML 标签参考手册:按字母顺序排列 HTML 标签
  11. 好文:读客图书董事长华楠接受采访
  12. 08_基于IP的伪装
  13. android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
  14. 医学图像配准中的深度学习综述论文解读
  15. ZCMU 5122: 小何的旅行I
  16. 使用IO完善快递管理系统
  17. HDFS的读写流程步骤(附图文解析)
  18. 理解jquery的$.extend()、$.fn和$.fn.extend()
  19. nfcwriter写入_NFC 标签联系人写入教程:Tagstand Writer
  20. EMC-浪涌防护及退耦设计

热门文章

  1. java构造方法与重载
  2. 这是一份最快的集五福攻略,请收下!
  3. column函数HTML5,column函数 excel中column函数的使用方法
  4. 旋转图像算法-实际应用
  5. Java选择题日常记录——Day1—Day15
  6. 对m开n次根号的问题
  7. 多列列表控件中图片尺寸处理的若干问题
  8. go语言字符集转换整数[]byte转换int
  9. 关于婚姻,你能事先回答这些问题吗?(来自网络)
  10. stm32移植U8G2图像库指南