Android Gradle 技巧之一: Build Variant 相关

栏目: IT技术 · 发布时间: 5年前

内容简介:android gradle 插件,允许对最终的包以多个维度进行组合。最常见的就是这样:其中,buildTypes 一般都会有 debug 或者release,标示编译的类型,通常在混淆代码、可调式、资源压缩上做一些区分。

android gradle 插件,允许对最终的包以多个维度进行组合。

BuildVariant = ProductFlavor x BuildType

两个维度

最常见的就是这样:

productFlavors {
    pro {
    }

    fre {
    }
}
lintOptions {
    abortOnError false
}

buildTypes {
    debug {
    }
    release {
    }
}

其中,buildTypes 一般都会有 debug 或者release,标示编译的类型,通常在混淆代码、可调式、资源压缩上做一些区分。

productFlavor 则为了满足“同一个project,根据一个很小的区分,来打不同的包”这个需求。

这两个维度的组合,会产生如下包:

  • proDebug
  • proRelease
  • freDebug
  • proRelease

更多的维度

flavorDimensions 'abi', 'version'

productFlavors {
    pro {
        dimension 'version'
    }

    fre {
        dimension 'version'
    }

    arm {
        dimension 'abi'
    }

    mips {
        dimension 'abi'
    }
}

buildTypes {
    debug {
    }
    release {
    }
}

productFlavor 本身定义了2个维度,记上 buildType,则有三个维度,会产生如下的包:

  • armProDebug
  • armProRelease
  • armFreDebug
  • armFreRelease
  • mipsProDebug
  • mipsProRelease
  • mipsFreDebug
  • mipsFreRelease

其中每个维度组合,都可以设置本身的 dependency、test source。下面做一个举例。

Flavor 与 Dependency

需求

module 中有若干个 flavors,例如:fre 和 pro,分别依赖不同的库,这些库有的是本地 jar 库,有的是远程库。

方案

Android Gradle 技巧之一: Build Variant 相关

遍历 Build Variant

需求

Bugtags 的 android sdk,有一个自动上传符号表功能, 在最初,是这样配置的:

apply plugin: 'com.bugtags.library.plugin'
bugtags {
    appKey "APP_KEY"
    appSecret  "APP_SECRET"
    mappingUploadEnabled false
}

后来,我们增加了一个 beta-live 的机制,用来区分测试和上线的 APP,这样,同一个 APP,就有两套 APP_KEY 和 APP_SECRET 了,很明显上方的配置方式就不在适用。

方案

android gradle 插件提供了 android.applicationVariants 索引来遍历所有的 build variant

后来,我们采取了一个方案,遍历 Build Variant,设置 extension 信息来兼容这种需求。

afterEvaluate {
    android.applicationVariants.each { variant ->
        def bugtagsAppKey = null;
        def bugtagsAppSecret = null;

        if (variant.name.contains("debug")) {
            bugtagsAppKey = 'APP_KEY_BETA'
            bugtagsAppSecret = 'APP_SECRET_BETA'
        } else if (variant.name.contains("release")) {
            bugtagsAppKey = 'APP_KEY_LIVE'
            bugtagsAppSecret = 'APP_SECRET_LIVE'
        }

        variant.ext.bugtagsAppKey = bugtagsAppKey
        variant.ext.bugtagsAppSecret = bugtagsAppSecret
    }
}

apply plugin: 'com.bugtags.library.plugin'

总结

本文主要是介绍了 build variant 的概念,还介绍了两个日常应用案例。希望对大家有帮助。

参考资料

android-build-tool

有问题?在文章下留言或者加 qq 群:453503476,希望能帮到你。

本文由kvh 创作,采用 CC BY 3.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

Android Gradle 技巧之一: Build Variant 相关

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据挖掘十大算法

数据挖掘十大算法

(美)吴信东(Xindong Wu)、(美),库玛尔 ,(Vipin Kumar) / 李文波、吴素研 / 清华大学出版社 / 2013-5 / 39.00元

《世界著名计算机教材精选:数据挖掘十大算法》详细介绍了在实际中用途最广、影响最大的十种数据挖掘算法,这十种算法是数据挖掘领域的顶级专家进行投票筛选的,覆盖了分类、聚类、统计学习、关联分析和链接分析等重要的数据挖掘研究和发展主题。《世界著名计算机教材精选:数据挖掘十大算法》对每一种算法都进行了多个角度的深入剖析,包括算法历史、算法过程、算法特性、软件实现、前沿发展等,此外,在每章最后还给出了丰富的习......一起来看看 《数据挖掘十大算法》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具