如何使用阿里百川hotfix热修复功能(三)
来源:互联网 发布:vb安装未响应 编辑:程序博客网 时间:2024/06/05 04:14
这章我们进行patch补丁操作,参考 : 如何使用阿里百川hotfix热修复功能(一) 如何使用阿里百川hotfix热修复功能(二)
1.下载打包工具
patch补丁包生成需要使用到打补丁工具BCFixPatchTools-1.3.0.jar
, 如还未下载打包工具,请前往文档SDK下载&版本更新记录下载Android打包工具,
注意:
*该工具需要在JDK7或以上才能正常使用
*查看补丁工具使用说明 输入以下命令:
Java -jar BCFixPatchTools-1.3.0.jar -cmd help
2.window用户使用cmd命令查看帮助,
在BCFixPatchTools-1.3.0.jar 目录下,输入:
java -jar BCFixPatchTools-1.3.0.jar -cmd help
可以看到对应的window,Linux ,mac生成方法:
3.生成补丁
我们需要根据输入命令生成补丁,并把补丁在阿里百川后台发布
这里,因为我的电脑是window7,所以使用window的方法,
3.1 先生成一个签名的apk(i_zhiyuan_uc-1.6.apk)有问题的apk,保存在自己熟悉的路径;
3.2 修改过后,再生成一个签名的apk(i_zhiyuan_huawei-1.6.apk)修改过后没有问题的apk,并保存在自己熟悉的路径;
运行以下命令:
java -jar BCFixPatchTools-1.3.0.jar -c patch -s E:\app_android\APP\app\i_yuan_uc-1.6.apk -f E:\app_android\APP\app\i_yuan_huawei-1.6.apk -w patch-out -k E:\Android\keyStore\Key.store -p 123456 -a 123456 -e appkey -l E:\hotfix_app\patch-out\filterClass.txt
参数说明:
- -c, -cmd: 值为patch: 打补丁命令 值为help: 查看使用说明
- -s, -src_apk:填写本地的原始APK(有问题的APK). 必选
- -f, -fixed_apk:已经修复过该问题APK. 必选
- -w, -wp:输出patch的路径, 最后如果打补丁成功会在wp目录下自动创建的hotfix-working目录生成baichuan-hotfix-patch.jar补丁文件. 必选
- -k, -sign_file_url:本地的签名文件的路径,不输入则不做签名. 可选
- -p, -sign_file_pass: 证书文件的密码, 可选
- -a, -sign_alias: 证书的别名. 可选
- -e, -sign_alias_pass: 证书别名的密码. 可选
- -l, -filterClassFilePath:本地的白名单类列表文件的路径,放进去的类不会再计算patch,文件格式: 一行一个类名. 可选
add modified class
表示的是要修复的类,
这样就生成了补丁(baichuan-hotfix-patch.jar补丁文件在patch-out/hotfix-working目录下);
注意:这里使用了1.3的打补丁方法,如果使用1.2的,不支持keystore的签名方式,若使用了,请参考以下方法修改:
把这个未签名补丁包重命名为baichuan-hotfix-patch-unsigned.jar
我们使用(JDK默认签名工具jarsigner):输入以下命令:
jarsigner -keystore E:\app/keystore/app.store -storepass 12345 -keypass 12345 -signedjar baichuan-hotfix-patch.jar baichuan-hotfix-patch-unsigned.jar appkey
那么在当前目录下就会生成签名后的
baichuan-hotfix-patch.jar
,
然后我们就可以使用这个签名后的补丁包上传到服务器即可. 新增版本:
4.上传补丁
将生成的补丁上传到百川后台,这样就完成上传工作了。
5.我们可以使用官方提供的apk进行测试,连接应用并扫描后,看看返回的code参数,
- mode: 补丁模式, 0:正常请求模式 1:扫码模式 2:本地补丁模式
- code: 补丁加载状态码, 详情查看PatchStatusCode类说明
- info: 补丁加载详细说明, 详情查看PatchStatusCode类说明
- handlePatchVersion: 当前处理的补丁版本号, 0:无 -1:本地补丁 其它:后台补丁
这里列举几个常见的code码说明,
- code: 1 补丁加载成功
- code: 6 服务端没有最新可用的补丁
- code: 12 当前应用已经存在一个旧补丁, 应用重启尝试加载新补丁
- code: 13 补丁加载失败, 导致的原因很多种, 比如UnsatisfiedLinkError等异常, 此时应该严格检查logcat异常日志
- 暂时不支持新增方法, 新增字段, 但是支持新增类, 所以需要新增方法/字段可以通过新增类来实现
- 不支持资源修复, so修复
- 三星note3,S4,S5的5.0设备以及X86设备不支持(点击查看具体支持的机型)
- 参数包括long,double,float基本类型的方法不能被patch, 不包括基本类型封装类Long,Double,Float
- 被反射调用的非静态方法不能被patch
- 参数超过8的方法不能被patch
- 构造方法不能被patch
- 使用注解的方法视情况而定是否支持被patch(详细说明参考Demo工程
BaseBug.md
文件中关于注解的说明) - 泛型参数的方法如果patch存在兼容性问题
- 在打包的时候偶尔会存在两次打包内部类的名字不一致问题,这种情况会导致打AndFix打包失败,暂时无解
- 我们建议不要通过GooglePlay发布带热修复SDK的APP,存在政策风险
- 暂不支持android7.0
转载:http://blog.csdn.net/wsdbssxq/article/details/53288257
- 如何使用阿里百川hotfix热修复功能(三)
- 如何使用阿里百川hotfix热修复功能(三)
- 如何使用阿里百川hotfix热修复功能(一)
- 如何使用阿里百川hotfix热修复功能(二)
- 如何使用阿里百川hotfix热修复功能(一)
- 如何使用阿里百川hotfix热修复功能(二)
- Android:热修复(阿里hotfix使用)
- 阿里HotFix热修复的简单使用
- Android 热修复方案--阿里百川HotFix
- AndHotFix 阿里HotFix(热修复)
- 移动端热修复方案——阿里百川HotFix
- 阿里云HotFix热修复应用
- android热修复-阿里Hotfix最新版(Sophix)
- Android热修复原理(HotFix)初涉
- Hotfix热修复混淆
- iOS HotFix热修复
- HotFix热修复示例
- 阿里百川HotFix解决方案使用体验
- Redis config配置
- 【HDU3506,HOJ2952】Monkey Party-环状区间合并DP+四边形不等式优化
- eclipse安装SpringSource Update Site例子
- 利用Ansible,将Centos6的python的版本更新到2.7
- javascript的四种继承方式
- 如何使用阿里百川hotfix热修复功能(三)
- 统计学习方法:决策树
- react+webpack项目常用的插件(plugins)
- 我的Android进阶之旅------>Android通用流行框架大全
- RxSwift(3.4.1)- Observables
- Spring Boot 传参方式
- 使用IDEA和Maven创建Web项目
- hibernate常用注解
- Python网络编程基础