Sophix介绍与实践

本文介绍了阿里云的移动热修复服务Sophix,包括其优势、原理、接入步骤、补丁工具及调试工具的下载与使用,以及补丁的生命周期管理和加载机制。Sophix支持代码、资源和SO修复,但不支持四大组件的新增或更改修复。通过初始化方法、监听器接口和关键方法的解析,展示了Sophix如何实现Android App的热修复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.    介绍

移动热修复(Sophix)是阿里云提供的Android平台App热修复服务方案

2. Sophix优势


通过比较可以发现Sophix相比其他平台的实现更具优势

A.对于部分修改,补丁即时生效,不需要应用重启(这个还得看情况,较大的修改或者修改类结构之类的,会导致重启)

B.补丁包同样采用差异技术,生成的PATCH体积小

C.对应用无侵入,几乎没有性能损耗

D.傻瓜式接入

E.能够实现代码修复、资源修复、so修复等方面,因此更加全面的满足修复要求。

 

缺点:

A. 不支持四大组件的修复,这里的修复是新增,或更改。因为如果要修复四大组件,必须在AndroidManifest里面预先插入代理组件,并且尽可能声明所有的权限,这么做会给原先的App添加很多臃肿的代码,对app的侵入性很强,因此不支持四大组件新增和更改的修复,但是四大组件里面的代码是可以修复的。

 

1.    Sophix原理简单介绍

Sophix的代码修复体系同时涵盖了底层替换方案和类加载方案,两种方案的结合,可以实现优势互补,完全兼容的作用,可以灵活的根据实际情况启动切换。在生成补丁时,补丁工具会根据实际代码变动情况进行自动选择,针对小修改,在底层替换方案限制范围内的,就直接采用底层替换修复,这样可以做到代码修复即时生效,而对于代码修改超出底层替换限制的,会使用类加载替换,虽然及时性不是很好,但是可以达到热修复目的。

4.阿里巴巴提供的快速接入文档:

https://help.aliyun.com/document_detail/53240.html?spm=5176.doc53238.6.546.T3HWbI

2.    补丁工具下载地址

Window:

http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_windows.zip?spm=5176.doc53247.2.2.2ur263&file=SophixPatchTool_windows.zip

 Mac

http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_macos.zip?spm=5176.doc53247.2.1.2ur263&file=SophixPatchTool_macos.zip

Linux

http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_linux.zip?spm=5176.doc53247.2.3.2ur263&file=SophixPatchTool_linux.zip

 

3.    补丁工具使用文档

https://help.aliyun.com/document_detail/53247.html?spm=5176.doc53248.6.548.lHabEj

 

4.    调试工具下载地址

http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/hotfix_debug_tool-release.apk?spm=5176.doc53247.2.4.2ur263&file=hotfix_debug_tool-release.apk

 

5.    调试工具使用文档:

https://help.aliyun.com/document_detail/53248.html?spm=5176.doc53247.6.549.zPEvTh

 

 

Demo实践

在新建项目之前,需要提前在阿里云移动热修复中申请账号,并创建相应的App。审核通过后再进行剩余操作。

1.    新建Sophix工程

2.    在工程中配置Sophix依赖

A. 在根节点下配置阿里云仓库

repositories {
    //阿里云仓库
    maven {
        url "http://maven.aliyun.com/nexus/content/repositories/releases"
    }
}
B.在依赖(dependencies)中添加
compile 'com.aliyun.ams:alicloud-android-hotfix:3.0.5'

C. 本Demo为了兼容Android6.0,增加了v7兼容包

compile 'com.android.support:appcompat-v7:25.0.1'
3.  配置混淆
#基线包使用,生成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.**{*;}
#防止inline
-dontoptimize
4.配置相关权限
<!-- 网络权限 -->
<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" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

5.在Application节点中添加阿里云热修复服务后台申请的App id ,App Secrets和RSA密钥

<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 secrets" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="app rsa密钥" />
6. 建立Application的子类,并在Manifest中添加。在Application子类的attachBaseContext方法最前面或者onCreate方法最前面完成SophixManager的初始化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值