前言:
之前看了关于热修复的相关文章,想找个代码试试,奈何感觉使用起来有些麻烦,之后就不了了之。看到了阿里的Sophix,嗯,感觉不那么复杂,步骤简单,就着手自己敲了敲。主要记录下自己找了很久,费时步骤)

相关文档:
阿里热修复:https://www.aliyun.com/product/hotfix
快速接入:https://help.aliyun.com/document_detail/53240.html?spm=a2c4g.11174283.3.1.D6UW0D
AndroidSDK稳健接入:https://help.aliyun.com/document_detail/93825.html?spm=a2c4g.11186623.6.580.38ec5c56sA6o2C

开始:(Android Studio)
1.在app中gradle文件中添加

    repositories {maven {url "http://maven.aliyun.com/nexus/content/repositories/releases"}}

添加依赖:

    compile 'com.aliyun.ams:alicloud-android-hotfix:3.2.1'

2.所需权限
在AndroidManifest.xml文件中添加:

    <! -- 网络权限 --><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"/>

3.在AndroidManifest.xml文件的节点中添加

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

重点注意:这里的App ID,App Secret,RSA密钥需要换成你在阿里云上该应用相应值。这里重点介绍这些值是怎么来的,找了我好久。
a。【申请账号】如果你没有阿里云账号请申请。
b。【添加移动热修复】申请后点击右方头像,出现你的账号信息,点击你设置的用户名,会出现账号管理界面,如下

点击管理控制,把鼠标放在云计算服务基础上,出现设置图标,点击图标,进入如下界面:

鼠标放在移动服务上,看见移动热修复,点击上,然后点击左侧的对勾确认。你会在左侧菜单上看到移动热修复。

如果它提示要你实名,就老老实实实名吧。
c。【创建应用】按照上述步骤点击移动热修复,添加产品

添加成功后点击刚创建的产品,添加应用,你可以添加一个Android应用。

这里的应用名和包名我对应上了创建好的应用名和包名。创建后没有找到RSA密钥
,接着来。

点击右方那个应用信息:

ok,这里就对应上述要修改的值了。
4.初始化(没有在attachBaseContext中执行时,在用阿里的工具生成补丁时会出错)
新建一个类继承Application,重写attachBaseContext方法(重点),执行完super后执行下述代码:

 String appVersion;try {appVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;} catch (PackageManager.NameNotFoundException e) {appVersion = "1.0";e.printStackTrace();}// initialize必须放在attachBaseContext最前面,初始化代码直接写在Application类里面,切勿封装到其他类。SophixManager.getInstance().setContext(this).setAppVersion(appVersion).setAesKey(null).setEnableDebug(true).setPatchLoadStatusStub(new PatchLoadStatusListener() {@Overridepublic void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {// 补丁加载回调通知if (code == PatchStatus.CODE_LOAD_SUCCESS) {// 表明补丁加载成功} else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {// 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;// 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3} else {// 其它错误信息, 查看PatchStatus类说明}}}).initialize();// queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中SophixManager.getInstance().queryAndLoadNewPatch();

然后在AndroidManifest.xml中将application的name修改为自定义的Application(我弄的时候把这个给忘记了,怎么能忘记这个步骤呢,傻)
5.对第一次原代码进行打包,并在手机上执行。
6.修改代码,进行第二次打包。

7.有了原包和修改后的包怎样生成补丁呢。请看:
https://help.aliyun.com/document_detail/53247.html?spm=a2c4g.11186623.4.8.ShKMF8

注意:
这里生成补丁包时,第一次提醒你设置。设置不止要设置上部分,下边的一些信息也要设置上。
打开下载的阿里生成补丁工具:

打开后点击设置:

配置信息:

配置好了才能生成补丁,不然会出错。

8.生成补丁后需要调试补丁:
https://help.aliyun.com/document_detail/53248.html?spm=a2c4g.11186623.4.8.1kSSEF

ok,完美ending。

