Skip to content

wahibhaq/ultimate-resources-android-devs

Repository files navigation

Compiled & Curated List of Resources for Android Developers

I am trying to compile and curate a collection of resources which can be pretty handy for Android Developers. Something like an aggregator for all the relevant and vital pieces of information for our fraternity.

Note : This is an on-going list and I will keep updating it ! Feel free to comment or submit a PR for changes or additions.

Learning what it takes to become one


Best practices shared by others to help you


Stuff I can read to revise my knowledge


Regular Updates, Banter & Articles

Podcasts

Collection of Android Talks

  • Droidtalks is a very nice collection of talks about Android Development organized by Topics, Events and Creators.

Design and UX


Third-party Libraries

  • This represents the List of "must have" libraries that are extremely popular and are often used in almost any Android project.

  • Android Arsenal is a Portal for Android tools and libraries.

  • Discover top Android libraries based on their popularity in high-ranking apps on Libtastic.

  • Open Source libraries from Square (We just can't thank them enough !)

  • A curated list 1 & list 2 of awesome Android UI/UX libraries.

  • Stuff about Writing and Publishing Libraries

    • Jitback.io : Easy to use package repository to publish your JVM and Android libraries on Git.
  • Fitness
  • Lifecycle Handling
  • Logging
    • Hugo
    • Lynx : see LogCat output right in the app, useful for QAs and developers
    • DebugOverlay : A tiny window overlay to log app internal on top of your android app.
    • Timber : A logger with a small, extensible API which provides utility on top of Android's normal Log class.
    • Frodo : Android Library for Logging RxJava Observables and Subscribers.
    • Hugo : Annotation-triggered method call logging for your debug builds.
  • Debugging
    • LeakCanary : detect memory leaks without IDE! Must have for QAs and developers.
    • TinyDancer — see frame rate right on your screen. Must have for QAs and developers.
  • Improved Architecture
    • LightCycle : LightCycle is an Android library that helps break logic out of Activity and Fragment classes into small, self-contained components called LightCycles. It is provided by Soundcloud.
  • Location
    • ReactiveLocation : Small library that wraps Google Play Service API in brilliant RxJava Observables reducing boilerplate to minimum.
  • Data Access Layer
    • GreenDAO : Light & fast ORM solution for Android that maps objects to SQLite databases.
    • Apollo-Android : A strongly-typed, caching GraphQL client for Android, written in Java.
  • Code Generation / Reducing Boilerplate code
    • AutoValue : Value types in Java are hard. Well, not hard, but tedious. Google’s AutoValue library makes them much easier. This article provides nice overview.
    • Auto Parcel : AutoValue extension that enables Parcelable values generation.
    • Auto Value Json : AutoValue extension to add Gson De/Serializer support.
    • Esperando : Easy SharedPreference Engine for Android. Helps in avoiding a lot of boilerplate code & it uses an Annotation Processor to generate a class implementing the defined interface at compile time.
    • FuckBoilerplate : Collection of several resources to reduce boilerplate.
    • Dart : Extra "injection" library for Android which uses annotation processing to generate code that does direct field assignment of your extras.
    • Icepick : Android library that eliminates the boilerplate of saving and restoring instance state. It uses annotation processing to generate code that does bundle manipulation and key generation, so that you don't have to write it yourself.
    • DeepLinkDispatch : A simple, annotation-based library for making deep link handling better on Android.
    • SqlDelight : Generates Java models from CREATE TABLE statements.
  • Images Loading & Caching
    • Glide : An image loading and caching library for Android focused on smooth scrolling.
    • Picasso : A powerful image downloading and caching library for Android.
    • Fresco : An Android library from Facebook for managing images and the memory they use.
  • Image Processing
    • AndroidPhotoFilters : AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media.
    • uCrop : This project aims to provide an ultimate and flexible image cropping experience.
    • 9-Patch-Resizer : Automatically resizes and compresses images.
    • GIMP : Open source image editing
    • Inkscape : Open source vector image editing.
    • Optipng : Optimize PNG files.
  • Video
    • Exoplayer : ExoPlayer is an application level media player for Android, allow playing audio and video both locally and over the Internet. Supports features like Dynamic adaptive streaming over HTTP (DASH), SmoothStreaming and Common Encryption.
    • Easy Video Player : Easy Video Player is a simple but powerful view that you can plugin to your apps to quickly get video playback working.
  • JSON Parsing and Serialization
    • LoganSquare : Screaming fast JSON parsing and serialization library for Android.
    • Moshi : Moshi is a modern JSON library for Android and Java from @square. It makes it easy to parse JSON into Java objects.
  • Reactive Programming
    • Agera : Agera is a set of classes and interfaces to help write functional, asynchronous, and reactive applications for Android.
  • MVP
    • Nucleus : A simple Android library, which utilizes the Model-View-Presenter pattern to properly connect background tasks with visual parts of an application.
    • Mosby : A Model-View-Presenter library for modern Android apps.
    • DroidMVP : Small Android library to help you incorporate MVP, Passive View and Presentation Model patterns in your app.
  • Graph/Charts
    • MPAndroidChart : A powerful Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations.
    • Hellochart : Charts/graphs library for Android compatible with API 8+, several chart types with support for scaling, scrolling and animations.
  • Permissions
    • Dexter : Android library that simplifies the process of requesting permissions at runtime.
  • Device Info
    • EasyDeviceInfo : Android library to get device information in a super easy way.
  • Showing Hints
    • HintCase : HintCase is a library for Android that will help you create really awesome hints/tips for your apps.
  • Custom Views and Animations
    • Depth-Lib : A library that gives depth to Views.
    • Elegant-Underline : Exploring possible implementations for better underline text decoration on Android. There's a detailed article on this as well.
    • Focus Resize : A custom animation with scroll listener to recycler views.
    • DiscreteSlider : A slider that allows a user to select a value at one of the specified tickmarks.
    • Page Indicator View : An page indicator for Android ViewPager.
    • Epoxy : Epoxy is an Android library for building complex screens in a RecyclerView.
    • Groupie : Groupie helps you display and manage complex RecyclerView layouts.
    • Lottie : Kib from Airbnb to render After Effects animations natively on Android and iOS. Here's a blog post explaining how to use it.
  • Database
  • Simplifying Communication between building blocks
    • EventBus : Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality. There's a nice comparison between Otto and EventBus.
    • Otto : An enhanced event bus with emphasis on Android support.
    • RxAndroid : RxJava bindings for Android.
  • Fonts
  • Communication
  • Crash Reports
    • ACRA : ACRA is a library enabling Android Application to automatically post their crash reports to a GoogleDoc form. Acralyzer is the backend which needs to be hosted to display Acra Reports.
  • UI Tests
    • Espresso : Use Espresso to write concise, beautiful, and reliable Android UI tests. It's part of the Android Testing Support Lib.
    • OkReplay : Automatically record and replay OkHttp network interaction through your Android application.
    • Betamax : Betamax is a tool for mocking external HTTP resources such as web services and REST APIs in your tests.
    • Test-Butler : Reliable Android testing, at your service. Provides a reliable solution that would let us rely on our tests to inform us when there was a problem with the app, not the testing environment.
  • Dependency Injection
    • Dagger2 : A fast dependency injector for Android and Java.
    • Toothpick : A scope tree based Dependency Injection (DI) library for Java.

Third-party tools

  • Debugging
    • [Stetho](a powerful new debugging platform for Android) : A powerful new debugging platform for Android developed by Facebook. It can help in Inspecting Network Connections, Querying SQLite Databases or Manipulating Your App’s Preferences.
    • CharlesProxy : Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet.
    • Android Debug Database : Android Debug Database allows you to view databases and shared preferences directly in your browser in a very simple way.
  • Static Code Analysis
    • Infer : Facebook Infer is a static analysis tool - if you give Infer some Objective-C, Java, or C code, it produces a list of potential bugs.
    • Gnag : A Gradle plugin that helps facilitate GitHub PR checking and automatic commenting of violations.
  • Avoiding the dreaded 65K limit
    • Methods Count : Android libraries are great, but they come at a cost. Use this tool to avoid the dreaded 65K method limit of the DEX file format!
  • Design and UI/UX
    • Shape Shifter : For those who want to integrate AnimatedVectorDrawables in the apps. This tool makes it quite easy to create property animations for each individual layer and organize them via a timeline. Alex explained the features here.
  • Localization Services
    • Crowdin : Translate and manage the process better, faster, and smarter. Crowdin is the tool that will make localization a part of your development quickly and with less effort.
  • 3rd Party Libs
    • For keeping a check on latest version of 3rd party libs added in Gradle, you can use Gradle,please in order to avoid checking individually on the official pages. Another way is to use gradle-version-plugin which is a Gradle plugin to discover dependency updates.
    • Android Library Finder : Search through thousands of android libraries that can help you scale your projects elegantly.
  • Firebase.io
  • Open Source Projects
    • Climb-Tracker : Climbing tracker app for Android and Android Wear, using Firebase.
  • Giving App Demos
  • Vysor : It offers a nice Chrome Extension which allows you to easily view and control your Android on your computer. You can use it to show demo with screen sharing.
  • Apk Optimizers
  • Redex : Android bytecode (dex) optimizer originally developed at Facebook. An APK optimized by ReDex should be smaller and faster than its source.

Android Internals

Continuous Integration

Third-party useful plugins/projects

  • Static code analysis
    • Android-Check : Static code analysis plugin for Android project. (Checkstyle, PMD)
    • Eror Prone : Catch common Java mistakes as compile-time errors. Developed by Google.
    • android-project-example : It is project for fast create android applications, using Checkstyle, FindBugs, PMD and lint.
    • A good collection can be found here as well.
    • Android Lint Checks

Rules, Code Style and Best Practices

Experts & Devs to follow

Kotlin

Rx

  • RxJava for Android : Personally curated list of learning resources for this RxJava stuff and how it applies to Android.

Communities and User Groups


Tracking Droidcon events


Open Source


Other Collections

Success is simple. Do what's right, the right way, at the right time ~ Arnold H. Glasow

About

Compiled & Curated List of Resources for Android Developers

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published