Gradle三:创建构建Variant

什么是Variant?

每个android项目都有debug和release构建类型,而product flavor让管理多个应用或依赖库版本成为可能,而构建类型常常和product flavor一起使用,可以很容易地处理测试和生产应用的免费和付费版本,构建类型和product flavor的结合结果称之为variant。

构建新类型

创建一个新的构建类型staging如下代码:

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

        staging {
          
   
            applicationIdSuffix ".staging"
            versionNameSuffix "-staging"
            buildConfigField "String", "API_URL",
                    ""http://www.baidus.com""
            buildConfigField "boolean", "LOG_HTTP_CALLS", "true"
        }
    }

通过staging签名打包会在工程目录app中生成一个staging文件夹,用于存放打包后的apk,这样我们就可以在同一台设备上同时装有release版本和staging版本打包的apk,而不发生任何冲突。

使用initWidth()方法,可以在构建新类型时,复用已经存在类型的属性来初始化该构建类型,我们可以在新的类型中定义额外的属性

buildTypes {
          
   
        release {
          
   
            minifyEnabled false
            proguardFiles getDefaultProguardFile(proguard-android-optimize.txt), proguard-rules.pro
        }
        staging.initWith(buildTypes.release)
        staging {
          
   
            applicationIdSuffix ".staging"
            versionNameSuffix "-staging"
        }
    }

另外,如果每个构建类型引用的库不一样,也可以分别配置

dependencies {
          
   
    implementation androidx.appcompat:appcompat:1.2.0
    //新构建的类型
    stagingImplementation androidx.test.ext:junit:1.1.2
}

product flavor

product flavor被用来创建不同的版本,例如,一个机构为多个客户端构建相同功能而品牌不同的应用。 创建product flavor:

productFlavors{
          
   
        red{
          
   
            applicationId com.joyce.project.myapplication.red
            versionCode 3
        }
        blue{
          
   
            applicationId com.joyce.project.myapplication111.blue
            versionCode 4
        }
    }

在构建apk文件的时候,我们则可以有多个不同的选项

经验分享 程序员 微信小程序 职场和发展