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