Libraries

Views

  1. Butterknife

    Butterknife is view "injection" library, which reduces boilerplate code which you have to write to cast the corresponding views in your layout. This library is a must for all our projects.

    More info with code examples is available here.

  2. ViewPagerIndicator

    ViewPagerIndicator provides us with paging indicator widgets compatible with the ViewPager. It helps you to provide a clear indicator that additional content exist.

    More info with code examples is available here.

  3. CircleImageView

    A fast circular ImageView perfect for profile images. As this is just a custom ImageView and not a custom Drawable or a combination of both, it can be used with all kinds of drawables, i.e. a PicassoDrawable from Picasso or other non-standard drawables.

    More info with code examples is available here.

  4. Android Crop

    AndroidCrop provides a simple image cropping Activity, based on code from AOSP. It's backwards compatible to Gingerbread and has nice and clean UI.

    More info with code examples is available here.

  5. Holo Graph Library

    Slick, easy-to-use graphs with click listeners.

    More info with code examples is available here.

  6. Glide

    Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface. It also has support for animated GIF's.

    More info with code examples is available here.

  7. Android Support Library package

    Support Library package is a set of official Google libraries used for backwards compatibility with older API. Each of these libraries supports a specific range of Android platform versions and set of features.

    More info and specific documentation about support library package is available here.

Networking

  1. GSON

    GSON is used for converting Java and Kotlin objects into their JSON representation (and vice versa). Most commonly, we use it in combination with Retrofit to parse API responses.

    More info with code examples is available here.

  2. Moshi

    Moshi, made by Square, just like GSON, is used to convert Java and Kotlin objects into their JSON representation (and vice versa). Also used commonly with Retrofit and parsing API responses/requests.

    Another reason why we started using Moshi over GSON on some project is the use of JSON API specification, more info here Moshi has a great adapter which can easily parse which makes it an invaluable asset in our library arsenal.

    More info with code examples is available here. More info about Moshi and JSON API is available here.

  3. Retrofit

    Retrofit is a type-safe HTTP client for Android and Java. It uses annotations to describe the HTTP request, and have support for URL parameter replacement and query parameter. Also, it allows you to upload Multipart request bodies and files.

    More info with code examples is available here.

  4. OkHttp

    OkHttp is an HTTP & SPDY client for Android and Java applications. It also provides you with MockWebServer which can be used for testing.

    More info with code examples is available here.

  5. Chuck

    Chuck is a network library that logs the requests and responses in runtime on the device itself. This library should be enabled on staging and/or debug builds and should never be used in production. This is a required library that should always be implemented in the aforementioned environments.

    More info with code examples is available here.

Database

  1. DBFlow

    DBFlow is an ORM android database library with annotation processing. It is build on the top of SQLite database, and has support for all of the SQL actions and transactions.

    More info with code examples is available here.

  2. Room

    Room is a library that provides an abstraction layer over SQLite database. It supports all of the SQL functionalities.

    More info with code examples is available here.

    What's important about this library are migrations. They are a vital piece if you wish to migrate your database to a new version, if you don't set up migrations room will not crash, nor will it log anything. What it will do is delete all of the database data and rebuild the database. - You do not want this happening in production, so be careful when using it and set up your migrations properly, if unsure how to do it, ask your Team Lead to help you out.

  3. DbInspector

    In-house developed library for viewing the contents of the in-app database for debugging purposes. No need to pull the database from a rooted phone.

    More info with code examples is available here.

Testing

  1. Mockito

    “Mockito is a mocking framework that tastes really good”. We use it for creating readable unit tests which produce clean verification errors.

    More info with code examples is available here.

  2. AssertJ Android

    A set of AssertJ assertions geared toward testing Android.

    More info with code examples is available here.

Other

  1. Crashlytics

    Light weight crash reporting solution with Android studio support.

    More info with code examples is available here.

  2. EventBus

    EventBus is publish/subscribe event bus optimized for Android. It simplifies the communication between Activities, Fragments, Threads, Services, etc.

    More info with code examples is available here.

    Though it's in some of the projects codebases we tend to avoid this library as much as possible.

  3. ThreeTen ABP

    An adaptation of the JSR-310 backport for Android aka Java 8 Date API backport for Android.

    More info with code examples is available here.

  4. Better pickers

    DialogFragments modeled after the AOSP Clock and Calendar apps to improve UX for picking time, date, numbers, and other things.

    More info with code examples is available here.

  5. Clean status bar

    Utility library for making Google play screenshots. It draws over your status bar, showing only a full battery and clock. Use this to have nice clean screenshots without those pesky empty batteries and notifications!

    More info with code examples is available here.

Useful links

https://android-arsenal.com/