This blog is written to keep libraries versions,app version and gradle dependencies at single point
So lets start coding…
1.App Versioning
To keep the proper incremental build and proper version naming conventions we can keep the app version with following code in build.gradle file in app module
def versionMajor = 1 def versionMinor = 0 def versionPatch = 0 def versionBuild = 1 // bump for dogfood builds, public betas, etc
android { defaultConfig { applicationId “com.burhan.rashid.daggermvprx” versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild versionName “${versionMajor}.${versionMinor}.${versionPatch}” }
2.Build APK file with App name
Now you can provide a file name to APK with app name its version and build date to identify your APK very easily in build folder while releasing your app
def getAppName() { def stringsFile = android.sourceSets.main.res.sourceFiles.find { it.name.equals 'strings.xml' } String s = new XmlParser().parse(stringsFile).string.find { it.@name.equals 'app_name' }.text(); def all = s.replaceAll(" ", "_") return all.replaceAll(""", ""); } android { ... applicationVariants.all { variant -> ; variant.outputs.each { output -> ; def SEP = "_" def version = variant.versionName def buildType = variant.variantData.variantConfiguration.buildType.name def date = new Date(); def formattedDate = date.format('ddMMyy') def newApkName = appName + SEP + buildType + SEP + version + SEP + formattedDate + ".apk" output.outputFile = new File(output.outputFile.parent, newApkName) } } }
https://github.com/burhanrashid52/AndroidDaggerMVPRxArchitecture/blob/master/app/build.gradle
3.Support libraries and SDK version dependencies
To maintain common version for android support libraries and SDK tools with single or multiple module we need to keep ext constant in build.gradle ( Top-level build file)
allprojects { repositories { jcenter() } } ext { // sdk and tools minSdkVersion = 21 targetSdkVersion = 25 compileSdkVersion = 25 buildToolsVersion = '25.0.0' // dependencies versions supportLibraryVersion = '25.1.0' playServicesVersion = '9.2.1' }
https://github.com/burhanrashid52/AndroidDaggerMVPRxArchitecture/blob/master/build.gradle
Provide the ext reference in build.gradle(app folder or any other module gradle) like this
android { compileSdkVersion rootProject.compileSdkVersion buildToolsVersion rootProject.buildToolsVersion
defaultConfig { applicationId “com.burhan.rashid.daggermvprx” minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion } } dependencies { compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion" compile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion" compile "com.android.support:cardview-v7:$rootProject.supportLibraryVersion" compile "com.android.support:design:$rootProject.supportLibraryVersion"
}
You need to use $rootProject.supportLibraryVersion in dependencies to get the version from top level build.gradle file
Keeping common version in all modules of the app for support libraries and any other play services libraries to keep concurrency throughout the app.In case of any new version just change the version from Project Gradle file and sync it
Thanks for reading my blog
In case of any query please comment on the post i will try to reply ASAP
If you like this article Please like and share with your friends and others developers
Full Project:
https://github.com/burhanrashid52/AndroidDaggerMVPRxArchitecture
Social Profiles