La soluzione che ho trovato implica la mappatura delle cose che hai nel tuo file 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
}
Poi, nel file build.gradle
:
apply from: 'other.gradle'
// ...
android {
defaultConfig {
versionName VERConsts['NAME_CALL']()
// or
versionName VERConsts['NAME']
}
}
Poi, il versionName
avrà il risultato chiamata.
Note:
VERConsts['NAME'] = getVersionName()
chiamerà getVersionName()
e memorizzarne il risultato. Usandolo nel tuo script, ad es. versionName VERConsts['NAME']
assegnerà quindi il valore memorizzato.
VERConsts['NAME_CALL']
memorizzerà invece un riferimento alla funzione. Utilizzando VERConsts['NAME_CALL']()
nello script effettivamente chiamare la funzione e assegnare il risultato alla variabile
Il primo provocherà lo stesso valore assegnato attraverso lo script mentre quest'ultimo può comportare valori diversi (ad esempio, se qualcuno spinge un'altra versione mentre lo script è in esecuzione).
fonte
2014-11-30 23:40:45
Grazie per il collegamento. Pensi che 0.8 supporti quella funzione? –
No, è una nuova funzionalità in 0.9 –
grrrr, il collegamento è stato interrotto, è necessario scavare da solo ora. –