在我的应用程序中,我有4个环境,即 Dev SIT UAT 发布。对于每种环境,我都有一个具有自己配置的构建类型。很像建议的方式,例如:

buildTypes {
    Dev {
        buildConfigField "String", 'BASE_URL', "https://dev-api.yourbackend.com"
    }
    SIT {
        buildConfigField "String", 'BASE_URL', "https://sit-api.yourbackend.com"
    }
    UAT {
        buildConfigField "String", 'BASE_URL', "https://uat-api.yourbackend.com"
    }
    Release {
        buildConfigField "String", 'BASE_URL', "https://api.yourbackend.com"
    }
}

但是现在我有5-6种不同的此类配置,而不仅仅是BASE_URL。像ClientIdClientSecret等。

另外,我有2种产品口味,这意味着我需要创建8个不同的构建变体,并在每个这样的变体内部都包含所有这些5-6种配置。看起来很笨拙。

我发现的另一种解决方案是为每个构建变体(例如flavour1Devflavour2Sitflavour2Uat等)创建一个文件夹,并在该文件夹中包含特定于该变体的配置文件。这又涉及8个不同的文件夹,并且随着我们添加更多环境而不断增长。

有没有更好的方法来处理此问题,可能像config.gradle文件一样,在该文件中我只能拥有这些配置,然后将其导入app/build.gradle中,这是模块化整个构建变体配置的方式。

更新1

我按照@Md尝试了这个。 Asaduzzaman的答案:

build.gradle
…
…
apply from: './config.gradle'


…
…
android {
    …
    …
    defaultConfig {
        …
        …
        buildConfigField('String', ‘BASE_URL’, '"https://default.yourbackend.com”')
    }
    …
    …
}

config.gradle
android {
    buildTypes {
        dev {
            buildConfigField('String', ‘BASE_URL’, '"https://dev.yourbackend.com”')
        }
        sit {
            buildConfigField('String', ‘BASE_URL’, '"https://sit.yourbackend.com”')
        }
    }
}

问题是在生成的BuildConfig中,我仍然看到默认值:
public static final String BASE_URL = "https://default.yourbackend.com";

最佳答案

您已经通过创建单独的config.gradle文件自己提到了该解决方案。我尝试如下实现:

步骤-1:config.gradle文件夹中创建app并添加所有配置。

android {

    buildTypes {

        Dev {
            buildConfigField "String", 'BASE_URL', "https://dev-api.yourbackend.com"
        }

        SIT {
            buildConfigField "String", 'BASE_URL', "https://sit-api.yourbackend.com"
        }

        UAT {
            buildConfigField "String", 'BASE_URL', "https://uat-api.yourbackend.com"
        }

        Release {
            buildConfigField "String", 'BASE_URL', "https://api.yourbackend.com"
        }
    }

    productFlavors {
        flavor1 {
            /*implementation*/
        }

        flavor2 {
            /*implementation*/
        }

        flavor3 {
            /*implementation*/
        }
    }
}

步骤-2:config.gradle包括在app/build.gradle中。
apply plugin: 'com.android.application'
apply from: './config.gradle'

....

10-08 13:28
查看更多