阿里SopHix热修复框架

Android 接入阿里热修复Sophix框架 一:为什么选阿里热修复 二:阿里热修复的原理(Sophix技术概览:https://yq.aliyun.com/articles/103527) 三:创建产品及应用(一二三点,都在阿里云官网可以看到) 1.1 找到移动研发平台入口 在阿里云官网,找到:移动研发平台,点击后,进入到移动研发平台官网详情页面 点击后,进入到移动研发平台(Enterprise Mobile A... 阅读详情

2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案、阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner热更新)和阿里最新出品Sophix.它们在原理各有不同,适用场景各异。不过从技术上来说多数热修复框架是基于ClassLoader加载机制。下面是常见热修复框架的比较。
这里写图片描述

开通热修复服务

读者可以打开Sophix热修复的官网:Sophix官网1、注册阿里云账号,选择移动热修复服务 ,选择之后需要开通此功能,点击立即开通即可。

2、打开管理控制台,点击右上角创建APP。 

3、点击Hoxfix列表android版本的app后面的管理即可查看基本信息(AppId、AppSecret和密钥)。

本地接入热修复服务

1,添加依赖库和包
打开项目的app的build.gradle文件,添加maven仓库地址和hotfix库依赖:

复制代码
repositories {
   maven {
       url "http://maven.aliyun.com/nexus/content/repositories/releases"
   }
}

dependencies {
    compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.0'
}
复制代码

注:如果项目中也依赖其它阿里系SDK,可能会同时依赖了utdid这个SDK,为了避免冲突可以这样。

dependencies {
      compile ('com.aliyun.ams:alicloud-android-hotfix:3.1.0') {
           exclude(module:'alicloud-android-utdid')
      }
}

2,AndroidManifest相关配置
在AndroidManifest配置文件中添加如下配置:

复制代码
<!-- 网络权限 -->
<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标签下添加如下信息:

复制代码
1 <meta-data
2             android:name="com.taobao.android.hotfix.IDSECRET"
3             android:value="AppId" />
4 <meta-data
5             android:name="com.taobao.android.hotfix.APPSECRET"
6             android:value="AppSecret" />
7 <meta-data
8             android:name="com.taobao.android.hotfix.RSASECRET"
9             android:value="RSA密钥" />
复制代码

3,在Application中初始化Sophix。
initialize的调用应该尽可能的早,必须在Application.attachBaseContext()或者Application.onCreate()的最开始进行SDK初始化操作,否则极有可能导致崩溃。而查询服务器是否有可用补丁的操作可以在后面的任意地方。
例如:

复制代码
 1 public class SophixApp extends Application {
 2 
 3     @Override
 4     public void onCreate() {
 5         super.onCreate();
 6         initSophix();
 7     }
 8 
 9     private void initSophix() {
10         String appVersion;
11 
12         try {
13             appVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
14         } catch (PackageManager.NameNotFoundException e) {
15             appVersion = "1.0.0";
16             e.printStackTrace();
17         }
18 
19         // initialize最好放在attachBaseContext最前面
20         SophixManager.getInstance().setContext(this)
21                 .setAppVersion(appVersion)
22                 .setAesKey(null)
23                 .setEnableDebug(true)
24                 .setPatchLoadStatusStub(new PatchLoadStatusListener() {
25                     @Override
26                     public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
27                         // 补丁加载回调通知
28                         if (code == PatchStatus.CODE_LOAD_SUCCESS) {
29                             // 表明补丁加载成功
30                         } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
31                             // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
32                             // 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3
33                         } else {
34                             // 其它错误信息, 查看PatchStatus类说明
35                         }
36                     }
37                 }).initialize();
38         // queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
39         SophixManager.getInstance().queryAndLoadNewPatch();
40     }
41 
42 }
复制代码

记得在AndroidManifest中使用我们自己的Application。

生成补丁并上传到控制台

1,为了简单,我们需要生成两个apk,两个apk做一个简单的内容区分即可。将第一个命名为old.apk,代码如下:

复制代码
 1 public class MainActivity extends AppCompatActivity {
 2 
 3     private TextView mTextView;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9 
10         mTextView = (TextView) findViewById(R.id.textView);
11         mTextView.setText("版本修复前");
12 
13     }
14 }
复制代码

将第二个命名为new.apk,内容如下:

