Откат для неизвестных свойств в Gradle с оператором Elvis - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу, чтобы следующее работало:

android {
    compileSdkVersion setup?.compileSdk ?: 28
}

Но это не работает со следующим исключением, если установка не определена:

Не удалось получить неизвестное свойство 'setup 'для объекта типа com.android.build.gradle.LibraryExtension.

Так что я могу переписать его следующим образом, который будет работать:

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

Задача

Если я использую это, мне придется дважды определить запасной вариант (SDK версия 28) для случая, когда настройка не определена, а также для случая, когда запрашиваемое подсвойство делаетне существует.

Есть ли лучший способ заставить это работать?

1 Ответ

0 голосов
/ 13 декабря 2018

Наконец, я обнаружил, что доступ к несуществующему свойству не возвращает ноль, но выдает ошибку ...

Лучшее решение, которое я мог найти, следующее:

  • не используйте оператор 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...