Tinker结合Walle经验总结

项目多渠道打包传统的可以采用配置productFlavors来解决,但是有以下缺点:
  1. 低效 每个渠道包都要走一遍编译的流程
  2. 传统方式针对每个渠道热修复的时候都要对应打补丁
  3. bugly只支持5个补丁同时下发,而我们渠道通常不止五个
选择Walle
  1. 快,我们项目有10个分发渠道加上本身的官网和内部升级,一共12个。大概不到3分钟搞定12个包
  2. 一个补丁包即可,分发修复所有渠道包

具体使用可以参照

  • https://github.com/Meituan-Dianping/walle
  • https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170912151050
遇到的问题
  • gradlew 编译出现permisson denied
    执行 chmod +x gradlew 提高权限

  • 还有这种:Task 'XXX' not found in root project 'XXX'. 如图


    Tinker结合Walle经验总结_第1张图片

是因为之前的productFlavors相关的没有注释掉,导致冲突,代码注释掉即可

    productFlavors {
//        m0 {}
//        m4 {}
//        m5 {}
//        m6 {}
//        m7 {}
//        m8 {}
//        m9 {}
//        m10 {}
//        m11 {}
//        m12 {}
//        m13 {}
//        m14 {}
//    }
//
//    productFlavors.all { flavor ->
//        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
//    }
  • 友盟传统是AndroidManifest.xml里配置渠道信息和名称的
        
            
            

使用walle可是通过代码来配置渠道信息,注释掉清代文件友盟配置

        //渠道号
        String channel = WalleChannelReader.getChannel(mContext);
        Log.e("umeng", "渠道号是: "+channel);
        MobclickAgent.startWithConfigure(new MobclickAgent.UMAnalyticsConfig(
                mContext, mContext.getString(R.string.umeng_appkey), channel));

好了,这样就节约了大把打包编译传补丁的时间了

你可能感兴趣的:(Tinker结合Walle经验总结)