复制代码
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       TextView tv= findViewById(R.id.fix_text);
       tv.setText("版本修复后数据...");
       Toast.makeText(this,"版本修复完成",Toast.LENGTH_LONG).show();
    }
}
复制代码

2,生成补丁的话需要下载阿里的打补丁工具SophixPatchTool,选择对应的平台,然后分别选择两次打包生成的apk,点击go即可。
这里写图片描述

补丁生成后,上传到阿里云平台,版本信息和代码的versionName对应。 

 

然后点击上传补丁即可。 

 

 

在选择正式发布之前,官方建议您先进行本地测试。下载hotfixdebug工具安装后,填写包名,点击连接应用,然后扫描补丁详情中的二维码下载补丁。或者将补丁包放到手机sdcard,填写绝对路径也是可以的。 

 

 

Sophix介绍与实践 1.    介绍 移动热修复(Sophix)是阿里云提供的Android平台App热修复服务方案 2. Sophix优势 通过比较可以发现Sophix相比其他平台的实现更具优势 A.对于部分修改,补丁即时生效,不需要应用重启(这个还得看情况,较大的修改或者修改类结构之类的,会导致重启) B.补丁包同样采用差异技术,生成的PATCH体积小 C.对应用无侵入,几乎没有性能损耗 阅读详情

相关推荐

阿里Sophix热更新实战:从加固App打包到补丁发布的完整避坑指南

本文详细解析了阿里Sophix热更新在加固App环境下的全链路解决方案,从加固与热修复的兼容性挑战到补丁生成与发布的正确流程,提供了完整的避坑指南。重点介绍了Sophix在加固场景下的特殊配置要点和最佳实践,帮助开发者高效实现热更新功能。

weixin_30699955的博客 412

阿里SopHix热修复框架接入

2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案、阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner热更新)和阿里最新出品Sophix.它们在原理各有不同,适用场景各异。不过从技术上来说多数热修复框架是基于ClassLoader加载机制。下面是常见热修复框架的比较。 开通热修复服务读者可以打开Sop

xiangzhihong8的专栏 2545

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

本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结 通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构。 一、什么是热修复? 正常开发流程 热修复开发流程 热修复优势 修复什么? 二、热修复框架分类 现状:百花齐放百家争鸣 简单分类 更合理的分类 三、技术原...

weixin_45258969的博客 1168

阿里Sophix热修复接入指南

接入之前我们先来看下阿里官网的对比图: 注册阿里云账号,选择移动热修复服务 ,选择之后需要开通此功能,点击立即开通即可,Sophix地址 点击创建应用,如图: 配置: Android Studio接入,首先在app目录下的build.gradle文件添加依赖,如图 原谅我不会截长图,这里就分成了两张图展示了 在AndroidManifest添加权限和配置代码如下: <?xml v...

weixin_42371001的博客 1278

Android 热修复Bugly和Sophix介绍

最近在学习热修复技术,主流的就是阿里的AndFix基础上开发的商业级框架Sophix和腾讯在tinker基础上开发的商业级框架Bugly,当然热修复都只是两者其中的一部分功能,还有一些其他的功能 一、Sophix 特点: 1、从底层native直接替换原有方法,在原来类的基础上进行修改。核心在于replaceMethod函数,所以只支持方法的替换,对于方法的增删、资源更新、so文件更新、类的属性替换都不支持。 2、可以立即生效,消耗很低,实测上传官网之后可以立即进行修改 3、补丁包很小,下面的就是之前实际

明天的增加的博客 720

Android移动开发,常用热修复框架

Android移动开发,常用热修复框架

snmkc_csdn的博客 1736

阿里云Sophix热修复框架的接入简述

