Android 中的产品口味配置

Product Flavors Configurations in Android

我是 Product Flavors 的新手,我浏览了很多链接来理解它。但也有一些疑点尚不清楚。我有 3 种产品口味,即:qadevprod。我只创建了这三种产品口味,因为我需要为不同的口味更改 URL 和一些 API 键,我通过创建 3 个不同的包并放置相同的 java(具有 URL)文件来完成在 app/src 目录中。我的build.gradle就是这样。我需要在每种口味中添加哪些强制性的东西?相关内容:proguardsigningConfigs:

android {
    useLibrary 'org.apache.http.legacy'
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    flavorDimensions "default"

    defaultConfig {
        applicationId "com.sagar.demo"
        minSdkVersion 21
        targetSdkVersion 25
        multiDexEnabled true
        versionCode 67
        versionName "1.0.0" //Update Version build number
        vectorDrawables.useSupportLibrary = true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
    }

    signingConfigs {

        release {
            storeFile file("myKeystore")
            storePassword "Keystore2017"
            keyAlias "SagarSuri"
            keyPassword "Keystore2020"
        }
    }

    buildTypes {
        debug {
            debuggable true
            minifyEnabled false  // shrink
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            debuggable false
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }


    productFlavors {

        qa {
            dimension "default"

        }
        prod {
            dimension "default"
            signingConfig signingConfigs.release
        }
        dev {
            dimension "default"

        }
    }
}

产品口味的工作方式是,您最终会得到每个 dimension 中的口味数量乘以 buildTypes 的数量,在您的情况下,您有 3 种口味尺寸和 2 种构建类型,以 3x2=6 构建变体结束,如下所示:

  • qaDebug
  • qa发布
  • 产品调试
  • 产品发布
  • 开发调试
  • 开发版本

每个组合都是相关产品风格配置和相关构建类型配置的实际组合。变体 qaDebug 的含义,它的配置来自 qa 下定义的和 debug 下定义的组合。因此,如果 debug 已经定义了 proguardFiles,那么通常不需要在 qa 中定义它,除非如果 qa 需要额外的混淆器配置用于它自己的代码,那么这是另一回事需要决定,因此应该针对每种风格而不是在构建类型中定义混淆器。

我想指出的另一个方面是signingConfig,这里为prodrelease定义了相同的值。这意味着任何以 prod 开头或以 Release 结尾的组合都将设置 signingConfig,在本例中为:qaReleaseprodDebugprodReleasedevRelease.

因此配置完全取决于您的选择和设计,并非所有项目都具有相同的配置。