/awesome-android

A curated list of awesome Android packages and resources.

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome Android Awesome

A curated list of awesome Android libraries and resources. For general Java libraries have a look at awesome-java.

Emulators

Libraries

Charts

  • AChartEngine - Charting Engine.
  • EazeGraph - Chart and graph library.
  • WilliamChart - Chart library with good motion capabilities.
  • HelloCharts - Chart and graph library with support for scaling, scrolling and animations.
  • MPAndroidChart - An Android chart and graph library supporting scaling and dragging by gesture.

Cloud Services

  • CloudRail - Unified API Library for: Cloud Storage, Social Profiles, Payment, Email, SMS & POIs.

Data binding

  • Anvil - A small library to create reactive UI components, inspired by React. Provides data binding and event listener binding, fits well for MVVM.
  • RoboBinding - A data-binding Presentation Model (MVVM) framework for the Android platform.
  • Data Binding Library - Official Android Data Binding Library to write declarative layouts and minimize the glue code necessary to bind application logic and layouts.

Dependency Injection

  • RoboGuice - Dependency injection framework for Android.
  • Dagger - Dependency injection framework for Java and Android.
  • Dagger 2 - A fast dependency injector for Android and Java.
  • Butter Knife - View "injection" library for Android.
  • AndroidAnnotations - Java annotations with dependency injection at compile time.

Game Development

  • AndEngine - Free, Fun and Fast Android 2D OpenGL Game Engine.
  • Libgdx - Cross-platform game engine and SDK. Open Source
  • Vuforia - Augmented Reality library.
  • Unity - Cross-platform game creation system.
  • Rajawali - Android OpenGL ES 2.0/3.0 Engine

GUI

  • Pull to refresh - A swipe refresh layout is available in the v4 support library.
  • Cardslib - Android Library to build a UI Card.
  • AndroidStaggeredGrid - Grid view which supports multiple columns with rows of varying sizes.
  • AndroidQuery - Android-Query (AQuery) is a light-weight library for doing asynchronous tasks and manipulating UI elements in Android.
  • Flow - Library that helps with describing an app as a collection of moderately independent screens.
  • Crouton - Context sensitive notifications for Android
  • DragSortListView - Extension of the Android ListView that enables drag-and-drop reordering (No longer maintained).
  • MaterialProgressBar - Material design ProgressBar with consistent appearance.
  • AndroidFillableLoaders - Fillable progress view working with SVG paths. Nice option too for creating interesting app logos.
  • NexusDialog - Allows you to easily and quickly create forms in Android with little code.
  • Snap RecyclerView Utils - Populate Single or multiple Layout RecyclerView without creating an Adapter.
  • SwipeableCard - Implementation of swipe card like StreetView!!
  • ElasticProgressBar - Beautiful loading bar.
  • EntryScreenManager - Intro/Entry/Walkthrough/Starting Screens.
  • EasyIntro - The flexible, easy to use, all in one app intro library for your Android project.
  • Material-Calendar-View - Material Design Calendar compatible with API 8+
  • SectionedRecyclerViewAdapter - An Adapter that allows a RecyclerView to be split into Sections with headers and/or footers.
  • DragListView - Drag and drop to reorder items in a list, grid or board.
  • Animated Expanding ListView - Animated Expanding ListView provides a fancy animation on expanding or collapsing the content of a listview item.
  • TastyToast - Toasts with icons and color.
  • DotLoader - A customizable loading animation with Dots.
  • PodSlider - A customizable slider widget adhering to material design specs.
  • TapTargetView - An implementation of tap targets from the Material Design guidelines for feature discovery.

ActionBar

Navigation

  • SlidingMenu - Library to create applications with slide-in menus.
  • SlidingTutorial - Simple library that helps to create awesome sliding android app tutorials.
  • PagerSlidingTabStrip - An interactive indicator to navigate between the different pages of a ViewPager.
  • Page View indicator - Support for horizontally scrolling ViewPager.
  • MaterialDrawer - Simple take on a material design navigation drawer.

Animations

Images

  • android-crop - Library project for cropping images.
  • CircularImageView - Custom view for circular images while maintaining the best draw performance.
  • Android-Image-Filter - Library project for applying image filters easily.
  • Compressor - Compressor is a lightweight and powerful android image compression library.

Inputs

  • FloatingLabel - FloatingLabel Allows you to create a blow kind of EditText. Doesn't have Gradle or Maven Support.
  • MaterialEditText - Supporting Floating Labels, Single Line Ellipsis, Max/Min Characters, Helper Text and Error Text with Custom Colors.
  • Emojicon - Adds emoticons to your app
  • MaterialSearchBar - Material Design Search Bar for Android

