Sophix热修复实践
来源:互联网 发布:之二虫又何知的之 编辑:程序博客网 时间:2024/05/18 12:03
实践环境
1 . Android Studio
2 . win10 64位
集成步骤
在阿里云控制台新建app
- 获取appId、secret、以及rsa秘钥 网址链接
依次点击产品->移动服务->移动热修复
点击管理控制台
进入到后台 新建app 查看三个配置参数
app配置
1 . 在app中的build.gradle
中配置maven仓库和依赖
repositories { maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }}dependencies { ... //如果其它阿里系SDK也可能依赖了utdid这个SDK, 编译期间报utdid重复, 此时进行如下处理即可, // 关闭传递性依赖,没有其他可以将大括号删除: compile ('com.aliyun.ams:alicloud-android-hotfix:3.0.3') { exclude(module:'alicloud-android-utdid') } ...}
2 . 在AndroidManifest
文件中添加Sophix
权限
<!--网络权限--> <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
文件中配置上个步骤获取到的appId、secret、rsa秘钥
<meta-data android:name="com.taobao.android.hotfix.IDSECRET" android:value="your id" /> <meta-data android:name="com.taobao.android.hotfix.APPSECRET" android:value="your secret" /> <meta-data android:name="com.taobao.android.hotfix.RSASECRET" android:value="your rsa" />
4 . 新建Application子类
在
attachBaseContext
初始化SophixManager
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); // initialize最好放在attachBaseContext最前面 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) { // 表明补丁加载成功 } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) { // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启; // 建议: 用户可以监听进入后台事件, 然后应用自杀 // SophixManager.getInstance().killProcessSafely();//安全自杀应用推荐 } else if (code == PatchStatus.CODE_LOAD_FAIL) { // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载 SophixManager.getInstance().cleanPatches(); } else { // 其它错误信息, 查看PatchStatus类说明 Log.d("lzc", code + ""); } } }).initialize(); }
注意:上面的appVersion与app版本无关可以自己定义只要与自己控制台中版本一致即可。我这里定义的是private static final String appVersion = “1.0.0”;
在
onCreate
中请求差异包
// queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中 SophixManager.getInstance().queryAndLoadNewPatch();
5 . 混淆配置
在app目录下的proguard-rules.pro
文件下添加如下代码:
#基线包使用,生成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
测试Sophix
1 . 下载window 差异打包工具
链接地址
2 . 将新旧差异包差异打包
3 . 这其中可以设置差异包所用到的签名,签名必须与app签名一致 保证安全性
4 . 点击go 就会生成差异包以.jar结尾 路劲就是自己设定的
5 . 将生成的差异包上传至控制台
下发差异包之前最好先下载阿里提供的测试工具测试一下差异包是否能用然后在灰度下发在全量下发
6 . 下载阿里差异包测试工具
下载地址
7 . 将旧的apk和调试工具装在手机中 打开调试工具 输入包名->连接应用->扫描二维码 观察下方输出的日志
8 . 成功的话就可以开始下发差异包了,之后就可以观察手机中旧的apk发生了变化了
官方接入指南
- Sophix热修复实践
- sophix热修复笔记
- 热修复技术 Sophix
- 阿里SopHix热修复框架操作实践基础步骤
- 阿里热修复方案Sophix
- sophix热修复技术使用
- 阿里热修复框架Sophix
- 阿里热修复之Sophix
- 阿里热修复Sophix 3.0
- 浅析Android热修复sophix
- Android热修复之Sophix初探
- Sophix热修复问题以及加固
- Android热修复方案--sophix简单使用
- 移动热修复Sophix之初体验
- 阿里热修复——sophix
- 阿里SopHix热修复框架接入
- 阿里云热修复sophix详解
- android热修复-阿里Hotfix最新版(Sophix)
- Integration Testing FTP Connections in .NET
- java反射基础知识总结
- spring boot项目整合activiti后,打开页面需要验证
- web的屏幕自适应
- 父子组件通信-props属性
- Sophix热修复实践
- eclipse下载springboot插件到创建springboot项目
- 我的健身计划
- qml使用opengl渲染yuv
- ruby 中 Range类
- Java 登录过滤器
- 日期 yyyy-mm-dd 的正则表达式(能够区分真实日期,区分闰年)
- K-means、K-means ++、K-modes和K-prototype聚类算法简述 附Python代码
- 最新中国省市区JSON数据 ES6导出