移动热修复(Mobile Hotfix)是阿里云提供的全平台App热修复服务方案。产品基于阿里巴巴首创hotpatch技术,提供最细粒度热修复能力,让您无需等待实时修复应用线上问题。

移动热修复提供的热修复能力,让您对应用程序的控制更加自由。您可以使用HotFix:

  • 紧急修复线上问题。
  • 快速发布新鲜功能。

产品优势:(图片来自阿里云)

阿里云接入文档:https://help.aliyun.com/document_detail/53240.html?spm=a2c4g.11186623.6.546.ppnCPR

后台创建应用得到应用相应信息(右键查看大图像)

AndroidManifest.xml中间的application节点下添加如下配置:

  1. <meta-data
  2. android:name="com.taobao.android.hotfix.IDSECRET"
  3. android:value="App ID" />
  4. <meta-data
  5. android:name="com.taobao.android.hotfix.APPSECRET"
  6. android:value="App Secret" />
  7. <meta-data
  8. android:name="com.taobao.android.hotfix.RSASECRET"
  9. android:value="RSA密钥" />

Application代码:

  1. public class SophixStubApplication extends Application {
  2. public interface MsgDisplayListener {
  3. void handle(String msg);
  4. }
  5.  
  6. public static MsgDisplayListener msgDisplayListener = null;
  7. public static StringBuilder cacheMsg = new StringBuilder();
  8.  
  9. @Override
  10. public void onCreate() {
  11. super.onCreate();
  12. initHotfix();
  13. }
  14.  
  15. private void initHotfix() {
  16. String appVersion;
  17. try {
  18. appVersion = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
  19. Log.i("appVersion",appVersion);
  20. } catch (Exception e) {
  21. appVersion = "1.0.0";
  22. }
  23.  
  24. SophixManager.getInstance().setContext(this)
  25. .setAppVersion(appVersion)
  26. .setAesKey(null)
  27. //.setAesKey("0123456789123456")
  28. .setEnableDebug(true)
  29. .setPatchLoadStatusStub(new PatchLoadStatusListener() {
  30. @Override
  31. public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
  32. String msg = new StringBuilder("").append("Mode:").append(mode)
  33. .append(" Code:").append(code)
  34. .append(" Info:").append(info)
  35. .append(" HandlePatchVersion:").append(handlePatchVersion).toString();
  36. if (msgDisplayListener != null) {
  37. msgDisplayListener.handle(msg);
  38. } else {
  39. cacheMsg.append("\n").append(msg);
  40. }
  41. }
  42. }).initialize();
  43. }
  44. }

第一次运行,有bug的效果:

生成有bug的apk文件保存。

下载补丁生成工具和调试工具,其中调试工具是一个apk文件

修改bug代码,运行生成 apk 文件。

现在有两个apk文件了,一个老的apk文件(有bug),一个新的apk文件(无bug),然后用工具就会生成一个补丁文件

运行下载的 SophixPatchTool 程序,按照要求导入apk文件,如图:(注:在设置中加入补丁生成文件路径)

生成的是一个 jar包

可以利用测试工具进行本地测试

这里我们通过adb命令来将sophix-patch.jar文件上传到手机本地内存目录下,然后修复错误,

adb命令相关请看博客: http://www.cnblogs.com/zhangqie/p/8505252.html

结束应用,重启得到效果:(文字和图片都改变了)

也可以通过阿里云控制台进行apk补丁修复

然后通过测试工具,连接应用---》二维码扫描修复文件

官方Demo下载:https://github.com/aliyun/alicloud-android-demo/tree/master/hotfix_android_demo

android--------阿里 Sophix移动热修复的更多相关文章

  1. Android 插件化和热修复知识梳理

    概述 在Android开发中,插件化和热修复的话题越来越多的被大家提及,同时随着技术的迭代,各种框架的发展更新,插件化和热修复的框架似乎已经日趋成熟,许多开发者也把这两项技术运用到实际开发协作和正式的 ...

  2. Android 类加载原理 和热修复——深入浅出原理与实现

    一.简述 热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一.在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新 ...

  3. 《android基于andFix的热修复方案》思路篇

    1:需求背景 项目上线之后,发现BUG需要修复(比如安卓兼容性等测试难以发现的问题),频繁的更新影响用户体验 2:方案要求 静默下载,耗费流量少,打完补丁后立刻生效,不用重启apk 3:解决思路 3. ...

  4. Android类加载机制及热修复实现

    Android类加载机制 Dalvik虚拟机如同其他Java虚拟机一样,在运行程序时首先需要将对应的类加载到内存中.而在Java标准的虚拟机中,类加载可以从class文件中读取,也可以是其他形式的二进 ...

  5. Android插件化与热修复(六)-微信Tinker原理分析

    Tinker热修复原理分析 热补丁技术是在用户不需要重新安装应用的情况下实现应用更新,可快速解决一些线上问题.热补丁省去了Android应用发布版本的成本,而且用户端的更新也是无感知的. Tinker ...

  6. Android Gradle项目Hotfix热修复技术的接入

    https://github.com/AItsuki/HotFix Issues MAC系统无法自动打包补丁,原因可能是路径分隔符问题 使用谷歌multidex分包后无法注入代码(开启multidex ...

  7. 《android基于andFix的热修复方案》实战篇

    有篇文章说的比较简洁,大家可以参考下:AndFix使用说明 下面说说实际使用中遇到的问题 1:如何继承到gradle项目中 dependencies { compile 'com.alipay.eul ...

  8. 阿里Sophix热修复

    阿里巴巴对Android热修复技术已经进行了长达多年的探索. 最开始,是手淘基于Xposed进行了改进,产生了针对Android Dalvik虚拟机运行时的Java Method Hook技术,Dex ...

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

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

随机推荐

  1. FastDFS单节点安装 & FastDFS+Nginx整合

    安装环境    FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastdfs/files/)    fastdfs-nginx-module ...

  2. python的数据结构之数字和字符串(四)

    一.数字 Python Number 数据类型用于存储数值.数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. Python 支持四种不同的数值类型: 整型( ...

  3. JS实现仿腾讯微博无刷新删除微博效果代码

    这里演示JS仿腾讯微博无刷新删除效果,将显示在微博列表里的内容删除,运用AJAX技术,无刷新删除微博的内容,参考性强,希望对初学AJAX的朋友有所帮助. 在线演示地址如下: http://demo.j ...

  4. 安装webpack出现警告: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):

    警告如下: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_mo ...

  5. 20145118 《Java程序设计》 实验报告二

    实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Lin ...

  6. JavaScript 开闭原则OCP

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  7. 再谈树---无根树转有根树( dfs搜索转化+fa数组记录父节点) *【模板】

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <vector> ...

  8. 【命令】Linux常用命令

    常用指令 ls 显示文件或目录ls -f 查看目录中的文件 ls -l 列出文件详细信息l(list) ls -a 列出当前目录下所有文件及目录,包括隐藏的a(all)ls *[0-9]* 显示包含数 ...

  9. 51NOD 1117 聪明的木匠

    来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1117 挑战原题吧  大概 每次挑选最小的两个,合起来 #inclu ...

  10. Vim打开文件中文乱码如何解决?

    今天想找一下之前的随机数组demo复习,在源文件src里用vim打开.java文件,中文出现乱码 vim也是,选项里没有直接选择设置utf-8之类的 查了下网上,http://easwy.com/bl ...