【问题标题】:Specifying base for a build variant为构建变体指定基础
【发布时间】:2018-08-06 08:54:06
【问题描述】:

构建变体是一个非常强大的工具,可以通过指定细微差异来创建代码的不同变体,我在我的项目中主要使用它。但我想知道是否可以选择一个特定的变体作为另一个变体的基础而不是main

例如,假设我的应用有 3 个变体:A(主)、BC。变体B 与变体A 有很多不同的资源文件,所以我将它们添加到B 变体文件夹中,当我编译变体B 时一切顺利。但是对于变体C,它基于变体B 有非常小的变化。现在我想知道创建变体C 的最佳方法是什么。最简单的方法是将B 变体的所有更改文件(与A 变体相比)复制到变体C,并对它们进行小的更改以用于变体C。我个人不喜欢这种方法,因为我需要将所有更改为变体B 也应用到变体C,这很容易出错和错误。

有没有办法将变体C 连接到变体B,所以当aar 试图创建C 变体的资源时,它使用变体B 作为基础而不是变体A?我认为向变体添加另一个维度是可能的,但我更喜欢这样做而不添加新维度。

【问题讨论】:

    标签: android


    【解决方案1】:

    你可以配置下一个BuildType,例如:

    debugWithAnalytics.initWith(buildTypes.debug)
    

    但是您应该在功能方面使用风味和风味维度 - 可以将不同的风味合并到一个配置中,因为 buildTypes 意味着构建配置的差异。 BuildTypes 应包含有关构建过程的信息,例如符号配置、基本构建流程配置等。

    flavorDimensions("devbeta", "mainmirror")
    productFlavors {
        // Beta API enviroment
        beta {
            dimension = "devbeta"
            buildConfigField "String", "SOCKET_REMOTE_PATH", "\"/beta\""
        }
    
        // Dev API enviroment
        dev {
            dimension = "devbeta"
            buildConfigField "String", "SOCKET_REMOTE_PATH", "\"/dev\""
        }
    
        // Prod API enviroment
        prod {
            dimension = "devbeta"
            buildConfigField "String", "SOCKET_REMOTE_PATH", "\"/prod\""
        }
    
        mainhost {
            dimension = "mainmirror"
            buildConfigField "String", "CONFIG_REMOTE_HOSTNAME", "\"mainmirro1\""
        }
    
        mirrorhost {
            dimension = "mainmirror"
            buildConfigField "String", "CONFIG_REMOTE_HOSTNAME", "\"mainmirrow\""
        }
    }
    

    在这种情况下,可能的构建变体将是 ...MainhostBeta MirrorhostDev 等。

    【讨论】:

    • 嗨,我写道,我认为尺寸是可能的,但我想知道是否还有其他方法。因为我已经有了 3D 维度,所以如果可能的话,我更喜欢另一种方法,而不是添加第 4 维度...
    • @Afshin 您可以使用另一种构建类型配置构建类型,检查答案的开头,因此在您的情况下,C 可以扩展 B
    • 是的,看到回复更新。一个问题,当我使用initWith 时,资源目录是否也会更改为initWith 中提到的基础目录?
    • 您可以根据需要定义任何类型的源目录:stackoverflow.com/a/32758837/527808 使用继承的文件夹不应该开箱即用,因为您可以为每个构建类型定义自己的文件夹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2018-12-04
    • 2014-11-17
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多