线上的BUG一直是程序员头疼的问题。有时候仅仅是因为几行的代码,就能让你的用户损失严重。谷歌在Android Studio 加入了Insttan Run 机制。通过Apk动态加载的技术实现了应用非安装而进行代码层的改变。之后QQ空间团队的补丁开始了热更新的浪潮。用户不需要通过手动操作,进行App的版本更新,极大的保障了用户对于产品的粘合度,对于开发者而言能使用到这项技术当然再好不过,市面上的热更新,热修复他们的叫称不同,功能相同只是支持的范围有所差别。目前可用的开放平台有腾讯的Tinker以及HotFix。无奈腾讯需要收费,这里就介绍如何集成阿里的HotFix。并且一些踩坑的处理。

首先,你需要一个淘宝账号登陆阿里百川根据角色注册对应账号。之后申请一个App获得他的三个参数:APP ID,App Secret,RSA。这是我的个人测试账号,参数就给你们看啦。如下:

下载RSA到你的电脑。

接入应用:

使用Android Studio.在gradle 文件中添加如下:

allprojects {

        maven {
url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories"
}
}
}

在moudle的gradle中添加如下:

compile 'com.taobao.android:alisdk-hotfix:2.0.9'

在清单文件中添加权限:

<! -- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<! -- 外部存储读权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

在Application中添加百川SDK的参数:

<meta-data
android:name="com.taobao.android.hotfix.IDSECRET"
android:value="App ID" />
<meta-data
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="App Secret" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="RSA密钥" />

混淆:

#基线包使用,生成mapping.txt
-printmapping mapping.txt
#生成的mapping.txt在app/buidl/outputs/mapping/release路径下,移动到/app路径下 #修复后的项目使用,保证混淆结果一致
#-applymapping mapping.txt #hotfix
-keep class com.taobao.sophix.**{*;}
-keep class com.ta.utdid2.device.**{*;}

之后我们分别在Application中进行代码的初始化化,在onCreate()中优先请求百川补丁下载:

public void onCreate() {
super.onCreate();
initHotFix();
}
private void initHotFix() { SophixManager.getInstance().queryAndLoadNewPatch();
}

在attatchBaseContent中做补丁接收操作,这里的版本要和你后台生成的补丁包的版本一样:

       SophixManager.getInstance().setContext(this)
.setAppVersion(appVerSion)
.setAesKey(null)
.setEnableDebug(true)
.setPatchLoadStatusStub(new PatchLoadStatusListener() {
@Override
public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
// // 补丁加载回调通知
// if (code == PatchStatus.CODE_LOAD_SUCCESS) {
// // 表明补丁加载成功
// Toast.makeText(MyApplication.this, "加载补丁成功", Toast.LENGTH_SHORT).show();
// } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
// // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
// // 建议: 用户可以监听进入后台事件, 然后应用自杀
// } else if (code == PatchStatus.CODE_LOAD_FAIL) {
// // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载
// // SophixManager.getInstance().cleanPatches();
// } else {
// // 其它错误信息, 查看PatchStatus类说明
// }
}
}).initialize();

对于新旧版本的补丁你需要在官网下载生成补丁的工具,之后再进行补丁包的上传。官方还有补丁的测试工具。把补丁上传之后发布就饿可以进行热更新了。下面我们来测试一下,我在我的界面的新版本中把三个banner隐藏了。并且进行打补丁。看看效果如何:

可以看到已经成功的应用了补丁。

Android热修复(HotFix)实战的更多相关文章

  1. Android热修复框架汇总整理(Hotfix)

      Android平台出现了一些优秀的热更新方案,主要可以分为两类:一类是基于multidex的热更新框架,包括Nuwa.Tinker等:另一类就是native hook方案,如阿里开源的Andfix ...

  2. 深入探索Android热修复技术原理读书笔记 —— 代码热修复技术

    在前一篇文章 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍中,对热修复技术进行了介绍,下面将详细介绍其中的代码修复技术. 1 底层热替换原理 在各种 Android 热修复方案中 ...

  3. Android热修复技术选型(不在市场发布新版本的情况下,直接更新app)

    2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker,它们在原理各有不同,适用场景各异,到 ...

  4. 全面了解Android热修复技术

    WeTest 导读 本文探讨了Android热修复技术的发展脉络,现状及其未来. 热修复技术概述 热修复技术在近年来飞速发展,尤其是在InstantRun方案推出之后,各种热修复技术竞相涌现.国内大部 ...

  5. Android热修复技术选型——三大流派解析

    声明,本文转载自微信公众号文章 2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker,它们 ...

  6. Android热修复技术原理详解(最新最全版本)

    本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...

  7. Android热修复技术总结

    https://blog.csdn.net/xiangzhihong8/article/details/77718004 插件化和热修复技术是Android开发中比较高级的知识点,是中级开发人员通向高 ...

  8. Android热修复之AndFix使用教程

    AndFix的github地址 AndFix 全称Android hot-fix,是alibaba的Android热修复框架,支持Android 2.3到6.0的版本,支持arm与X86系统架构,支持 ...

  9. 深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍

    1.1 什么是热修复 对于广大的移动开发者而言,发版更新是最为寻常不过的事了.然而,如果你 发现刚发出去的包有紧急的BUG需要修复,那你就必须需要经过下面这样的流程: 这就是传统的更新流程,步骤十分繁 ...

  10. 深入探索Android热修复技术原理读书笔记 —— so库热修复技术

    热修复系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 深入探索Android热修复技术原理读书笔记 ...

随机推荐

  1. R语言学习——R读取txt、csv、xls和xlsx格式文件

    最近项目中运用到了R读取文件数据,所以把相关好用的.经过验证的方法总结了一下,有效避免下次入坑. 1. R读取txt文件 使用R读取txt文件直接使用read.table()方法进行读取即可,不需要加 ...

  2. 1109 Group Photo (25 分)

    1109 Group Photo (25 分) Formation is very important when taking a group photo. Given the rules of fo ...

  3. Eclipse中安装及配置EGit插件

    转载:https://jingyan.baidu.com/article/59703552dcc5ad8fc107407e.html

  4. OTL技术应用

    什么是OTL:OTL 是 Oracle, Odbc and DB2-CLI TemplateLibrary 的缩写,是一个操控关系数据库的C++模板库,它目前几乎支持所有的当前各种主流数据库,如下表所 ...

  5. ECCV 2018 | 旷视科技提出统一感知解析网络UPerNet,优化场景理解

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕.届时,旷视首席科学家孙 ...

  6. bash下. : () {} [] [[]] (())的解释

    bash下有很多像{}.[]等一些符号命令,下面是我对一些常用的符号命令的学习笔记,若有错误或纰漏望各位兄弟指正. 一..(source).(点)与source命令一样,从文件中读取并执行命令,无论该 ...

  7. 如何分析 WindowsDump:Dump 起源与初始设置

    https://www.qcloud.com/community/article/511817 转者注:让我感觉以前看蓝屏都白看了~~~原来蓝屏也可以分析具体原因. 适用场景:Windows 系列系统 ...

  8. mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat'

    mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat' 1.问题起因:搭建环境初始化mysql的时候看到mysql配置文 ...

  9. 了解vue

    什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 状态,其实指的是实例之间的 ...

  10. Linux命令行下如何终止当前程序

    Linux命令行下如何终止当前程序 快捷键: Ctrl+c 在命令行下起着终止当前执行程序的作用, Ctrl+d 相当于exit命令,退出当前shell Ctrl+s 挂起当前shell(保护作用很明 ...