阿里云Sophix热修复框架的接入简述 目前来说Android开发热修复可以说是一个标准商业项目必备的基础功能,便于上线后的紧急问题修复。(ps,不论怎么测试,似乎上线后的app,总会有一些测试期间发现不了的Bug,

志威梦优快云博客 490

图片热区JS插件实战:归一化坐标、命中检测与响应式适配

图片热区是在图片上划分可交互区域的前端技术,核心是把区域抽象为与分辨率无关的几何数据。通过归一化坐标将原图像素映射为 0~1 的比例值,再结合矩形、圆形、多边形的命中检测算法,即可在不同容器尺寸下稳定还原点击位置。这种方案让热点跟随图片缩放与响应式布局,避免写死 px 导致的整体偏移。它广泛用于产品图标注、设备示意图、教学图示与展厅导览,配合 SVG 叠加层还能实现悬停高亮与移动端手势适配。

weixin_34342905的博客 278

阿里Sophix热修复框架使用入门

        目前的热修复框架,最强大的当属阿里的Sophix了,虽然是收费,但对于小众的APP来说,很可能不会超过免费的阀值(每月5万台设备免费,每台设备每天20次免费查询补丁),再说也不妨碍我们研究下怎么用,听说用起来很方便,对程序员几乎是傻瓜式的,对我来说这点就是极大的诱惑了。事实证明,Sophix确实非常简单易用,根本不需要关心补丁怎么下载,怎么放置,怎么替换,整个流程只需要一个接口调用...

qugengting的博客 4839

使用模拟工具Modbus poll 和PLC 通讯

使用模拟工具Modbus poll 和PLC 通讯 简介 Modbus Poll 是一个模拟Modbus 主站的工具。不用在现场调试,在家也能使用,方便快捷的调试验证程序。使用它可以和PLC进行Modbus TCP /RTU 通讯等功能,接下来为大家介绍使用Modbus Poll 和 PLC 进行 Modbus TCP 通讯。 组态PLC PLC作为我们的从站和Modbus Poll 通讯,那我们组态一个PLC。 创建通信DB 创建一个DB块,在数据类型处输入:TCON_IP_V4

weixin_61398412的博客 1万+

基于COMSOL电弧动态仿真模型优化:高收敛性可修改吹弧方案解析

在多物理场耦合分析中,电弧动态仿真历来是数值稳定性的难点:温度从室温跃升至数万开尔文,电导率随温度呈数量级跳变,流动、传热与电磁场相互牵制,极易引发求解器不收敛或初始值不一致等问题。如何构建高收敛性的数值模型,成为开关设备灭弧性能优化的重要技术基础。通过合理的几何简化、全耦合求解器配置、辅助扫描初始化策略以及参数化建模手段,可以实现对吹弧方案的灵活调整与批量寻优,从而系统性评估气流速度、喷口形状、触头间距等关键因素对熄弧性能的影响。这类仿真方法广泛应用于断路器、接触器等高压电器产品研发,为灭弧室结构设计提供

weixin_29758911的博客 350

关于阿里热修复框架Sophix集成

最近在做一个手表项目,由于手表平台对于应用的更新方式有限制,流程比较繁琐,所以考虑使用热更新框架来做,市面上面比较火的就是 (表格1来自Tinker官网) Tinker QZone AndFix Robust 类替换 yes yes no So替换 yes no no 资源替换 yes yes no 全平台支持 yes yes yes 即时生效 no no yes ...

moon-sky的专栏 900

ST-Link使用教程

关于使用ST-Link烧录.hex文件教程。以及报错解决!适合刷ARM,使用STM32的教程!

qq_42977675的博客 1万+

阿里Sophix热修复框架注意要点

  今天测试了一下阿里的Sophix热修复框架,然后搞了一下午,始终无法正常的联网更新,一开始一直以为是权限问题,后来发现是参数填写错误了,所以在博客里面记录一下,如果后续需要使用的话,可以避免掉(小小的吐槽一下,Sophix这个名字第一眼看着我以为是凤凰的意思,还感叹了一下别人起名字就是这么艺术,凤凰浴火重生嘛,完美契合热修复主题。然后后来发现是我英语太渣了。。。。。)   SophixMana...

拥抱世界 434

电压抬升电路设计

一、实验目的 掌握集成运放电压放大电路设计基本方法。 掌握基本仪器使用方法(电源、信号发生器、示波器)。 二、实验内容及结果 实验内容 基于集成运放设计一传感器信号采集电路。传感器输出信号在±50mV,频率为100Hz以内,模数转换器允许输入电压在0~5V,要求设计传感器与模数转换器之间的信号采集电路,实现传感器信号放大10倍,并适合模数转换器的输入。模数转换器的输入电阻为1KHz,设计电路时,可使用1KHz电阻作为信号采集电路负载,代替模数转换器。 实验具体要求如下: (1)确定电路形式,说明电压转

Safaearth的博客 4万+

IP2315高效同步降压充电IC在快充应用中的硬件与软件控制策略

本文深入解析IP2315高效同步降压充电IC在快充应用中的硬件与软件控制策略,涵盖其核心特性、硬件电阻调节技巧、I2C动态控制方案、散热设计优化及典型问题排查。IP2315支持多种快充协议,如Type-C PD、华为FCP等,适用于便携设备快速充电需求,并通过I2C实现灵活的充电参数设置,提升充电效率与安全性。

weixin_29248313的博客 538

阿里SopHix热修复框架操作实践基础步骤

首先第一步去阿里云申请注册账户,接下来是管理后台使用说明,链接如下: https://help.aliyun.com/document_detail/51434.html?spm=5176.doc53287.6.552.vZxNDm#Step5 发布补丁 列表内容在android studio 上创建一个app项目工程,从管理后台获取AppId,和AppSecret以及RSA密钥。 上面三个

qq_27686729的博客 3189

从零构建爬虫抓取故宫数字文物库:Python最新实战技术详解

熟悉了动态内容加载的网页结构解析技巧。掌握了 Playwright + BeautifulSoup 的组合用法。实现了从网页→JSON→详情→图像的完整数据闭环。掌握了结构化保存与可视化分析能力。

2201_76125261的博客 1304

Android的热修复技术--阿里的hotfix试用

热修复技术就是不重新启动APP和用户无感知的情况下,对应用进行增量的补丁更新。好处就不说了,好处太多了。即便有些功能无法做到不重启应用,但是这种增量只更新补丁包的方式还是很赞,只需要应用冷启动一下就自动完成了更新包的加载。至少不用再升级发布一次了。 Android的热修复框架有很多。如阿里的andfix,hotfix,微信的tinker和美团的Robust等。 要说哪个最简单最好用,...

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 3085

RK3568笔记九十四:基于QT的YOLOV5目标检测

基于RK3568平台的实时目标检测应用,使用YOLOv5模型和RKNN推理引擎实现摄像头实时目标检测,并通过Qt界面显示检测结果。主要功能实时摄像头目标检测:从摄像头获取视频流,使用YOLOv5模型进行目标检测RKNN推理加速:利用RK3568内置的NPU进行模型推理加速图形界面显示:使用Qt框架构建用户界面,实时显示检测结果RGA图像处理:使用Rockchip Graphic Accelerator进行图像缩放处理。

522

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android探索之旅(第二十五篇)腾讯热修复框架Tinker与阿里第三代热修复框架Sophix对比

本人在开发项目中仍然使用的还是Tinker热修复框架,在项目中遇到Bug,Tinker都能够解决,可以说是万无一失,但是在互联网时代也必须怀揣着新生的事物必将取代先前的事物的心态,因此就索性集成了Sophix,下面由我来分析一下它们之间的区别 从上表格中Sophix热修复框架相比之前的热修复框架(Tinker,AndFix,QZone,Robust)有几项优势 一.Sophix集成方式极其

移动开发Android 2237

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最通俗易懂的Android热修复技术原理详解

本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构。 一、什么是热修复? 正常开发流程 热修复开发流程 热修复优势 修复什么? 二、热修复框架分类 现状:百花齐放百家争鸣 ...

Swust_ZzK的博客 319

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android 热修复的尝试(阿里的sophix和腾讯的bugly)记录

移动端的热修复,近期都很火,由于个人的能力有限,一直没有深处去了解,这里就不去详细分析市面上流行的热修复框架那些了,度娘上面,资料多的是,我这边也是成功实现了两个热修复,一个是阿里云的sophix,傻瓜式接入,设备到达一定的数量之后,开始按梯级式,收费,这样的话,对于我这种个人开发者,就感觉有点压力(虽然我也没有开发出那过万台的用户使用量的app),第二的是腾讯的bugly(...

qq_36771930的博客 1617

Android Mobile Hotfix(阿里云——移动热修复接入)

首先你需要注册并登陆 阿里云移动研发平台,查看官方文档,下载SDK等,集成过程并不复杂。本文主要记录接入流程跟遇到的问题 什么是热修复 热修复,是一种使用补丁来更新修复的手段。不需要通过重新发布App,下载安装等一系列繁琐的过程。 热修复原理 总结参考文档,修复框架很多,但热修复框架的核心技术主要有三类 代码修复 资源修复 动态链接库修复 代码修复主要有三个方案,分别是底层替换方案、...

Android_man_me的专栏 1454
上一篇: Android热修复之 - 收集崩溃信息上传服务器
下一篇: LXC 1.0: Some more advanced container usage [4/10] Android and LXC
Omni-Space
博客等级 码龄11年 2158粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值