Android在线热修复基本流程
在线热修复基本流程
每个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在线热修复基本流程相关推荐
- Android OTA升级原理和流程分析(五)---update.zip包从上层进入Recovery服务
转载自:http://blog.chinaunix.net/uid-22028566-id-3533854.html 文章开头我们就提到update.zip包来源有两种: 一个是OTA在线下载(一般下 ...
- Android在线音乐播放器
波尼音乐 系列文章 Android开源在线音乐播放器--波尼音乐 Android开源音乐播放器之播放器基本功能 Android开源音乐播放器之高仿云音乐黑胶唱片 Android开源音乐播放器之自动滚动 ...
- android在线播放音乐
2019独角兽企业重金招聘Python工程师标准>>> android在线音乐 一种方法是调用android自带的播放器 //调用系统自带播放器Intent intent = new ...
- 【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )
文章目录 一. Android 工程修改包名流程 二. 修改 applicationId 三. 修改 package 包名 四. AndroidManifest.xml 清单文件组件 五. 修改 R ...
- Android O: View的绘制流程(二):测量
在前一篇博客Android O: View的绘制流程(一): 创建和加载中, 我们分析了系统创建和加载View的过程,这部分内容完成了View绘制的前置工作. 本文开始分析View的测量的流程. 一 ...
- Android O: View的绘制流程(三):布局和绘制
前一篇文章Android O: View的绘制流程(二):测量中, 我们分析了View的测量流程. 当View测量完毕后,就要开始进行布局和绘制相关的工作, 本篇文章就来分析下这部分流程. 一. ...
- Android内存泄漏的检测流程、捕捉以及分析
https://blog.csdn.net/qq_20280683/article/details/77964208 Android内存泄漏的检测流程.捕捉以及分析 简述: 一个APP的性能,重度关乎 ...
- camera (19)---Android 相机开发的基本流程
[Android 相机]Android 相机开发的基本流程 https://blog.csdn.net/bluewindtalker/article/details/54563910 相机开发现在有2 ...
- Android audio切换设备通道流程(二十八)
Android audio切换设备通道流程 1.frameworks/base/media/java/android/media/AudioManager.java public void setMo ...
最新文章
- Openstack组件实现原理 — Keystone认证功能
- 公司禁用U盘和移动硬盘的方法
- python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
- Sql获取表信息(包括结构及字段说明)
- Oracle 1204 RAC failover 测试 (六)
- fadein和fadeto_jQuery fadeIn,fadeOut,fadeTo
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 06 用户界面层...
- 制造业升级智造业,阿里云提炼了9大场景
- Litjson快速入门
- HTML 标签参考手册:按字母顺序排列 HTML 标签
- 好文:读客图书董事长华楠接受采访
- 08_基于IP的伪装
- android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
- 医学图像配准中的深度学习综述论文解读
- ZCMU 5122: 小何的旅行I
- 使用IO完善快递管理系统
- HDFS的读写流程步骤(附图文解析)
- 理解jquery的$.extend()、$.fn和$.fn.extend()
- nfcwriter写入_NFC 标签联系人写入教程:Tagstand Writer
- EMC-浪涌防护及退耦设计