gpt4 book ai didi

android - 使用 elvis 运算符回退 gradle 中的未知属性

转载 作者:行者123 更新时间:2023-12-03 05:39:48 25 4
gpt4 key购买 nike

我想让以下工作:

android {
compileSdkVersion setup?.compileSdk ?: 28
}

但是如果未定义设置,这确实会失败并出现以下异常:

Could not get unknown property 'setup' for the object of type com.android.build.gradle.LibraryExtension.

所以我可以将其重写为以下内容,这将起作用:

android {
compileSdkVersion hasProperty('setup') ? setup.compileSdk ?: 28 : 28
}

问题

如果我使用它,我必须定义回退(SDK 版本 28)两次,用于未定义设置的情况以及查询的子属性不存在的情况。

有什么更好的方法来让它工作吗?

最佳答案

最后发现访问不存在的属性不返回null反而报错...

我能找到的最佳解决方案如下:

  • 不要使用 elvis 运算符
  • 如果找不到属性,请使用 hasProperty 并定义默认值

示例

// define default setup if none is provided
if (!hasProperty('setup'))
{
ext {

setup = [
compileSdk: 28,
enableDataBinding: true,
minSdk : 16,
targetSdk : 28
]
}
}

android {

compileSdkVersion setup.compileSdk
defaultConfig {
minSdkVersion setup.minSdk
targetSdkVersion setup.targetSdk
}
}

关于android - 使用 elvis 运算符回退 gradle 中的未知属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com