Is there a way to read the value versionName
from the build.gradle
file of an Android project to use it in bash?
More precisely: How can I read this value from the file and use it in a Travis-CI script? I'll use it like
# ANDROID_VERSION=???
export GIT_TAG=build-$ANDROID_VERSION
I set up a Travis-CI like described in this post https://stackoverflow.com/a/28230711/1700776.
My build.gradle: http://pastebin.com/uiJ0LCSk
Expanding on Khozzy's answer, to retrieve versionName of your Android package from the build.gradle, add this custom task:
task printVersionName {
doLast {
println android.defaultConfig.versionName
}
}
and invoke it so:
gradle -q printVersionName
You can define a custom task, i.e.
task printVersion {
doLast {
println project.version
}
}
And execute it in Bash:
$ gradle -q pV
1.8.5
Thanks to alnet's comment I came up with this solution (note Doug Stevenson's objection):
# variables
export GRADLE_PATH=./app/build.gradle # path to the gradle file
export GRADLE_FIELD="versionName" # field name
# logic
export VERSION_TMP=$(grep $GRADLE_FIELD $GRADLE_PATH | awk '{print $2}') # get value versionName"0.1.0"
export VERSION=$(echo $VERSION_TMP | sed -e 's/^"//' -e 's/"$//') # remove quotes 0.1.0
export GIT_TAG=$TRAVIS_BRANCH-$VERSION.$TRAVIS_BUILD_NUMBER
# result
echo gradle version: $VERSION
echo release tag: $GIT_TAG
How about this?
grep -o "versionCode\s\+\d\+" app/build.gradle | awk '{ print $2 }'
The -o
option makes grep only print the matching part so you're guaranteed that what you pass to awk
is only the pattern versionCode NUMBER
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With