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
Official resources from Google to get you started with designing and developing for Android.
Guide about bare bones version of becoming an Android Dev.
Code Path is the central crowdsourced resource for complete and up-to-date practical Android developer guides for any topic.
This post will help you build your app from scratch and guide you through ideation to publishing on Play Store.
Self-Guided Learning Plan : lists down all courses which are free except for (*). Most are video courses, some useful websites are listed.
- Training Videos on Caster.io will teach you everything you need to know in order to thrive and survive as an Android Developer.
Best practices shared by others to help you
Pro Dev Tips
- Dev Tips from Sebs
- Internet of terms
- 30 things that experience made me learn the hard way : Some of the things learned along the way that Cesar wants to share with you.
Necessary Evaluation Criterias
- Android Audit : You Android app as a crime scene!!!
Valuable Insights shared by Popular Apps
- Instagram - 4 years later : Tyler Kieft shared how Instagram radically improved their Android App in 4 years.
Interesting Panel Dicussions
- The Journey of Android Engineers: Panel Discussion and Q&A : This panel discussion was part of a "Square Presents" event from February 18th, 2016.
Supporting Different Languages and Locales
- [Developing for the Rest of the World] (https://speakerdeck.com/ericfrohnhoefer/developing-for-the-rest-of-the-world) : This talk provide tips for developing apps intended for an international audience.
- 50 Tips, Tricks & Resources you should be familiar with : This article list down helpful tips, tricks, shortcuts and resources for Android Studio that will improve your overall efficiency and performance.
- Android Studio Tips of the day is a series shared by Philippe Breault (GDE). Roundup #1, Roundup #2 and Roundup #3 (It's more about debugging!).
Stuff I can read to revise my knowledge
Regular Updates, Banter & Articles
- Fragmented Podcast
- Android Dev Digest
- Android Weekly
- Android Developers
- News, tips, and tricks directly from the Android team
- Android Community
- Android Dialogs
- Grokking Android
- Styling Android
- AndroidDev Reddit
- Novoda Blog
Collection of Android Talks
- Droidtalks is a very nice collection of talks about Android Development organized by Topics, Events and Creators.
Design and UX
- Material Design Glossary : Speak Intelligently About Your App Anatomy (Material Design Glossary).
- Material Design everywhere using the Android Support Libs : Mike Wolfson highlights some important components of these libraries and demonstrates how to use them effectively.
- CheeseSquare : Demos the new Android Design library.
Themes and Styles
Tools and Apps to Help
- Keylines : Painlessly build and ship apps that conform to the Material design specifications.
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 !)
Stuff about Writing and Publishing Libraries
- Jitback.io : Easy to use package repository to publish your JVM and Android libraries on Git.
- 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.
- 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.
- ReactiveLocation : Small library that wraps Google Play Service API in brilliant RxJava Observables reducing boilerplate to minimum.
Data Access Layer
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
- 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.
- 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
- Agera : Agera is a set of classes and interfaces to help write functional, asynchronous, and reactive applications for Android.
- 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.
- 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.
- Dexter : Android library that simplifies the process of requesting permissions at runtime.
- EasyDeviceInfo : Android library to get device information in a super easy way.
- 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.
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.
- Calligraphy : Custom fonts in Android the easy way.
- Slyc Messaging : A messaging library for Android.
- 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.
- [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
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
- 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.
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.
- Redex : Android bytecode (dex) optimizer originally developed at Facebook. An APK optimized by ReDex should be smaller and faster than its source.
- Talk by Jack Wharton on Exploring Java's Hidden Costs
- How to set up a Continuous Integration server for Android development : It summarizes the installation steps for any developer that may be interested in setting up its own CI server involving Ubuntu + Jenkins + SonarQube.
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
- Code Style for Contributors
- Google Java Style
- Android Project Guidelines from Buffer
- Java Code Styles from Square : IntelliJ IDEA code style settings for Square's Java and Android projects.
- Android Style
Experts & Devs to follow
- Droids on Twitter : I have personally compiled this list.
- Kotlin For Android : Personally curated list of resources focusing only on Kotlin.
- 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
Other Awesome Apps out there
Other Programming languages for Android
- Kotlin : Kotlin is a Statically typed programming language for the JVM & Android. It's 100% interoperable with Java.
Success is simple. Do what's right, the right way, at the right time ~ Arnold H. Glasow