Loading Images

  • Picasso - A powerful image downloading and caching library for Android.
  • Universal Image Loader - Asynchronous, out of the box loading and caching of images.
  • Glide - An image loading and caching library for Android focused on smooth scrolling,Recommended by google.
  • Fresco - An Android library for managing images and the memory they use.
  • Glide Bitmap Pool - Glide Bitmap Pool is a memory management library for reusing the bitmap memory.
  • MediaPicker - Android Libary that lets you to select multiple images, video or voice for Android

JSON

  • Gson - Gson is a Java library used for serializing and deserializing Java objects from and into JSON.
  • Jackson JSON Processor - High-performance JSON processor.

Crash monitoring

  • Fabric Crashlytics - Easy crash reporting solution.
  • HockeyApp - Distribution, Crash Reports, Feedback and Analytics
  • Splunk MINT - Monitoring, Crash Reports, Real tima data, Statistic.
  • Bugsnag - Cross platform error monitoring.
  • Catcho - No Force Close any more.

Networking

  • Ion - Good networking library for android.
  • OkHttp - An HTTP+SPDY client for Android and Java applications.
  • Asynchronous Http Client - An Asynchronous HTTP Library.
  • RoboSpice - Library that makes writing asynchronous network requests easy.
  • IceNet - Fast, Simple and Easy Networking for Android
  • Android Volley - Official Android HTTP library that makes networking for easier and faster.
  • IceSoap - Easy, asynchronous, annotation-based SOAP for Android.
  • node-android - Run Node.js on Android.
  • HappyDns - A Dns library, user can use custom dns server, dnspod httpdns. Only support A record.
  • RESTMock - HTTP Web server for mocking API responses in Android Instrumentation tests.
  • AndroidNetworking - Android Networking is a powerful library for doing any type of networking in Android applications.
  • Packetzoom - SDK for optimizing HTTP requests and free analytics service for networking.

Notifications

Database

  • Cupboard - Access the sqlite easily via direct database access or through the ContentProvider framework.
  • DbInspector - Provides a simple way to view the contents of the in-app database for debugging purposes.
  • SQLite Asset Helper - manage database creation and version management using an application's raw asset files.
  • Realm - The alternative to SQLite and ORMs: Simple, modern and fast! Object oriented API and multi platform support.
  • Realm Asset Helper - Copies a realm database from the apk assets folder. Efficienty handles versioning of read-only realm databases.
  • RestorableSQLiteDatabase - A wrapper to replicate android's SQLiteDatabase with restoring capability.

ORM

  • requery - Compile time ORM and SQL query library for Java & Android.
  • GreeDAO - Light & fast ORM solution.
  • ORMLite - Lightweight ORM Java package for JDBC and Android.
  • ActiveAndroid - Active record style ORM.
  • Sugar ORM - Insanely easy way to work with Android Databases.
  • DBFlow - Fast and powerful ORM with compile-time annotation processing.
  • NexusData - Object graph and persistence framework for Android.
  • SimpleNoSQL - A simple NoSQL client for Android. Meant as a document store using key/value pairs and some rudimentary querying. Useful for avoiding the hassle of SQL code.
  • RxSimpleNoSQL - Reactive extensions for SimpleNoSQL. Manipulate entities using Observables.

REST

  • Retrofit - Retrofit turns your REST API into a Java interface.

Testing

  • Robotium - Test automation framework for black-box UI tests.
  • Roboletric - Unit test framework to run tests inside the JVM on your workstation, not in the emulator.
  • AssertJ Android - AssertJ assertions geared towards Android.
  • Green Coffee - Run your Cucumber tests in your Android instrumentation tests.

Tracking

  • MobileAppTracking - Tracking your marketing campaigns across multiple ad networks.
  • Mixpanel - Analytics platform to analyze the users.
  • Countly - Open source mobile & web analytics, push notifications and crash reporting platform, based on Node.js, MongoDB and Linux.
  • CleverTap - Analytics platform and user-engagment platform with 1 million free events

Maps

  • Google-Directions-Android - Allows you to calculate the direction between two locations and display the route on a Google Map using the Google Directions API.
  • Android Maps Extensions - Extending capabilities of Google Maps Android API v2, adding marker clustering among other things
  • Clusterkraf - Clustering library for the Google Maps Android API v2

Utility

  • EventBus - EventBus is a library that simplifies communication between different parts of your application.
  • Otto - Event Bus for Android.
  • Weak handler - Memory safer implementation of android.os.Handler.
  • Byte Buddy - Runtime code generation library with support for Android.
  • Secure Preference Manager - Secure Preference Manager for android. It uses various Encryption to protect your application's Shared Preferences.
  • LeakCanary - Catch memory leaks as they occur.
  • Drekkar - An Android event bus for WebView and JS.
  • Androl4b - A vm for assessing android applications.
  • DroidMVP - Android library to help you incorporate MVP along with Passive View and Presentation Model patterns into your app.
  • Gota - Simplifying Android Permissions.
  • EasyDeviceInfo - Get device information in a super easy way.