阿里Sophix热修复体验相关推荐

  1. 阿里SopHix热修复框架

    2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner ...

  2. 阿里云热修复sophix详解

    现在网上有几种常用的app热修复技术,个人感觉阿里云热修复操作比较简单,主要几个步骤,创建app---下载sdk---集成(AS和eclipse)---生成补丁---发布补丁(可以本地调试).下面详细 ...

  3. 阿里移动热修复Sophix使用体验

    2019独角兽企业重金招聘Python工程师标准>>> Android 热修复是个热门技术,各大公司都推出了自己的热修复框架,阿里也推出了全新的Sophix,我决定写个Demo 测试 ...

  4. 深入解析阿里Android热修复技术原理

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

  5. android热补丁作用,Android热修复之 - 阿里开源的热补丁

    这里就有一个概念那就AndFix.apatch补丁用来修复方法,接下来我们看看到底是怎么实现的. 1.2 生成apatch包 假如我们收到了用户上传的崩溃信息,我们改完需要修复的Bug,这个时候就会有 ...

  6. Android热修复之 阿里开源的热补丁

    1.概述   上一期讲到Android热修复之 - 收集崩溃信息上传至服务器,我们获取到用户手中上线的崩溃信息上传到服务器后该怎么办?如果直接发布版本要用户去下载肯定不乐意.这一期我们来看一下怎么去打 ...

  7. Android热修复之 - 阿里开源的热补丁

    1.1 基本介绍 我们先去github上面了解它https://github.com/alibaba/AndFix 这里就有一个概念那就AndFix.apatch补丁用来修复方法,接下来我们看看到底是 ...

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

    本文通过类加载机制实现Android热修复,Demo实现的功能:检测服务器是否存在补丁,存在即下载补丁,安装补丁,重启APP生效.支持多个补丁包修复:如果已经下载了多个补丁包,重启app对补丁包进行排 ...

  9. (十四)Tinker 热修复原理及手写实现

    版权声明:本文为博主原创文章,未经博主允许不得转载. 本文纯个人学习笔记,由于水平有限,难免有所出错,有发现的可以交流一下. 一.热修复 热补丁方案有很多,其中比较出名的有阿里的 AndFix.美团的 ...

最新文章

  1. 毕业后五年拉开差距的原因在哪里
  2. libevent 1.4.13 / 源代码文件组织
  3. 几种HtmlEncode的区别(转)
  4. python填表_小Python填表得到d
  5. 数据库设计五要点 让数据库设计更加规范
  6. nuxt解决首屏加载慢问题_Nuxt.js超过Vue.js:你什么时候应该使用它,为什么
  7. mysqld_exporter报错Error 1146: Table 'my2.status' doesn't exist
  8. 为什么现在电脑基本没有病毒了?
  9. java8 stream ,filter 等功能代替for循环
  10. Windows命令行netsh winsock reset解决网络连接问题
  11. NLPIR/ICTCLAS中文分词系统 java相关api文档总结
  12. 在hive上创建数据
  13. 【Day 3】机器阅读理解——常见机器阅读理解模型(下)
  14. maven打jar包时报update interval of XXX has elapsed or updates are force
  15. C++OpenCV实现抠除(也可用于更换)证件照背景
  16. Coursera登不上的全套方法
  17. Makefile教程(超级详细)
  18. 信息安全概论作业题(精简版)
  19. Unity 工具 之 CurvedUI (曲面UI)一些基本操作和CUSTOM_RAY 射线交互时注意事项整理
  20. 进程同步算法实现实验报告Linux,进程同步:实验报告

热门文章

  1. Vue的传值方式(二)——双向数据绑定【v-model】
  2. 4.GSM、WCDMA、TD-SCDMA、CDMA2000、LTE、5G
  3. php stristr,PHP中strpos、strstr和stripos、stristr函数分析
  4. 【英语四六级-必背单词】高中英语单词(A - 1) MP3试听与下载
  5. Linux设备模型分析之kset(基于3.10.1内核)
  6. 后端数据校验之JSR303
  7. 无法建立到远程计算机连接怎么回事,错误619不能建立到远程计算机的连接解决办法...
  8. 论文阅读及神经网络学习----Neural Networks for Multi-Instance Learning
  9. 【RT-Thread 开源作品秀】基于 RT-Thread 的“数码小精灵”设计与实现
  10. 这个省这样规定:三类人员可直接给予青年基金项目~