首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何配置构建类型与产品风格?

如何配置构建类型与产品风格?
EN

Stack Overflow用户
提问于 2017-02-03 16:55:33
回答 2查看 8.1K关注 0票数 15

基于这个答案,https://stackoverflow.com/a/27908019/5156317,我有一个后续问题:是什么使一个应用程序不同,它代表了产品的味道?我试图将它与我的XCode设置进行比较,如下所示:

  • 使用测试后端的Dev应用程序
  • 使用生产后端的Dev应用程序
  • 使用测试后端的测试应用程序(企业发行版)
  • 使用生产后端(企业发行版)的测试应用程序
  • 使用生产后端的Live (应用商店发行版)

我对android系统的想法是:

buildTypes: debug_test debug_production //不需要企业级应用程序,因为在任何设备版本上都有可能没有签名的应用程序

口味: myApp

多谢你们的支持!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-03 20:05:00

好吧,为了使用不同的后端,我不会指定比debugrelease更多的构建类型。相反,我会使用以下一些技巧:

  • 更多口味,
  • 自定义构建配置字段(文档这里),
  • 结合多种产品风格(文档、这里)。

您可以使用BuildConfig类访问应用程序代码中的生成类型、构建风格和自定义字段。

带有简单风味的方法

  • 构建类型:
代码语言:javascript
运行
复制
- `debug`
- `release`

  • 口味:
代码语言:javascript
运行
复制
- `dev`
- `test`
- `live`

这将导致这些构建变体(您不必使用所有这些变量):

  • devDebug
  • devRelease
  • testDebug
  • testRelease
  • liveDebug
  • liveRelease

使用维数结合多种口味的方法

  • 风味尺寸:
代码语言:javascript
运行
复制
- `backend`
- `target`

  • 构建类型:
代码语言:javascript
运行
复制
- `debug`
- `release`

  • 口味:
代码语言:javascript
运行
复制
- `target` dimension:  
    - `dev`
    - `test`
    - `live`

代码语言:javascript
运行
复制
- `backend` dimension:  
    - `production`
    - `test`

这将导致这些构建变体(同样,您不必使用所有这些变量):

  • productionDevDebug
  • productionDevRelease
  • productionTestDebug
  • productionTestRelease
  • productionLiveDebug
  • productionLiveRelease
  • testDevDebug
  • testDevRelease
  • testTestDebug
  • testTestRelease
  • testLiveDebug
  • testLiveRelease

使用build字段

在构建类型和构建风格声明中使用附加值,例如:

buildConfigField "boolean", "production_backend", "false"

buildConfigField "String", "backend", "\"production\""

票数 19
EN

Stack Overflow用户

发布于 2020-01-31 20:43:53

build.gradle

代码语言:javascript
运行
复制
class Globals {
    static String devDebug = "_devDebug"
    static String devRelease = "_devRelease"
    static String stagingQA = "_stagingQa"
    static String prodRelease = "_prodRelease"
    static String prodDebug = "_prodDebug"

    def firstproduct = "firstproductFP"
    def secondproduct = "secondproductFP"

//     Product key
    static String FP = "FP"
    static String SP = "SP"
}

android {

    buildTypes {
        debug {}
        qa {}
        release {}
    }

    flavorDimensions "client", "backend"
    productFlavors { 

//          First Product (FP)
        FP_dev {    
            dimension 'backend'
            buildConfigField("String", "TEST", "\"FP_dev\"")
        }
        FP_staging {
            dimension 'backend'
            buildConfigField("String", "TEST", "\"FP_staging\"")
        }
        FP_prod {
            dimension 'backend'
            buildConfigField("String", "TEST", "\"FP_prod\"")
        }
        firstproduct {
            dimension 'client'
            ...
        }


//          Second Product (SP)
        SP_dev {    
            dimension 'backend'
            buildConfigField("String", "TEST", "\"SP_dev\"")
        }
        SP_staging {
            dimension 'backend'
            buildConfigField("String", "TEST", "\"SP_staging\"")
        }
        SP_prod {
            dimension 'backend'
            buildConfigField("String", "TEST", "\"SP_prod\"")
        }
        secondproduct {
            dimension 'client'
            ...
        }
}

    variantFilter {
        variant ->
           def needed = variant.name in [
                    Globals.firstproduct + Globals.FP + Globals.devDebug,
                    Globals.firstproduct + Globals.FP + Globals.stagingQA,
                    Globals.firstproduct + Globals.FP + Globals.prodRelease,

                    Globals.secondproduct + Globals.FP + Globals.devDebug,
                    Globals.secondproduct + Globals.FP + Globals.stagingQA,
                    Globals.secondproduct + Globals.FP + Globals.prodRelease
            ]
            variant.setIgnore(!needed)
    }

}

该解决方案的方法允许为多种产品风格提供多个客户端编译和后端环境。

我所做的是将后端的开发环境与调试android的编译联系起来,用android的qa进行后端的分阶段,并将后端的生产与android的发布联系起来。请记住,在某些情况下,您需要调试生产环境或混淆开发环境,这个解决方案允许这样做。

  • firstproductFP_devDebug
  • firstproductFP_stagingQa
  • firstproductFP_prodRelease
  • secondproductSP_devDebug
  • secondproductSP_stagingQa
  • secondproductSP_prodRelease

编译firstproductFP_devDebug时的一个示例

BuildConfig.java

代码语言:javascript
运行
复制
public static final String FLAVOR = "firstproductFP_dev";
public static final String FLAVOR_client = "firstproduct";
public static final String FLAVOR_backend = "FP_dev";
public static final String BUILD_TYPE = "debug";

应该注意的是,在variantFilter{}的范围内,您不能使用buildConfigField()来编译基于构建类型和产品风格的值。这迫使我们使用flavorDimensions和更大数量的productsFlavors.也不能重命名active build变体。

重要:变量的值必须与产品口味的名称相匹配。

总帐

资料来源:

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

https://stackoverflow.com/questions/42029224

复制
相关文章

相似问题

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