Steadily advancing through the Android Developer Nanodegree, I've now reached Level 3 on the curriculum, "Gradle for Android and Java" in which students learn how to use Gradle to "turn a pile of source code and resources into a shipped,tested and functioning app".
Tools which automate a project's build process have become an essential part of any developer's toolchain, considering that nowadays the making of an application is not just constrained to writing code.There's also other accompanying tasks that should be run in parallel.Some of those are identifying and bundling dependencies, copying resources such as images and strings, running unit tests, diversifying through product flavors, minifying or obfuscating the source, handling signing keys, packing a jar or apk and deploying the finished product to a repository or even publishing it to Google Playstore.
Trying to follow a sequence and manual tracking of all those tasks as well as repeating them when deemed necessary, translates into decreased productivity forasmuch as the time lost on such tedious procedures, that could otherwise be automated, could have been funnelled to other activities such as coding, developing and improving the overall quality of the end product instead.
Fortunately there's dedicated build tools for that, Ant, Maven (for a rundown on building projects with Maven make sure to check my recent Hardcore DevOps article) and Gradle, the latter being considered the more advanced post-modern counterpart which offers a wider array of functionality, spans scope boundaries in being capable of working with projects written in multiple languages the likes of Java, C++ or Python, and brings significant performance improvements. (Gradle vs Maven: Performance Comparison).It's no coincidence that Google has chosen it as its official build system.
But what do all these have to do with Android Studio? Well Android Studio delegates everything about building an application to Gradle, although the same procedures could be very well performed on just the command line as well.