Android build.gradle 中的“flavorDimensions”已弃用

Dav*_*vid 47 android gradle build.gradle

设置在build.gradle flavorDimensions "xyz", "abc"

@Incubating 
@Deprecated(message = "Replaced by flavorDimensions property") 
public void flavorDimensions(
    @NotNull String... dimensions
)
Run Code Online (Sandbox Code Playgroud)

我找不到现代方法的例子。

小智 60

根据@Deprecated消息“已替换为flavorDimensions属性”,我将等效flavorDimensions "xyz", "abc"实例替换为:

flavorDimensions = ["xyz", "abc"]
Run Code Online (Sandbox Code Playgroud)

我不完全理解这样做的后果,但它似乎没有破坏我公认的非常简单的配置中的任何内容,并且警告消失了。

  • @David 您可以在 Groovy 中使用 `flavorDimensions = ['xyz', 'abc']` 。 (8认同)
  • 执行此操作后,gradle同步可以正常运行,但是当我尝试在任何其他模块中运行任何测试时,我会收到应用程序模块的错误,其风格为:`com.android.builder.errors.EvalIssueException:All风味现在必须属于命名的风味维度。了解更多信息,请访问 https://d.android.com/r/tools/flavorDimensions-missing-error-message.html` (5认同)

Moh*_*ane 24

看起来他们更改flavorDimensions为仅接受Listnot String,因此您需要将代码更改为如下所示:

flavorDimensions = ["dimension"]
Run Code Online (Sandbox Code Playgroud)

或者

flavorDimensions = ["dimension1","dimension2"]
Run Code Online (Sandbox Code Playgroud)

  • 这比接受的答案更清晰、更简洁。 (2认同)

TRX*_*TRX 19

只需使用:

flavorDimensions += "version"
Run Code Online (Sandbox Code Playgroud)

这有效。


小智 6

android 块中的flavorDimensions 属性已弃用,并由buildFeatures 块中的flavorDimensions 属性替换。您可以使用以下代码来实现与原始代码相同的结果:

buildFeatures {
    flavorDimensions = ["version"]
}

productFlavors {
    fsm {
        dimension "version"
        versionNameSuffix ".companyName"
        applicationIdSuffix ".companyName"
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您愿意,还可以使用 Kotlin DSL 语法:

buildFeatures {
    flavorDimensions += "version"
}

productFlavors {
    create("fsm") {
        dimension = "version"
        versionNameSuffix = ".companyName"
        applicationIdSuffix = ".companyName"
    }
}
Run Code Online (Sandbox Code Playgroud)