Android_个人收藏Android studioAndroid

Gradle之构建变体(BuildVariant)

2016-06-23  本文已影响3918人  zly394

一、构建变体

1. BuildType

1.1 默认BuildType

默认情况下,Android plugin会自动的构建release和debug两个版本

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled false
    }
}
// release版本中设置了开启混淆,并且定义了混淆文件的位置

release和debug的差异主要在于是否可以在设备上调试应用以及APK如何签名。

1.2 自定义BuildType

Android plugin允许自定义这两个示例,并且可以创建其他的buildType,如下:

buildTypes {
    debug {
        minifyEnabled false
        applicationIdSuffix ".debug"
    }
    custom.initWith(buildTypes.debug)
    custom {
        applicationIdSuffix ".custom"
        versionNameSuffix "-customs"
    }
}

2. ProductFlavor

2.1 单维度的ProductFlavor

ProductFlavor定义了通过工程构建应用的自定义版本。一个独立的工程可以定义不同的flavor改变生成的应用。
创建方式:

productFlavors {
    flavor1 {
        minSdkVersion 10
        versionCode 1
    }
    flavor2 {
        minSdkVersion 14
        versionCode 2
    }
}
2.2 多维度的ProductFlavor

某些情况下,我们需要从多个维度来区分app的版本,比如渠道和是否付费,只是我们就需要创建多维度的ProductFlavor来生成不同的apk。
创建方式:

flavorDimensions "channle", "version"

productFlavors {
    huawei {
        dimension "channle"
    }

    xiaomi {
        dimension "channle"
    }

    free {
        dimension "version"
    }

    paid {
        dimension "version"
    }
}

3. BuildVariant

BuildType和ProductFlavor相结合,组成了构建变体。每创建一个buildType或productFlavor,都会同时创建相应的变体。

3.1 单维度ProductFlavor时产生的BuildVariant

例如:

buildTypes {
    debug {
        minifyEnabled false
        applicationIdSuffix ".debug"
    }
    custom.initWith(buildTypes.debug)
    custom {
        applicationIdSuffix ".custom"
        versionNameSuffix "-customs"
    }
}

productFlavors {
    flavor1 {
        minSdkVersion 10
        versionCode 1
    }
    flavor2 {
        minSdkVersion 14
        versionCode 2
    }
}

上述配置的情况下会产生6个BuildVariant:

3.2 多维度ProductFlavor时产生的BuildVariant

如果是多维度的ProductFlavor,例如:

buildTypes {
    debug {
        minifyEnabled false
        applicationIdSuffix ".debug"
    }
    custom.initWith(buildTypes.debug)
    custom {
        applicationIdSuffix ".custom"
        versionNameSuffix "-customs"
    }
}

flavorDimensions "channle", "version"

productFlavors {
    huawei {
        dimension "channle"
    }

    xiaomi {
        dimension "channle"
    }

    free {
        dimension "version"
    }

    paid {
        dimension "version"
    }
}

上述配置的情况下会产生12个BuildVariant:

3.3 BuildVariant的使用
上一篇 下一篇

猜你喜欢

热点阅读