Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 指定生成变量的基_Android - Fatal编程技术网

Android 指定生成变量的基

Android 指定生成变量的基,android,Android,BuildVariant是一个非常强大的工具,通过指定微小的差异来创建代码的不同变体,我在我的项目中大量使用它。但是我想知道是否可以选择一个特定的变量作为另一个变量的基础,而不是main 例如,假设我的应用程序有3个变体:A(main)、B和C。VariantB与Varianta有很多不同的资源文件,所以我将它们添加到BVariant文件夹中,当我编译VariantB时,一切都很顺利。但是对于variantC,它在variantB的基础上有一个非常小的变化。现在我想知道创建variantC的最佳

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

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


有没有办法将variant
C
连接到variant
B
,因此当
aar
尝试创建
C
variant的资源时,它使用variant
B
作为基础,而不是variant
A
?我认为在变体中添加另一个维度是可能的,但我更喜欢在不添加新维度的情况下进行此操作。

您可以基于其他维度配置下一个
BuildType
,例如

debugWithAnalytics.initWith(buildTypes.debug)
但是您应该在功能方面使用风格和风格维度——可以将不同的风格合并到一个配置中,因为构建类型意味着构建配置的不同<代码>构建类型应包含关于构建过程的信息,例如signconfigs、基本构建流配置等

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维度,如果可能的话,我更喜欢另一种方法,而不是添加第四维…@Afshin如果你可以用另一种构建类型配置构建类型,请检查答案,因此在你的例子中,C可以扩展BYea,见回复更新。有一个问题,当我使用
initWith
时,资源目录是否也会更改为
initWith
中提到的作为基础的目录?您可以根据自己的意愿定义任何类型的源目录:使用继承的文件夹不应该是现成的,因为您可以为每个构建类型定义自己的文件夹。