我想得到以下工作:
android {
compileSdkVersion setup?.compileSdk ?: 28
}
但是,如果未定义安装程序,则不会发生以下异常:
无法获取类型为com.android.build.gradle.LibraryExtension的对象的未知属性“ setup”。
所以我可以将其重写为以下内容,这将起作用:
android {
compileSdkVersion hasProperty('setup') ? setup.compileSdk ?: 28 : 28
}
问题
如果使用此选项,则必须定义两次后备(SDK版本28),以用于未定义设置以及不存在查询的子属性的情况。
有什么更好的方法可以使它工作?
答案 0 :(得分:0)
最后,我发现访问不存在的属性不会返回null而是抛出错误...
我能找到的最佳解决方案如下:
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
}
}