1.快速集成
1.成为开发者,并创建一个应用,申请使用热更新(申请需要写理由,审核时间为4小时以内)
2.下载需要的资料
http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.D8AbfB&treeId=234&articleId=105517&docType=1
里面有BCFixPatchTools-1.2.0.jar,这个打补丁的时候会使用到
3.添加maven仓库地址:
repositories {
maven {
url"http://repo.baichuan-android.taobao.com/content/groups/public/"
}
}
4.添加gradle坐标版本依赖:
dependencies {
compile'com.alibaba.sdk.android.plugins:alisdk-hotfix:1.3.3'
compile'com.alibaba.sdk.android.plugins.jar:alisdk-utdid:0.0.1'
}
5.权限说明
6.节点配置
7.混淆配置
-keepclass*extendsjava.lang.annotation.Annotation
-keepclasseswithmembernamesclass* {
native;
}
-keepclasscom.alipay.euler.andfix.**{
*;
}
-keepclasscom.taobao.hotfix.aidl.**{*;}
-keepclasscom.ta.utdid2.device.**{*;}
-keepclasscom.taobao.hotfix.HotFixManager{
public*;
}
8.application初始化,appVersion必须和后台配置的一样
2.生成patch补丁
1. 把BCFixPatchTools-1.2.0.jar放入该目录下
2. 新建一个patch_out文件夹作为最后补丁输出目录
3. 把原apk和修复后的apk也放置到该目录中, 打包命令参考(debug: `./gradlew clean assembleDebug` release:`./gradlew clean assembleRelease`), ps:请勿直接使用AS即时编译Instance Run出的apk产物进行打补丁操作.
4. hotfix_demo目录下执行以下命令
java -jar E:\HotFix\puth\BCFixPatchTools-1.2.0.jar -cmd patch -src_apk E:\HotFix\puth\app-debug-old.apk -fixed_apk E:\HotFix\puth\app-debug-new.apk -wp E:\HotFix\puth\output
-cmd: 值为patch: 打补丁命令 值为help: 查看使用说明
-src_apk:填写本地的原始APK(有问题的APK)的绝对路径,如果文件找不到会报错, 必选
-fixed_apk:已经修复过该问题APK的绝对路径, 必选
-wp:输出patch的绝对路径, 必选
-sign_file_url:本地的签名文件的绝对路径,不输入或者不正确则不做签名, 可选
-sign_file_pass: 证书文件的密码
-sign_alias: 证书的别名
-sign_alias_pass: 证书别名的密码
如果不输入-sign_**相关的签名参数, 那么hotfix-working目录下生成未签名的baichuan-hotfix-patch.jar补丁包, 如果输入了签名相关参数, 那么hotfix-working目录下会生成baichuan-hotfix-patch-unsigned.jar(未签名补丁包)和baichuan-hotfix-patch.jar(签名补丁包), 如果没有baichuan-hotfix-patch.jar(签名补丁包)则表示签名失败.
filterClassFilePath:本地的白名单类列表文件的绝对路径,放进去的类不会再计算patch,可选
filterClassFilePath参数的使用参考Demo工程下README.md文件的说明, 同时该文件的格式:每行一个类名, 必须包含包名前缀, 暂时不提供整包过滤
PatchLoadStatusListener接口
该接口需要自行实现并传入initialize方法中, 补丁加载状态会回调给该接口, 参数说明如下:
mode: 补丁模式, 0:正常请求模式 1:扫码模式 2:本地补丁模式
code: 补丁加载状态码, 详情查看PatchStatusCode类说明
info: 补丁加载详细说明, 详情查看PatchStatusCode类说明
handlePatchVersion: 当前处理的补丁版本号, 0:无 -1:本地补丁 其它:后台补丁
github源码:https://github.com/LostDeer/HotFix