7、构建类型、product flavor、构建variant

先来解释几个名词

构建variant

一个构建variant是由一个构建类型和一个product flavor构成的,那么什么是构建类型和product flavor呢?

构建类型

在Gradle的Android插件中,构建类型通常被用来定义如何构建一个应用或者依赖库
看下app module下的build.gradle中的buildTypes代码块

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
       
    }

这里的release就是构建类型,这里还有一个默认存在的构建类型debug,每个module都有一个debug构建类型,也是默认的构建类型,你可以重写它来达到覆盖其中某些属性的目的。

自定义构建类型

处理release和debug这两个构建类型外,我们还可以自己定义一些构建类型
例如:

 buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        staging{
            applicationIdSuffix ".staging"
            versionNameSuffix "-staging"
            buildConfigField("String","API_URL","\"http://192.168.3.169\"")
        }


    }

staging构建类型为applicationID定义了一个新的后缀,这样利用staging生成的apk的applicationID就会加上这个后缀,看下debug、release、staging这三个构建版本对应的applicationID

  • debug:com.package
  • release:com.package
  • staging:com.package.staging
    这也就是说你可以在同一台手机上同时安装release版本和staging版本
    在自定义一个新的构建类型时,我们可以利用一个已有的构建类型来初始化该构建类型
    大概这样:


    image.png

product flavor

product flavor用来创建不同的版本(怎么听起来跟构建版本的作用相同啊???它们的作用是不同的),典型的例子是你的应用有免费版和付费版,或者是功能相同而品牌不同的应用(例如说掌阅公司给华为手机、小米手机、三星手机做的阅读软件(举个例子而已))。
如果说你不确定是否需要一个新的构建类型还是需要一个新的product flavor,那么你需求问问你自己,这个app是否是一个全新的app,也就是说在app store中,这是个完全独立的app,完全独立于你已有的应用发布,如果是的话,那么就用product flavor ,否则的话就用构建类型。

创建product flavor

在module的build.gradle文件中android代码块中:

productFlavors{
        red{
            applicationId 'com.example.huozhenpeng.myapplication.red'
            versionCode 3
        }
        blue{
            applicationId 'com.example.huozhenpeng.myapplication.blue'
            minSdkVersion 15
            versionCode 4
        }

    }

签名配置

image.png

所有的构建版本(buildtypes)和product flavors都可以配置签名,也可以在defaultConfig下配置默认签名。

你可能感兴趣的:(7、构建类型、product flavor、构建variant)