阿里百川HotFix的简单实践

这是在公司做的一个关于热修复的技术分享

是刚推出的时候就关注的.其中的一些问题和经验写在前面,其中也有使用上的谬误,关于版本号的理解,后来咨询@悟二解决的.由于当初做的是ppt现在转换成图片格式.
若有不足之处,欢迎拍砖.

 实际使用的总结
1.version name  应该和原项目一致
2.同一台手机加载成功后,卸载再安装统计上只会出现一次
3.未安装app的手机第一次安装,patch即会打入进去
4.在测试中三星手机到达率要低于其他的手机
5.dagger rxjava 项目中都有使用,修改方法补丁也可顺利到达
阿里百川HotFix简单实践(1)0000.jpg
阿里百川HotFix简单实践(1)0001.jpg
阿里百川HotFix简单实践(1)0002.jpg
阿里百川HotFix简单实践(1)0003.jpg

备注此处是最新的依赖

添加maven仓库地址:

repositories {   
maven {      
url "http://repo.baichuan-android.taobao.com/content/groups/public/"  
  }
}

添加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'
}

特别说明
如果编译期间报utdid类重复异常,
那么应该是其它阿里系SDK也依赖了utdid这个SDK, 此时去掉
compile'com.alibaba.sdk.android.plugins.jar:alisdk-utdid:0.0.1'
现在项目中集成了友盟统计,出现了这个问题

3.初始化

初始化 2016-11-28 下午5.41.19.png

特别的说明关于SO库的处理

当前项目集成了高德地图,按照官方文档操作操作即可,以下为特别的说明

不管是android studio/eclipse集成方式都务必做如下检查! 否则将抛UnsatisfiedLinkError异常导致补丁加载失败

检查当前项目结构jniLibs中是否有armeabi-v7a, arm64-v8a目录, 如果有: 请复制下载SDK(SDK下载&版本更新记录里“SDK”项下载下来, 然后解压)文件夹中armeabi-v7a/arm64-v8a目录下对应的so文件到对应的文件夹下面. 如果没有armeabi-v7a/arm64-v8a目录, 则不需要做这个处理。
PS:hotfix这样处理的目的: 减少jar包大小进而减少apk大小. 所以alisdk-hotfix-**.aar中只有armeabi下的libandfix.so文件, 所以如果当前项目目录下有armeabi-v7a/arm64-v8a目录, 但是没有复制对应的libandfix.so文件进去, 那么在相应cpu架构的机型下加载libandfix.so就会报找不到so文件的异常(UnsatisfiedLinkError)
如果做了上述处理仍然发现UnsatisfiedLinkError异常, 那么请确保是否是打包引起的问题, 解压apk, 看libs下armeabi-v7a/arm64-v8a目录是否有对应的libandfix.so文件

生成patch

参数说明

-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,文件格式: 一行一个类名. 可选

demo示例

java -jar BCFixPatchTools-1.3.0.jar -c patch -s old.apk -f new.apk -w patch-out -k test.keystore -p test123 -a test123 -e test123 -l filterClass.txt

filterClass.txt文件内容如下: 表示A类和B类不会比较在新旧apk中的差异直接过滤.
最后baichuan-hotfix-patch.jar补丁文件在patch-out/hotfix-working目录

补丁包的生成有一些细节需要注意,特别强调按照官方文档操作
再次强调版本号的问题,新旧项目版本号一致
如果生成过程提示JniLibs不存在,可做如下操作

jni.png

上传补丁

阿里百川HotFix简单实践(1)0006.jpg

关于灰度发布的说明,感觉上这个地方很有意思,实际上测试存在很多种,AB,灰度等等.
百川的灰度是完全的随机,并不是想象的可以基于Android版本或者品牌来操作.
臆测这种完全的随机才能体现真正的补丁到达率.

使用测试工具

补丁顺利下拉,接下来应该是皆大欢喜的结局,然而.....
verifyApk.failed

阿里百川HotFix简单实践(1)0007.png
阿里百川HotFix简单实践(1)0008.jpg

李四他爹不知不觉成了老王!!!

补丁结果图片.png

关于混淆

现在有了各种加固方式混淆的意义没有当时那么重要,实际上混淆的另一个意义是瘦身,百川对于混淆这个地方有特别的说明。

-keep class * extends java.lang.annotation.Annotation
-keepclasseswithmembernames class * {
    native <methods>;
}
-keep class com.alipay.euler.andfix.**{
    *;
}
-keep class com.taobao.hotfix.aidl.**{*;}
-keep class com.ta.utdid2.device.**{*;}
-keep class com.taobao.hotfix.HotFixManager{
    public *;
}

---------------总结分割线------------

项目中目前集成了热修复,但并未使用,如之前所说的在技术选型上的考虑(红色标注的地方),当然各家公司需求也不一样,可斟酌选择.阿里百川较容易的实现了热修复功能,有些高级用法还是要参见官方文档和Demo

附链接

http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.IJz6Sj&treeId=234&articleId=105457&docType=1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容