Sunday, June 19, 2016

Tutorial for adding a library project as git submodule and then using it as a studio Module.

I'm writing this blog to make the development process easy and faster.  This is specific to Android Studio, same can be used for any other project which used Gradle build system and GIT.

I want to make all the reusable components of my current application as library so that it can be used by the new applications as and when required. This will also be useful for Android Instant Application which Google announced recently because they propose to develop the application as modular as possible so that they will download only the modules required to view the particular page.

I suggest to keep all the libraries in separate GIT repos and add them as a GIT sub module in main application project. Hence whenever we need these reusable components in any other application it can be easily used.

After these libraries has been added as git submodule in the application project we can make changes in the build.gradle to use them as Modules in Application Gradle Project.


1. Usually we will be making changes to both library and the application project. This setup would be really helpful to make changes to both in the same gradle project.
2. We don't need to create AAR / JAR files  and update the libs for the changes we do in the library project.
3. We can always pull the latest changes in our repo from the remote branch if there are other contributors in this repo.

Tutorial for adding a library project

In this example I'm adding Volley as my networking library.  I'm using official Volley GIT repo so that anyone interested can add this library for their application.

Step I : Add volley as submodule in Android application project GIT Repo.
git submodule add -b master Libraries/Volley

Step II : In settings.gradle, add the following to add volley as a studio project module.
include ':Volley'
project(':Volley').projectDir=new File('../Libraries/Volley')

Step III : In app/build.gradle, add following line to compile Volley
 compile project(':Volley')

That would be all! Volley has been successfully added in the project.

Every time you want to get the latest code from Google official Volley's repo, just run the below command

    git submodule foreach git pull

Useful Links