Debugging Tools

  • Linx - Show logcat inside the device for debug builds
  • Scalpel - View the entire hierarchy in 3d in the phone.
  • Stetho - Debug hierarchy and network from chrome.

Wireless

  • SmartGattLib - Simplifies the work with Bluetooth SMART devices (a.k.a. Bluetooth Low Energy in Bluetooth 4.0).

Chat & Messaging

  • Applozic Android Chat SDK - Android Chat and Messaging SDK for adding real time chat and in-app messaging into your android application.
  • Qiscus SDK - Qiscus SDK is a lightweight and powerful android chat library. Qiscus SDK will allow you to easily integrating Qiscus engine with your apps to make cool chatting application.

Custom Dialog

  • MediaRecorderDialog - Cutome Dialog to recoder audio, store it and play it in your phone.
  • HijriDatePicker - offers a hijri (Islamic Calendar) Date Picker designed on Google's Material Design Principals For Pickers.

Version Checking

  • AppUpdater - comprehensive and feature rich library, including support for checks at Amazon and FDroid.
  • Gandalf - comprehensive features and a "companion" iOS solution.
  • Siren - focused feature set that mimicks the popular iOS library of the same name. Supports Play and Amazon.
  • Fit - version checking callback framework with no UI.

Other

  • Android Support library - The Android Support Library package is a set of code libraries that provide backward-compatible versions of Android framework API.
  • Google Play Services - Library to access Google services, such as account syncing, Google+ (sharing, single sign-on), Google Maps, Location APIs, Google Play Games, Cloud Messaging, Android Device Manager, and others.
  • Tape - A lightning fast, transactional, file-based FIFO for Android and Java.
  • Guava: Google Core Libraries for Java - Collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
  • Android Scripting - Allows to run scripting languages on Android.
  • Android Priority Job Queue - Implementation of a Job Queue to easily schedule jobs (tasks) that run in the background, improving UX and application stability.
  • RateMeMaybe - Asks the user if (s)he wants to open the Play Store to rate your application.
  • Easy Rating Dialog - Lib provides a simple way to display an alert dialog for rating app.
  • ZXing Android-Integration - Integration with Barcode Scanner via Intent.
  • Gradle Retrolambda Plugin - Java 8 Lambdas on Android!
  • RxJava- RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
  • Caffeine - A collection of utility classes that help make Android development faster.
  • AboutLibraries - Automatically generates an About this app section, with a list of used libraries.
  • AudioPlayerView - A view that loads audio from an url and have basic playback tools.
  • andle - command line tool help you sync dependencies, sdk or build tool version.
  • Typography - An Android library that makes it easy to use custom fonts in views.
  • transai - command line tool help you manage localization string files.
  • Android-Link-Preview - It makes a preview from an url, grabbing all the information such as title, relevant texts and images.
  • Sensey - Detecting gestures in a snap.

Resources

More lists of libraries

Development Alternatives

My personal recommendation is (for now) to use the android api to build a native app. Scala can help to build this native apps with cleaner code. But there are also use cases where alternatives like cross-platform development can be useful.

C#

  • Xamarin - Framework to create native iOS, Android, Mac and Windows apps in C#.

HTML, CSS and Javascript

  • PhoneGap - Open source framework by Adobe to create cross platform mobile apps using HTML, CSS, and JavaScript.
  • Titanium - Open-source framework to create 'native' cross platform apps using JavaScript.
  • NativeScript - An open-source framework to build native iOS and Android apps with JavaScript from a single code base.
  • React Native - A framework for building native apps with React by Facebook.
  • Ionic Framework - A framework to build hybrid apps with mobile-optimized HTML, CSS and JS with AngularJS.
  • Apache Cordova - Cordova based applications are, at the core, applications written with web technology: HTML, CSS and JavaScript.
  • Reapp.io - Cordova based framework to build hybrid apps with mobile-optimized HTML, CSS and JS with ReactJS.

Lua

  • Corona SDK - Framework to create native iOS and Android Apps (especially Games).

Scala

  • Scala on Android - Introduction to Scala on Android.
  • Scaloid - Library for less painful Android development with Scala.
  • Macroid - A modular functional UI language for Android.

Groovy

Kotlin

  • Anko - DSL for Android written in Kotlin by JetBrains.
  • Kotterknife - Android view injection writen in Kotlin based on ButterKnife
  • Android Kotlin Samples - Some basic Android code samples writen in Kotlin.
  • KAndroid - Lightweight library providing useful extensions to eliminate boilerplate code in Android SDK.
  • RxKotlin/Pocket - This app help user to save links easily, and can export to Evernote as weekly.

Performance

Other Awesome Lists

Other amazingly awesome lists can be found in the awesome-awesomeness list.

Contributing

Your contributions are always welcome! Please read the contribution guidelines first.