As a freelancer building mobile apps for startups and a startup founder building my own apps, I build and maintain a lot of apps.

Over the years, I have used a lot of different open source libraries to help me complete tasks in my mobile apps. As an Android developer, you also need to make sure to keep your mobile apps small in size. This means you should only install an open source library if you find it worth the bloat it could add to your app.

Here is a list of open source libraries that I feel are worth the bloat. I use these in all (or almost all) of my mobile apps I build.

  • Retrofit If you are building a mobile app that connects to an API over the Internet, Retrofit is a must.

  • Realm I use Realm as my database on Android instead of using SQLite. It's an awesome mobile database that is very developer friendly. I am part of the Realm MVP program so if you have questions about how to use Realm, get a hold of me :).

  • RxJava Maintaining the state of your app is challenging. Writing boilerplate code is painful and prone to buggy code. RxJava is an amazing library I don't know what I would do without. I use it to sync my data with the user's views, and a better way of managing the flow of data.

  • Wendy Build offline-first mobile apps. Remove loading screens from your user and allow them to perform tasks while they are offline. I use this when I start new apps so I can make it offline compatible right away and not try and add it later. Note: This project is under heavy construction. Use at your own risk because the API will be changed dramatically. It's still awesome and I use it in all of my apps.

  • Glide When you need to display images in your mobile app, use Glide. I used to use Picasso for years and recently moved over to Glide for the functionality and support by Google as they use it in their apps.

  • Fastlane If you ever deploy apps to Google Play, Crashlytics Beta, take screenshots, run Gradle tasks, Fastlane is for you. It is a CLI program that automates tedious tasks for yourself such as deploying apps to the store, beta deployments, taking screenshots, generating app icons, etc. Check out this Fabric blog post featuring myself to learn about what I use Fastlane.

Libraries I don't always use but consider worth it in the right use case:

  • Android Job If you need to perform background jobs in Android such as downloading data from your API every 15 minutes, use Android Job. It has a nice API that does the hard work for you to setup and to run background jobs.

  • PermissionUtil If you need to ask for runtime permissions in your app, use PermissionUtil. The API is amazing (it inspired me with an open source lib I made) to make it fast and easy to ask for permissions.

  • Eventbus If you are in the need of an event bus library for Android, Eventbus is my go-to. I used to use Otto but I enjoy the Eventbus better for the API and being a little more powerful than Otto is.

  • Shutter If you need to (1) take photos/videos or (2) pick photos/videos from your user's gallery, Shutter is for you. I have always had issues dealing with constructing intents and dealing with Uris with Android but Shutter takes care of all that work for you with a very simple API.

Do you have a favorite library you use? Share it with me I would love to hear about it.

Check out my highly rated tutorials on how to build an Android library for Gradle so you can reuse your code across multiple projects.

Header photo by Lewis Ngugi on Unsplash