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

作者: ziabo_yu | 来源:发表于2017-03-15 11:26 被阅读0次

    最近自己公司的项目打算做热更新,因为有一个很小的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文件

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/muqlnttx.html