多渠道打包进阶知识

红橙Darren
• 阅读 1289

多渠道打包进阶知识

文章开始前,先看一下下面这种情况:

android {  
  productFlavors {  
      //100 个多渠道配置  
  }
//多渠道签名的配置
  signingConfigs {
     xiaomi {
        storeFile file("../xiaomi.keystore")
        storePassword 'xiaomi'
        keyAlias 'xiaomi'
        keyPassword 'xiaomi'
        v1SigningEnabled true
        v2SigningEnabled true
     }
     huawei {
        storeFile file("../huawei.keystore")
        storePassword 'huawei'
        keyAlias 'huawei'
        keyPassword 'huawei'
        v1SigningEnabled true
        v2SigningEnabled true
     }
  }
  buildTypes {
       debug {
//        debug这里设置不起作用,可能是编译器的问题?
//         productFlavors.xiaomi.signingConfig signingConfigs.test
//         productFlavors.huawei.signingConfig signingConfigs.test
       }
       release {
           productFlavors.xiaomi.signingConfig signingConfigs.xiaomi
           productFlavors.huawei.signingConfig signingConfigs.huawei
           //....100 个签名配置
       }
  }
//不同渠道不同资源文件配置
  sourceSets{
      xiaomi.res.srcDirs 'src/main/res-xiaomi'
      huawei.res.srcDirs 'src/main/res-huawei'
      xxx.res.srcDirs 'src/main/res-xxx'
      xxx.res.srcDirs 'src/main/res-xxx'
      xxx.res.srcDirs 'src/main/res-xxx'
      //....100 个资源文件配置
  }
//不同渠道不同的依赖文件
  dependencies {
      xiaomiApi('xxxxxxx')
      huaweiImplementation('xxxxxxxx')
      xxxApi('xxxxxxx')
      xxxApi('xxxxxxx')
      xxxApi('xxxxxxx')
      //....100 个渠道不同依赖配置
  }    
}

不难发现,当渠道比较多的时候,不同渠道不同的配置就会很繁琐,有没有更方便的方法呢?答案是肯定的。

资源文件配置

sourceSets{
    def sets = getSourceSets()//获取资源设置集合
    productFlavors.all{//遍历多渠道
        if('huawei'.equals(name))//针对特殊的渠道做特殊处理
          sets.getByName(name).res.srcDir 'src/main/res-xxx'
        else
          sets.getByName(name).res.srcDir 'src/main/res-'+name
        //相当于 xiaomi.res.srcDir 'src/main/res-xiaomi'
        //      huawei.res.srcDir 'src/main/res-huawei'
        //      .....
    }
}

依赖配置

def dependenMap =[xiaomi: 'xiaomi依赖',
                  huawei: 'huawei依赖',
                  ...
                  xxx: 'xxx 依赖']
dependencies{
    productFlavors.all{
        if('huawei'.equals(name))//针对特殊的渠道做特殊处理
           dependencies.add(name+"Implementation",project(dependenMap[name]))
        else
           dependencies.add(name+"Api",project(dependenMap[name]))

        //xiaomiApi('xiaomi依赖')
        //huaweiImplementation('xiaomi依赖')
        //xxxxApi('xxx依赖')
    }
}

签名配置

signingConfigs {
    xiaomi{
        storeFile file("../xiaomi.keystore")
        storePassword 'xiaomi'
        keyAlias 'xiaomi'
        keyPassword 'xiaomi'
        v1SigningEnabled true
        v2SigningEnabled true
    }
    huawei{
        storeFile file("../xiaomi.keystore")
        storePassword 'xiaomi'
        keyAlias 'xiaomi'
        keyPassword 'xiaomi'
        v1SigningEnabled true
        v2SigningEnabled true
    }
    ....更多签名配置
}
buildTypes {
    debug {

    }
    release {
         productFlavors.all {
             if('huawei'.equals(name))//针对特殊的渠道做特殊处理
               productFlavors[name].signingConfig signingConfigs.xxx       
             else
               productFlavors[name].signingConfig signingConfigs[name]       
         }
    }
}
点赞
收藏
评论区
推荐文章
红橙Darren 红橙Darren
3年前
多渠道打包
Android多渠道打包看这一篇就够了本文三个流程一、多渠道配置1、多渠道配置2、不同渠道不同签名配置3、不同渠道不同资源文件配置4、不同渠道不同依赖配置二、注意事项三、打包1、命令行打包2、IDE打包多渠道配置(2种方式)1、可写在主模块(app)的build.gradle下androidcompileSdkVers
Stella981 Stella981
3年前
Android 多渠道打包原理和使用
每次中午吃饭总会和技术同学聊天。当做iOS开发的做安卓开发的人员在一起的时候,他们中间又多了一个话题:iOS开发难还是安卓开发难。这个时候做安卓开发的同学最激动说安卓开发要自己画界面、机型复杂、操作系统多rom又被各家改的四不像....开发一个安卓APP的时间将近是开发iOS所需时间的2倍。iOS开发的同学可能就会反驳说
如何通过数据分析鉴别假微博大V?
MCN并不是一个新出现的模式,很早就出现的微博、公众号等都具有MCN特征。但当以短视频为主的新型媒体出现后,MCN才爆发出强大的社会影响力。当前,借助于MCN实现企业爆发式的销售增长,是非常火热的一种渠道形态。01什么是MCNMCN(MutiChannelNetwork)即多渠道网络服务,它通过持续的内容输出来实现特定商业目标。在MCN机构出现之前,其实
Wesley13 Wesley13
3年前
unity android V1签名
unity2018版本默认签名会进行V1V2签名。如果只想进行V1签名的话可以进行以下操作。1.调整为gradle打包2.publishingsettings里面选择customgradletemplate,3.在gradle配置里面加入下述代码  !(https://oscimg.oschina.net/oscnet/up
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
TYPESDK手游聚合SDK服务端设计思路与架构之三:流程优化之订单保存与通知
经过前两篇文字的分析与设计,我们已经可以搭建出一个能够支持多游戏多渠道的聚合SDK服务端,但这只是理想化状态下的一个简化模型。如果接入渠道的逻辑都是按照理想化的简化过程来构建,那么对于支付的请求,我们可以简化成这样几步:1.游戏客户端创建订单。2.游戏客户端(通过TYPESDK客户端)调用渠道lib库中相应接口,发起支付。3.用户在弹出的
想天浏览器 想天浏览器
11个月前
企业文化社区 | 多渠道、多形式传播企业文化
每一个企业都有自身独特的企业文化氛围,一旦企业内部的需求变大,内部员工及文化势必会发现改变,如何解决内部问题,成为了企业的首要任务。而越来越多的企业选择搭建企业文化社区来协助企业,彻底解决企业发展过程之中的一些问题,例如解决企业内部沟通的壁垒,促进企业文化
京东云开发者 京东云开发者
7个月前
【微电平台】-高并发实战经验-奇葩问题解决及流程优化之旅
微电平台微电平台是集电销、企业微信等于一体的综合智能SCRMSAAS化系统,涵盖多渠道管理、全客户生命周期管理、私域营销运营等主要功能,承接了京东各业务线服务,专注于为业务提供职场外包式的一站式客户管理及一体化私域运营服务。导读本文介绍电销系统【客户名单离
Python进阶者 Python进阶者
2个月前
python打包的exe文件为什么有时候运行很慢有时候很快?
大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【哎呦喂是豆子~】问了一个Python打包处理的问题。问题如下:大佬们请问下你们有没有遇到这种情况python打包的exe文件为什么有时候运行很慢有时候很快?同一个exe文件有时候等