在构建变体中使用我的自定义类

时间:2018-02-16 10:31:53

标签: android android-activity android-build android-build-flavors

我在我的应用中为构建变体创建了4种不同的风格。 我在我的应用 build.gradle。中的配置中添加了版本和后缀。以下是代码:

productFlavors {
    qa {
        applicationIdSuffix ".qa"
        versionCode 1
        versionName "1.0"
        //manifestPlaceholders = [application: ".utils.Application"]
    }

    demo {
        applicationIdSuffix ".demo"
        versionCode 1
        versionName "1.0"
        //manifestPlaceholders = [application: ".utils.Application"]
    }


    dev {

        versionCode 1
        versionName "1.0"
        //manifestPlaceholders = [application: ".utils.Application"]
        //signingConfig signingConfigs.release
    }

    uat {
        applicationIdSuffix ".uat"
        versionCode 1
        versionName "1.0"
        //manifestPlaceholders = [application: ".utils.Application"]
    }
}

在我的应用中,我使用文件 APIAddresses.java 来根据环境选择要点击的网址。 有没有什么方法可以只使用 build.gradle 中的所有源代码中的此文件来配置构建变体的URL?

可以为每个构建变体创建此文件的不同副本,类似于此。

productFlavors {
    qa {
        applicationIdSuffix ".qa"
        versionCode 1
        versionName "1.0"
        APIAddresses_QA
    }

    demo {
        applicationIdSuffix ".demo"
        versionCode 1
        versionName "1.0"
        APIAddresses_DEMO
    }

}

谢谢!

2 个答案:

答案 0 :(得分:0)

是的,您可以为所有变体使用一个版本的APIAddresses.java文件。

在build.gradle中,添加

flavorDimensions "main"

将您的APIAddresses.java文件放在app \ src \ main目录中。

在您的代码中,您可以使用变量

为每个变体生成不同的URL

BuildConfig.FLAVOR

答案 1 :(得分:0)

如果您不想在课程中添加大量if-else条件,则可以为每种风格添加新的buildConfigField

productFlavors {
    qa {
        applicationIdSuffix ".qa"
        versionCode 1
        versionName "1.0"
        buildConfigField "String", "SERVER_URL", '"https://server1.com"'
    }

    demo {
        applicationIdSuffix ".demo"
        versionCode 1
        versionName "1.0"
        buildConfigField "String", "SERVER_URL", '"https://server2.com"'
    }

    ...
}

之后你可以在Java端调用BuildConfig.SERVER_URL,根据每种风格,它应该在我的示例中返回正确的URL