Android 多渠道打包进阶版

 更新时间:2021年09月01日 11:44:37   作者:SongSenior  
上篇文章更了Android 多渠道打包,这篇文章将做一个后续继续更Android 多渠道打包进阶版,上次意未尽的朋友可以继续啦,第一次点进来的朋友也可以看上次文章

上一篇文章链接//www.jb51.net/article/221446.htm

Android 多渠道打包进阶版

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

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 个渠道不同依赖配置
  }    
}

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

1、资源文件配置

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'
        //      .....
    }
}

2、依赖配置

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依赖')
    }
}


3、签名配置

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]       
         }
    }
}

到此这篇关于Android 多渠道打包进阶版的文章就介绍到这了,更多相关Android 多渠道打包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android自定义实现BaseAdapter的优化布局

    Android自定义实现BaseAdapter的优化布局

    这篇文章主要为大家详细介绍了Android自定义实现BaseAdapter的优化布局,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android4.4新增函数访问外部存储

    Android4.4新增函数访问外部存储

    这篇文章主要介绍了Android4.4新增函数访问外部存储的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • Android RecyclerView网格布局示例解析

    Android RecyclerView网格布局示例解析

    这篇文章主要介绍了Android RecyclerView网格布局示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Android Gradle同步优化详解

    Android Gradle同步优化详解

    这篇文章主要为大家介绍了Android Gradle同步优化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Flexbox+ReclyclerView实现流式布局

    Flexbox+ReclyclerView实现流式布局

    这篇文章主要为大家详细介绍了Flexbox+ReclyclerView实现流式布局,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Android实现3D推拉门式滑动菜单源码解析

    Android实现3D推拉门式滑动菜单源码解析

    这篇文章主要为大家详细解析了Android实现3D推拉门式滑动菜单源码以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
    2017-11-11
  • 实例解析Android系统中的ContentProvider组件用法

    实例解析Android系统中的ContentProvider组件用法

    这篇文章主要介绍了Android系统中的ContentProvider组件用法,举例讲解了ContentProvider传递数据及监听ContentProvider数据改变的方法,十分详细,需要的朋友可以参考下
    2016-04-04
  • Android中监听软键盘输入的使用方式

    Android中监听软键盘输入的使用方式

    今天我们来讨论一下Android中监听软键盘输入的使用方式,它允许用户输入文本和执行其他操作,但是,有时候我们需要在用户输入文本时进行一些特殊的处理,比如实时验证输入内容、限制输入字符的类型等,因此,了解如何监听软键盘输入是非常重要的
    2023-10-10
  • android byte[] 和short[]转换的方法代码

    android byte[] 和short[]转换的方法代码

    这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
    2014-01-01
  • 分析CmProcess跨进程通信的实现

    分析CmProcess跨进程通信的实现

    CmProcess是Android一个跨进程通信框架,无需进行bindService()操作,不用定义Service,也不需要定义aidl。 支持IPC级的 Callback,并且支持跨进程的事件总线,可同步获取服务,采用面向接口方式进行服务注册与调用,服务调用方和使用者完全解耦
    2021-06-06

最新评论