首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android插件-按国家分列的口味尺寸

Android插件-按国家分列的口味尺寸
EN

Stack Overflow用户
提问于 2015-06-24 21:06:32
回答 2查看 1.8K关注 0票数 2

我继承了一个在gradle构建文件中设置了以下风格的项目:

代码语言:javascript
复制
productFlavors {
    def STRING = "String"
    def BOOLEAN = "boolean"
    def TRUE = "true"
    def FALSE = "false"
    def BASE_ENDPOINT = "BASE_ENDPOINT"

    mock {
        applicationId "com.example.myapp.mock"
        buildConfigField STRING, BASE_ENDPOINT, '"mock://localhost/gt"'
    }

    qa {
        applicationId "ca.example.myapp"
        buildConfigField STRING, BASE_ENDPOINT, '"https://qa-somesite.com/gt"'
    }

    qaInternal {
        applicationId ".ca.example.myapp.int"
        buildConfigField STRING, BASE_ENDPOINT, '"https://internal-somesite.com/gt"'
    }

    beta {
        applicationId "com.example.myapp.beta"
        buildConfigField STRING, BASE_ENDPOINT, '"https://somesite.com/gt"'
    }

    prod {
        applicationId "ca.ca.example.myapp"
        buildConfigField STRING, BASE_ENDPOINT, '"https://somesite.com/gt"'
    }
}

没有什么特别的事情发生在那里,只有生产qa,嘲弄等口味。

不过,这只是为了一个特定的国家。是给美国的。所以这些口味都是为美国准备的。我需要使用同样的应用程序。我想为另一个叫法国的国家创造口味。法国的口味有不同的结构。

我在想我可以做这样的事:

代码语言:javascript
复制
flavorDimensions "country","buildtype"

为我提供乡村口味。但是,我将如何为新的国家创造自己的模拟,qa,qaInternal等口味。

因此,为了明确我的最终目标,我的最终目标是为一个名为法国的新国家提供产品口味,考虑到我在android工作室中粘贴的代码。

更新:让我更准确地说明我想要什么和问题。看看目前的产品口味:模拟、qa、qaInternal、beta和prod。它们都与有关美国产品的信息有关。这在代码中已经存在。当前为美国客户构建的代码。现在,我被要求将代码也提供给法国客户,所以我需要一个法语版本。

问题是像applicationID这样的东西,许多buildConfigField在法国的构建中会有所不同。我如何设计一个解决方案,例如,我可以有一个法国模拟,一个法国qa,一个法国qaInternal,一个法语测试版,和一个法国产品,就像我目前对美国的构建一样?

这个问题与地区无关,只是我们有两个产品,一个美国产品,我们想要一个法国产品,将有一个不同的配置与美国。

以模拟口味为例。对于法语来说,我需要这样做:

代码语言:javascript
复制
mock {
        applicationId "french-com.example.mock"
        versionName = versionOverride + 'french-mock'
        buildConfigField STRING, BASE_ENDPOINT, '"mock://localhost/french-gt"'
    }
EN

回答 2

Stack Overflow用户

发布于 2015-06-24 21:28:42

如果将一个flavorDimension分配给每个productFlavor,那么您正在做的事情就会奏效。所以在你的例子中,build.gradle看起来就像

代码语言:javascript
复制
flavorDimensions "country","buildtype"

productFlavors {
    def STRING = "String"
    def BOOLEAN = "boolean"
    def TRUE = "true"
    def FALSE = "false"
    def BASE_ENDPOINT = "BASE_ENDPOINT"

    mock {
        dimension 'buildtype'
        applicationId "com.example.myapp.mock"
        versionName = versionOverride + '-mock'
        buildConfigField STRING, BASE_ENDPOINT, '"mock://localhost/gt"'
    }

    qa {
        dimension 'buildtype'
        applicationId "ca.example.myapp"
        versionName = versionOverride + '-qa'
        buildConfigField STRING, BASE_ENDPOINT, '"https://qa-somesite.com/gt"'
    }

    qaInternal {
        dimension 'buildtype'
        applicationId ".ca.example.myapp.int"
        versionName = versionOverride + '-qaInt'
        buildConfigField STRING, BASE_ENDPOINT, '"https://internal-somesite.com/gt"'
    }

    beta {
        dimension 'buildtype'
        applicationId "com.example.myapp.beta"
        versionName = versionOverride + '-beta'
        buildConfigField STRING, BASE_ENDPOINT, '"https://somesite.com/gt"'
    }

    prod {
        dimension 'buildtype'
        applicationId "ca.ca.example.myapp"
        versionName = versionOverride + '-prod'
        buildConfigField STRING, BASE_ENDPOINT, '"https://somesite.com/gt"'
    }

    usa {
        dimension 'country'
        // whatever else you want
    }

    france {
        dimension 'country'
        // whatever else you want
    }

}

设置了flavorDimensions之后,您现在将使用productFlavors与维度和构建类型的组合,在本例中,将是mockUsa、mockFrance、qaUsa、qaFrance等。

考虑到存在实际的构建类型debugrelease,您可能会得到大量的变体列表!

票数 2
EN

Stack Overflow用户

发布于 2015-06-25 06:07:05

我认为您应该创建多个buildType,而不是口味。如果您有构建类型法国和美国,口味模拟,qa和.,那么您将有这些构建变体: qaUSA,qaFrance,mockUSA,mockFrance等等。

下面是build.gradle示例:

代码语言:javascript
复制
productFlavors {
        mock {
             ...
        }
        qa {
            ...
        }
    }

buildTypes {
        USA {
            ...
        }

        France {
            ...
        }
    } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31037041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档