0

我在我的应用程序的构建变体中创建了 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来根据环境选择要命中的 URL。有什么方法可以只使用build.gradle中所有源代码中的这个文件来配置构建变体的 URL?

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

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

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

}

谢谢!

4

2 回答 2

0

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

在您的 build.gradle 中,添加

flavorDimensions "main"

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

在您的代码中,您可以使用变量为每个变体生成不同的 URL

BuildConfig.FLAVOR

于 2018-02-16T10:51:07.550 回答
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"'
    }

    ...
}

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

于 2018-02-16T11:15:40.773 回答