Description
The Lein-Droid is a Leiningen plugin to build the Android apps using the Clojure programming language. The Lein-Droid compiles Clojure and Java source code and builds the Android deployable package. However, in doing so it does not employ any mechanism or intelligence to optimize the performance of the build process over subsequent builds. The Lein-Droid project also requires manual intervention. If it's the first time, the developer needs to manually download the Android SDK (Software Development Kit) with all the components needed for the Lein-Droid plugin to work and put the SDK at a specific location. An app developer generally wants to make incremental changes to the code, build and deploy the app on a device, and test the changes. This is inherently an iterative process, which requires building almost the same source code multiple times and deploying the app on the device. The original Lein-Droid does not employ any optimization in the build process and rebuilds the same source each time a new build has started, even if the input file (e.g. source code, AndroidManifest.xml etc.) has not changed. It wastes resources and precious developer time. The Incremental Build System is a framework that aims at minimizing the time spent on the build process by optimizing the build process and introducing autonomy in the end-to-end build process. By autonomously downloading the required full Android SDK, it relieves the developer from manual intervention and places the files at project specific location. While downloading the SDK it intelligently takes care of the library version, and the platform; and only downloads the SDK libraries applicable to that platform. As a result, the Incremental Build System can save up to several minutes (for every build) based on the size of the project and the files modified between the subsequent build runs. And because it's a framework any changes made to any tasks in Lein-Droid will be inherently use the optimized build process.