Android 指定生成变量的基
BuildVariant是一个非常强大的工具,通过指定微小的差异来创建代码的不同变体,我在我的项目中大量使用它。但是我想知道是否可以选择一个特定的变量作为另一个变量的基础,而不是Android 指定生成变量的基,android,Android,BuildVariant是一个非常强大的工具,通过指定微小的差异来创建代码的不同变体,我在我的项目中大量使用它。但是我想知道是否可以选择一个特定的变量作为另一个变量的基础,而不是main 例如,假设我的应用程序有3个变体:A(main)、B和C。VariantB与Varianta有很多不同的资源文件,所以我将它们添加到BVariant文件夹中,当我编译VariantB时,一切都很顺利。但是对于variantC,它在variantB的基础上有一个非常小的变化。现在我想知道创建variantC的最佳
main
例如,假设我的应用程序有3个变体:A
(main)、B
和C
。VariantB
与Varianta
有很多不同的资源文件,所以我将它们添加到B
Variant文件夹中,当我编译VariantB
时,一切都很顺利。但是对于variantC
,它在variantB
的基础上有一个非常小的变化。现在我想知道创建variantC
的最佳方法是什么。最简单的方法是将B
variant(与A
variant相比)的所有更改文件复制到variantC
,并对variantC
应用小的更改。我个人不喜欢这种方法,因为我需要将所有更改的variantB
也应用到variantC
,这很容易出现错误和bug
有没有办法将variant
C
连接到variantB
,因此当aar
尝试创建C
variant的资源时,它使用variantB
作为基础,而不是variantA
?我认为在变体中添加另一个维度是可能的,但我更喜欢在不添加新维度的情况下进行此操作。您可以基于其他维度配置下一个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
中提到的作为基础的目录?您可以根据自己的意愿定义任何类型的源目录:使用继承的文件夹不应该是现成的,因为您可以为每个构建类型定义自己的文件夹。