接入阿里百川Hotfix的过程(第一篇:配置及认识)

最近自己公司的项目打算做热更新,因为有一个很小的bug处理的时候居然一周发了三个新版本,所以就决定做热更新来避免这种尴尬!首先允许我偷偷地开心一下,因为ios的热更新被苹果和谐了,这一点上终于不用再跟ios同步了,虽然阿里百川的hotfix目前还有很多的限制,但是毕竟是阿里出的方便大家的,所以反复考虑后选择了这个,但是真正做起来发现坑还是很多!
好了废话不多说了,注册开发者,申请使用Hotfix这些步骤我就不多说了,相信做过集成的人都知道怎么做,接下来我就扒一扒他的快速集成指南!
最新的Hotfix版本已经更新到2.0,支持更强大,下面先上一个图,配置大同小异!

阿里百川Hotfix2.0
  • 首先进入app的build.gradle,repositories里面加入远程maven仓库地址
 maven {
            url "http://repo.baichuan-android.taobao.com/content/groups/public/"
        }

阿里的集成文档的后面加了下面这句话,个人第一次看的时候表示很不解

注意: 1.4.0版本的仓库地址已经发生了变更, 请更新到上述百川最新的仓库地址
也不知道他的具体意思是什么,不要笑我,我不信你们看了不会多想,其实就是把上面代码区的拷出来就好啦!

  • 然后在app的gradle里面添加依赖!
dependencies {
    compile 'com.taobao.android:alisdk-hotfix:1.4.0'
}

假如你用了阿里的其他产品,比如Umeng,变异的时候会报错,说utdid重复,所以此时进行如下处理即可, 关闭传递性依赖:(官方解释说,utdid实际上是为设备生成唯一deviceid的一个基础类库)

compile ('com.taobao.android:alisdk-hotfix:1.4.0') {
        transitive = false
    }

好了接下来我们这样做,然后来编译一下试试!
基本不会出现下载不到的情况,但是假如下载失败了怎么办?不要慌,还可以做本地依赖

[SDK下载&版本更新记录](http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.oRRsfg&treeId=234&articleId=105517&docType=1)

然后做如下配置:

repositories {
    ...
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    compile files('libs/utdid4all-1.1.5.3_proguard.jar')
    compile(name:'alisdk-hotfix-1.4.0', ext:'aar')  
}

注意:编译期间报utdid重复, 去掉compile files('libs/utdid4all-1.1.5.3_proguard.jar')依赖即可(上面的repositories 中的flatDir 指的是当.aar文件在本地的时候指向的文件夹,一般放在libs里面,下面的compile(name:'alisdk-hotfix-1.4.0', ext:'aar')就是本地依赖的核心代码)
<h4>注:因为我是新手,对eclipse差不多已经忘完了,此处就只写studio的配置!</h4>

  • 接下来就是权限配置了!相信不少人已经被6.0权限恶心到了,不是因为难写,是因为写了以后面对千奇百怪的手机厂商适配起来很是头疼,比如我就碰到过小米对umeng有三个权限,即使你写了也不会给用户弹窗,你判断里面他是默认给了,但是实际要使用的时候他其实是没有给的,这个问题到现在还没有一个好的解决方法!有好的解决方法的可以指导一下小弟!
    废话不多说,上代码!
<! -- 网络权限 -->
<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"/>

其中读外部存储的权限基本上只有在原生6.0里面才会给提示,大部分手机厂商都是默认给了的,但是google规定的这个也属于危险权限,所以大家还是手动申请一下的好,不会的请自行查询,或者下载阿里百川的demo,demo的MainActivity里面写的有.

  • 配置AndroidManifest文件,application节点加入以下三个mete-data
        <meta-data
            android:name="com.taobao.android.hotfix.APPKEY"
            android:value="appkey" />
        <meta-data
            android:name="com.taobao.android.hotfix.APPSECRET"
            android:value="appsecret" />
        <meta-data
            android:name="com.taobao.android.hotfix.RSASECRET"
            android:value="apprsa" />

第一个value里面放的是你的appKey,第二个放的是你的appSecret,第三个放的是你的appRsa,这些的获取方式就不做赘述了,自己申请过的肯定知道,不知道的就自己去申请一个好好看看试试!算了,还是附上阿里的链接吧!(获取app_secret以及app_rsa的方法)
http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.oRRsfg&treeId=234&articleId=105459&docType=1#s1

  • 混淆配置(因为官方的混淆假如更新版本的话有可能是会有所改变的,所以建议大家到官网或者hotfix的github项目里面查询最新的混淆规则)
-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 *;
}
  • 最后特别声明!!!!!!
    不管是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文件

本篇只讲基础配置,具体的集成以及可能会出现的问题,后面会分两篇慢慢写,觉得有用的可以关注我,谢谢观看!辛苦啦......

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

推荐阅读更多精彩内容