Решение, которое я нашел, подразумевает отображение того, что у вас есть в вашем файле other.gradle
.
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags'
standardOutput = stdout
}
return stdout.toString().trim()
}
ext{
VERConsts = [:]
VERConsts['NAME'] = getVersionName()
VERConsts['NAME_CALL'] = getVersionName
}
Затем в вашем build.gradle
файле:
apply from: 'other.gradle'
// ...
android {
defaultConfig {
versionName VERConsts['NAME_CALL']()
// or
versionName VERConsts['NAME']
}
}
Тогда versionName
будет иметь результат вызова.
Примечания :
VERConsts['NAME'] = getVersionName()
вызовет getVersionName()
и сохранит его результат. Используя его в вашем скрипте, например versionName VERConsts['NAME']
назначит сохраненное значение.
VERConsts['NAME_CALL']
вместо этого сохранит ссылку на функцию. Использование VERConsts['NAME_CALL']()
в вашем скрипте фактически вызовет функцию и присвоит результат вашей переменной
Первое приведет к тому, что одно и то же значение будет присвоено всему сценарию, а второе может привести к другим значениям (например, если кто-то выдвинет другую версию во время работы вашего сценария).