• Stars
    star
    7,843
  • Rank 4,823 (Top 0.1 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸš€ Ultimate Android Reference - Your Road to Become a Better Android Developer

UltimateAndroidReference

The goal of this project is to provide a hand-picked collection of Android libraries, tools, open-source projects, books, blogs, tutorials - you name it.

This project will try to showcase only the best, most popular and well-tested resources that you will actually need and find useful rather than overwhelming you with a plethora of low-quality ones.

Happy learning. πŸ‘

Featured In ⭐

Android Weekly AndroidDev Digest AndroidDev Digest CodePath Android Cliffnotes

Spread Some ❀️

GitHub stars GitHub forks GitHub watchersGitHub followers Twitter Follow

Open Source Love License

Contribution Guide

This project is open to all kinds of contribution in all of its categories. Together, we can make it the ultimate Android reference available for free, for everyone, forever.

For resource contribution, just follow the following format: [reference-name](link) - Description, and raise a Pull Request. If you want to contribute multiple resources, raise separate PRs for each of them. Please consider adding resources maintaining the default sorting order of the category, like alphabetical sorting.

If you have any suggestion for including more categories, feel free to open a Github issue for us to have more discussion on it. Please DO NOT contribute low-quality, spammy or self-promotional stuff. Let's keep this project clean and useful.

If you feel that a particular resource(s) listed here is not a good fit for this project and should be removed, feel free to let me know by opening an issue.

Categories

Libraries

These are some of the best and the most popular libraries and utilities to boost up your Android development. This list is divided into several essential categories and only includes resources which have been battle-tested by a variety of developers over a long time.

Animations

  • AndroidAdditiveAnimations - Additive animations for Android!
  • AndroidRippleBackground - A beautiful ripple animation
  • AndroidViewAnimations - Cute view animation collection
  • Backboard - A motion-driven animation framework for Android
  • Bubble-Picker - An easy-to-use animation which can be used for content picking for Android
  • ExpectAnim - Describe your animation and run
  • Grav - Configurable animations based on points
  • Lottie - Render After Effects animations natively on Android and iOS
  • Rebound - A Java library that models spring dynamics and adds real world physics to your app
  • RichPath - πŸ’ͺ Rich Android Path. 🀑 Draw as you want. πŸŽ‰ Animate much as you can
  • Spruce - Spruce Animation Library
  • TestButler - Reliable Android Testing, at your service
  • ViewAnimator - A fluent Android animation library

Background Processing

  • Android Priority Job Queue - A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability
  • Evernote Android Job - Android library to handle jobs in the background

Charts

  • EazeGraph - An Android chart and graph library
  • HelloCharts - Charts/graphs library for Android compatible with API 8+, several chart types with support for scaling, scrolling and animations
  • 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
  • Spark - A simple Android sparkline chart view
  • WilliamChart - Android library to create charts

Crash Reporting & Tracking

  • Bugsee - Flight recorder for your iOS and Android apps
  • Bugsnag - Monitor application errors to improve customer experiences and code quality
  • CleverTap - A complete tool to track and analyze user activity in your Android app
  • Countly - End-to-end platform for web, mobile applications and game analytics
  • Fabric Crash Analytics - Fabric is a platform that helps your mobile team build better apps, understand your users, and grow your business
  • Firebase Crash Reporting - Google Firebase Crash Reporting for iOS and Android. It creates detailed reports of the errors in your app, groups them into issues based on having similar stack traces, and tagged by the severity of impact on your users
  • HockeyApp - Bring Mobile DevOps to your apps with beta distribution, crash reporting, user metrics, feedback, and powerful workflow integrations
  • InstaBug - The top apps in the world rely on Instabug for beta testing, user engagement and crash reporting
  • MixPanel - Deeply understand every user's journey with instant insights for everyone on mobile and web

Debugging

  • Android Debug Database - A library for debugging Android databases and shared preferences
  • Android Performance Monitor - A transparent ui-block detection library for Android (known as BlockCanary)
  • Chuck - An in-app HTTP inspector for Android OkHttp clients
  • Debug Drawer - Android Debug Drawer for faster development
  • Hyperion - App Debugging & Inspection Tool for Android
  • LeakCanary - A memory leak detection library for Android and Java
  • Stetho - Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more
  • Takt - Takt is Android library for measuring the FPS using Choreographer

Dependency Injection

  • Butterknife - Bind Android views and callbacks to fields and methods
  • Dagger - A fast dependency injector for Android and Java
  • Dagger 2 - A fast dependency injector for Android and Java
  • Dart - Extras "injection" library for Android

Image Loading

  • Android Universal Image Loader - Powerful and flexible library for loading, caching and displaying images on Android
  • Coil - An image loading library for Android backed by Kotlin Coroutines.
  • Fresco - An Android library for managing images and the memory they use
  • Glide - An image loading and caching library for Android focused on smooth scrolling
  • Picasso - A powerful image downloading and caching library for Android

Image Processing

  • Android GPU Image - Android filters based on OpenGL (idea from GPUImage for iOS)
  • Fresco Processors - An Android image processor library providing a variety of image transformations for Fresco
  • Glide Face Detection Transformation - An Android image transformation library providing cropping above Face Detection (Face Centering) for Glide
  • Glide Transformations - An Android transformation library providing a variety of image transformations for Glide
  • PhotoFiltersSDK - AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media
  • Picasso Face Detection Transformation - An Android image transformation library providing cropping above Face Detection (Face Centering) for Picasso
  • Picasso Transformations - An Android transformation library providing a variety of image transformations for Picasso
  • Pollexor - An Android library, that can download unencrypted and encrypted images, crop, resize, apply filters and convert to another format.

Logging

  • Hugo - Annotation-triggered method call logging for your debug builds
  • Logger - Simple, pretty and powerful logger for Android
  • LoggingInterceptor - An OkHttp interceptor which pretty logs request and response data
  • Timber - A logger with a small, extensible API which provides utility on top of Android's normal Log class

Networking

  • Fast Android Networking - A Complete Fast Android Networking Library that also supports HTTP/2
  • Ion - Android Asynchronous Networking and Image Loading
  • OkHttp - An HTTP+HTTP/2 client for Android and Java applications
  • OkDownload - A Reliable, Flexible, Fast and Powerful download engine
  • PRDownloader - A file downloader library for Android with pause and resume support
  • Retrofit - Retrofit turns your REST API into a Java interface
  • Scarlet - A Retrofit inspired WebSocket client for Kotlin, Java, and Android
  • Volley - Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster

Persistence

  • ActiveAndroid - Active record style SQLite persistence for Android
  • DBFLow - A blazing fast, powerful, and very simple ORM Android database library that writes database code for you
  • Firebase Realtime Database - Store and sync data with our NoSQL cloud database. Data is synced across all clients in realtime, and remains available when your app goes offline
  • greenDAO - greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases
  • ObjectBox - superfast object-oriented database with strong relation support. ObjectBox is embedded into your Android, Linux, macOS, or Windows app
  • Paper - Fast and simple data storage library for Android
  • Realm - Realm is a mobile database: a replacement for SQLite & ORMs
  • Room - Room provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite
  • RxCache - Reactive caching library for Android and Java
  • StorIO - Beautiful API for SQLiteDatabase and ContentResolver
  • SQL Brite - A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operations

Testing

  • AssertJ - AssertJ is a library providing easy to use rich typed assertions
  • AssertJ Android - A set of AssertJ helpers geared toward testing Android
  • Cucumber - A sweeter Espresso. Never write your own IdlingResource again. Never manually turn off system animations again
  • Composer - Reactive Android Instrumentation Test Runner
  • DaggerMock - A JUnit rule to easily override Dagger 2 objects
  • Espresso - Write easy, simple and human-readable UI tests on Android
  • Hamcrest - Java (and original) version of Hamcrest
  • JaCoCo - JaCoCo - Java Code Coverage Library
  • JUnit4 - A programmer-oriented testing framework for Java
  • Mockito - Most popular Mocking framework for unit tests written in Java
  • MockK - Mocking library for Kotlin
  • OkReplay - πŸ“Ό Record and replay OkHttp network interaction in your tests
  • Robolectric - Android Unit Testing Framework
  • Robotium - Android UI Testing
  • RxIdler - An IdlingResource for Espresso which wraps an RxJava Scheduler
  • RxPresso - Easy Espresso UI testing for Android applications using RxJava
  • Selendroid - Selendroid is a test automation framework which drives of the UI of Android native and hybrid applications (apps) and the mobile web with Selendroid
  • Truth - Assertion/Proposition framework for Java unit tests

UI Components

  • AdaptiveTableLayout - Library that makes it possible to read, edit and write CSV files
  • Alerter - A customisable notification view
  • Android SpinKit - Android loading animations
  • BlurDialogFragment - Library project to display DialogFragment with a blur effect
  • BlurKit Android - The missing Android blurring library. Fast blur-behind layout that parallels iOS
  • BottomBar - A custom view component that mimics the new Material Design Bottom Navigation pattern
  • BottomSheet - Android component which presents a dismissible view from the bottom of the screen
  • Cafebar - An upgraded Snackbar for Android that provides more options and easy to use
  • CircleImageView - A circular ImageView for Android
  • Cyanea - A theme engine for Android
  • DiagonalLayout - With Diagonal Layout explore new styles and approaches on material design
  • DialogPlus - Advanced dialog solution for Android
  • Epoxy - Epoxy is an Android library for building complex screens in a RecyclerView
  • ExoPlayer - An extensible media player for Android
  • FabulousFilter - Library to easily implement FAB to BottomSheetDialog animation
  • FirebaseUI for Android - UI Bindings for Firebase
  • Flashbar - A highly customizable, powerful and easy-to-use alerting library for Android
  • Flexbox Layout - FlexboxLayout is a library project which brings the similar capabilities of CSS Flexible Box Layout Module to Android
  • JazzyViewPager - An easy to use ViewPager that adds an awesome set of custom swiping animations. Just change your ViewPagers to JazzyViewPagers, two more steps, and you're good to go
  • Litho - A declarative framework for building efficient UIs on Android
  • Material Dialogs - A beautiful, fluid, and customizable dialogs API
  • Material Drawer - The flexible, easy to use, all in one drawer library for your Android project
  • Material Search View - Cute library to implement SearchView in a Material Design Approach
  • Matisse - A well-designed local image and video selector for Android
  • Paris - Define and apply styles to Android views programmatically
  • PhotoView - Implementation of ImageView for Android that supports zooming, by various touch gestures
  • Remixer - Remixer is a framework to iterate quickly on UI changes by allowing you to adjust UI variables without needing to rebuild (or even restart) your app. You can adjust Numbers, Colors, Booleans, and Strings.
  • Subsampling Scale ImageView - Highly configurable, easily extendable view with pan and zoom gestures for displaying huge images without loss of detail. Perfect for photo galleries, maps, building plans etc.
  • ShimmerLayout - Memory efficient shimmering effect for Android applications by Supercharge
  • TapTargetView - An implementation of tap targets from the Material Design guidelines for feature discovery
  • Toasty - The usual Toast, but with steroids
  • VectorMaster - Dynamic control over vector drawables
  • VLayout - Project vlayout is a powerful LayoutManager extension for RecyclerView, it provides a group of layouts for RecyclerView

Utilities

  • Aesthetic - A fast and easy to use plug-and-play dynamic theme engine. Powered by Rx, for Android apps
  • Alligator - Alligator is a modern Android navigation library that will help to organize your navigation code in clean and testable way
  • AndroidUtilCode - πŸ”₯ Android developers should collect the following utils(updating)
  • Android Annotations - Fast Android Development. Easy maintainance
  • Android Crop - Android library project for cropping images
  • Android In-App Billing V3 - A lightweight implementation of Android In-app Billing Version 3
  • Android Saripaar - UI form validation library for Android
  • Android Weak Handler - Memory safer implementation of android.os.Handler
  • Ason - JSON in Java made easy! Catch less exceptions, serialize/deserialize with ease, plus some other useful tricks and conveniences
  • BillingX - Extension to the Billing Support library to support debug builds
  • ByteBuddy - Byte Buddy is a code generation and manipulation library for creating and modifying Java classes during the runtime of a Java application
  • Calligraphy - Custom fonts in Android the easy way
  • Cropiwa - The library which is highly configurable for image cropping.
  • DeepLinkDispatch - A simple, annotation-based library for making deep link handling better on Android
  • EasyDeviceInfo - Get device information in a super easy way
  • Easy Permissions - Simplify Android M system permissions
  • Fotoapparat - Making Camera for Android more friendly
  • Gson - A Java serialization/deserialization library to convert Java Objects into JSON and back
  • Guava - Google Core Libraries for Java
  • IcePick - Android Instance State made easy
  • JSoup - Java HTML Parser, with best of DOM, CSS, and jquery
  • LibPhoneNumber - Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers
  • Moshi - A modern JSON library for Android and Java
  • Nanoscope - An extremely accurate Android method tracing tool
  • Parceler - Android Parcelables made easy through code generation
  • PermissionsDispatcher - Simple annotation-based API to handle runtime permissions
  • ProtoBuf - Protocol Buffers - Google's data interchange format
  • Register - Android Library and App for testing Play Store billing
  • Reprint - A unified fingerprint library for Android
  • Secure Preferences - Android Shared preference wrapper than encrypts the values of Shared Preferences
  • Sensey - Detecting gestures in a snap
  • Store - Android Library for Async Data Loading and Caching
  • uCrop - Image Cropping Library for Android

Utilities (Advanced)

  • AutoDispose - Automatic binding+disposal of RxJava 2 streams
  • Android KTX - A set of Kotlin extensions for Android app development
  • Domic - Reactive Virtual DOM for Android
  • EventBus - Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality
  • JavaPoet - A Java API for generating .java source files.
  • Lightweight Stream API - Stream API from Java 8 rewritten on iterators for Java 7 and below
  • Mosby - A Model-View-Presenter / Model-View-Intent library for modern Android apps
  • MvRx - MvRx: Android on Autopilot
  • Optional - Java 8 Optional-like APIs for everyone
  • RetroLambda - A Gradle plugin for getting Java lambda support in Java 6, 7 and android
  • RxAndroid – This module adds the minimum classes to RxJava that make writing reactive components in Android applications easy and hassle-free. More specifically, it provides a Scheduler that schedules on the main thread or any given Looper.
  • RxBinding - RxJava binding APIs for Android's UI widgets
  • RxJava - RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM
  • RxJava2Interop - Library to convert between RxJava 1.x and 2.x reactive types
  • RxLifecycle - Lifecycle handling APIs for Android apps using RxJava
  • RxLint - rxlint is a set of lint checks that check your RxJava code. There are currently three checks
  • RxRelay - RxJava types that are both an Observable and a Consumer
  • Slick - A Reactive MVP Framework which is Slick to use
  • Traceur - Easier RxJava2 debugging with better stacktraces

Open-Source Apps

There are lots of open-source apps available in the Android community for developers to learn from, but it becomes very difficult to find the ones which are actually worth your time and can help you learn a lot of things. This list (loosely categorized on the basis of your Android skills) can help you find the resource you always wanted.

Beginner

  • KISS - Lightning fast, open-source, < 200kb Android launcher
  • Materialize - Materialize all those not material
  • MinimalTodo - Material To-Do App
  • PhotoAffix - Stitch your photos together vertically or horizontally easily!
  • Simple Gallery - A gallery for viewing photos and videos without ads
  • SoundRecorder - A simple sound recording app implementing Material Design

Intermediate

  • ChangeDetection - Automatically track websites changes on Android in background
  • ClipStack - A tiny clipboard history manager app
  • EverMemo - Fast Record,Organize,and Share. The Android memo app you will deeply love
  • FastHub - GitHub client for Android
  • Google I/O App - The Google I/O 2016 Android App
  • InstaMaterial - Implementation of Instagram with Material Design (originally based on Emmanuel Pacamalan's concept)
  • LeafPic - LeafPic is an ad-free, open-source and material-designed Android gallery alternative
  • MLManager - A modern, easy and customizable app manager for Android with Material Design
  • MovieGuide - Movie discovery app showcasing MVP, RxJava, Dagger 2 and Clean Architecture. Popcorn?
  • Narrate -Narrate is a beautiful and functional open source journal for Android
  • Plaid - An Android app which provides design news & inspiration as well as being an example of implementing material design
  • Protein - πŸ€ An Android App for Dribbble
  • Robot Scouter - πŸ€– A scouting app for FIRST Robotics Competition teams
  • ToolWizAppLock - Smart App Lock for Android
  • Turbo Editor - Simple and powerful File Editor for Android
  • WeGit - An Android App for Github

Expert

  • AmazeFileManager - Amaze File Manager source code
  • AntennaPod - A podcast manager for Android
  • CatchUp - An app for catching up on things
  • CoCoin - CoCoin, Multi-view Accounting Application
  • Conversations - A federated Instant Messaging app for Android (XMPP/Jabber)
  • Kickstarter - Kickstarter for Android. Bring new ideas to life, anywhere
  • LibreTorrent - Free as in Freedom torrent client for Android
  • MusicDNA - A Music Player for Android that renders beautiful DNA(Visualization) of the currently playing music
  • Muzei Wallpaper - Muzei Live Wallpaper for Android
  • OmniNotes - Open source note-taking application for Android
  • QkSms - The most beautiful SMS messenger app for Android
  • RedReader - An unofficial open source Reddit client for Android
  • Signal - A private messenger for Android
  • SuperCleanMaster - CleanMaster like open-source app
  • Talon for Twitter - 100% open source version of my popular Talon for Twitter app on Android
  • Talon for Twitter (Material Design) - The Material Design version of my popular Android Talon for Twitter app, 100% open-source
  • Telegram - Telegram for Android source
  • Timber - Material Design Music Player
  • TimberX - Material theme music player that works across all form factors (phones, wear, auto, cast, assistant) and uses latest tools (Kotlin, Architecture components, Room, Databinding)

Tools

"A craftsman is only as good as his tools" - to level up your Android development workflow you need to have the right tools always ready in your toolbox. This list is here to provide you with hand-picked tools to significantly improve your Android development life.

Free

  • ADB IDEA - A plugin for Android Studio and Intellij IDEA that speeds up your day to day Android development
  • Android Asset Studio - A collection of tools to easily generate assets such as launcher icons for your Android app
  • Android Starters - Android starter based on MVP/Dagger2/RxJava2/Robolectric/Espresso/Mockito. It provides a generator to fast create a Android template project
  • Android Tool for Mac - One-click screenshots, video recordings, app installation for iOS and Android
  • Android Translator - A web-based tool to quickly and easily create translations for your Android app
  • Android Wifi ADB - IntelliJ/AndroidStudio plugin which provides a button to connect your Android device over WiFi to install, run and debug your applications without a USB connected
  • APK DeGuard - DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries
  • APK Patch Size Estimator - Estimates the size of Google Play patches and the new gzipped APK
  • Battery Historian - Battery Historian is a tool to analyze battery consumers using Android "bugreport" files
  • Buck - A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages
  • Butterknife Zelezny - Android Studio plug-in for generating ButterKnife injections from selected layout XML
  • Build Time Tracker - Gradle plugin to continuously track and report your build times
  • Carbon - Create and share beautiful images of your source code
  • CheckStyle IDEA - This plugin provides both real-time and on-demand scanning of Java files with CheckStyle from within IDEA
  • ClassyShark - Android executables browser
  • CodeGlance - Embeds a code minimap similar to the one found in Sublime into the editor pane. Works with both light and dark themes using your customized colors for syntax highlighting
  • Codota - Supercharge your development workflow by getting great code examples directly in your IDE. The Codota plugin for IntelliJ lets you quickly find the best code examples for every API class or method
  • Dagger IntelliJ Plugin - An IntelliJ IDEA plugin for Dagger which provides insight into how injections and providers are used
  • Detekt - Static code analysis for Kotlin
  • DevKnox - Autocorrect Security Issues As You Write Code
  • Dex Count Gradle Plugin - A Gradle plugin to report the number of method references in your APK on every build
  • Dex Method Counts - Command-line tool to count per-package methods in Android .dex files
  • DTO Generator - Data Transfer Object(DTO) generator that generates Java classes from the given feed
  • DPI Love - Get accurate DPI information on a wide range of Android devices
  • Drawable Optimizer - Gradle plugin to optimize png files and reduce resultant apk size within an Android project
  • Dry Run - Try any Android library hosted online directly from the command line
  • FindBugs - Powerful static code analysis tool for Java and Android
  • FlatIcon - The largest database of free icons available in PNG, SVG, EPS, PSD and BASE 64 formats
  • Gradle Please - Quick and easy way to build Gradle based libraries in Android
  • Gradle Profiler - A tool for gathering profiling and benchmarking information for Gradle builds
  • Infer - A static analyzer for Java, C, C++, and Objective-C
  • JSONBlob - JSON Blob is a web-based tool to create, edit, view, format, and share JSON
  • JSONSchema2POJO - Easy and quick way to convert your JSON to Java objects
  • KeyPromoter - Shows to user how easy he can make same action using only keyboard(menus and toolbar button mouse clicks initiates shortcut display)
  • KtLint - An anti-bikeshedding Kotlin linter with built-in formatter
  • Ligaturizer - Programming Fonts with Ligatures added (& a script to add them to other fonts)
  • Material Design Icon Generator - This plugin help you to set material design icon to your project
  • Material Palette - Generate Material Design color palettes quickly and easily
  • Methods Count - Your solution for a perfectly fit APK
  • Mocky.IO - Mock your HTTP responses to test your REST API
  • Name That Color - This plugin lets you insert a name for a color you copy-paste or type in an android resource file
  • OkBuck - OkBuck is a gradle plugin that lets developers utilize the Buck build system on a gradle project
  • Pidcat - Colored logcat script which only shows log entries for a specific application package
  • RESTMock - HTTP Server for Android Instrumentation tests
  • Scalpel - A surgical debugging tool to uncover the layers under your app
  • Scrcpy - Display and control your Android device
  • Shape Shifter - Useful tool for creating simple path morphing AnimatedVectorDrawables
  • Slides Code Highlighter - A nifty tool to turn your boring pieces of code into beautifully highlighted code snippets
  • Sonar - A desktop debugging platform for mobile developers
  • SonarLint - SonarLint is an IntelliJ IDEA plugin that provides on-the-fly feedback to developers on new bugs and quality issues injected into Java
  • Spotless - Keep your code spotless
  • SourceTree - Harness the power of Git and Hg in a beautifully simple application
  • String Manipulation - Provides actions for text manipulation such as toggle, capitalize, encode/decode, etc
  • SVG2VectorDrawable Plugin - Tools for convert SVG file to Android VectorDrawable
  • WireMock - A tool for mocking HTTP services

Free (+ Pro)

  • Crowdin - Translate and manage the process better, faster, and smarter
  • GenyMotion - A unique platform to bring your Android app to perfection!
  • GitKraken - The most popular Git GUI for Windows, Mac AND Linux
  • IDE Scout - SQLScout is a plugin for Android Studio and IntelliJ IDEA that provides powerful, dedicated support for managing and debugging SQLite databases
  • JRebel for Android - Instantly update code and resources JRebel for Android is an IDE plug-in that accelerates the development of Android applications
  • NimbleDroid - Auto-test Your Android Apps for Critical Issues. No Coding Required
  • Markdown Navigator 2.0 - Markdown language support for IntelliJ IDEA.
  • The Noun Project - Icons for Everything
  • Trialy.IO - Increase your IAP conversions by letting your users try premium features for a limited time
  • Vysor - Vysor puts your Android on your desktop
  • Zeplin - Design hand-off has never been easier. Generate styleguides and resources, automatically

Kotlin for Android

Kotlin, the new statically-typed programming language from JetBrains aims to make Android app development fun and enjoyable once again. It's like Java on steroids. Here is a list of some cool Kotlin resources for you to get started.

  • Anko - Pleasant Android application development
  • Anvil - Minimal UI library for Android inspired by React
  • AsyncAwait - async/await for Android built upon coroutines introduced in Kotlin 1.1
  • Exposed - Kotlin SQL Framework
  • Klutter - A mix of random small libraries for Kotlin, the smallest reside here until big enough for their own repository
  • Kodein - Painless Kotlin Dependency Injection
  • KoHttp - Kotlin DSL http client
  • Koi - Koi, a lightweight Kotlin library for Android Development
  • KotlinPoet - A Kotlin API for generating .kt source files.
  • PreferenceHolder - SharedPreference usage made easy using Kotlin
  • RxKotlin - RxJava bindings for Kotlin
  • Spek - A specification framework for Kotlin

Android Studio Shortcuts

IDE shortcuts can really make your development workflow fast and smooth and Android Studio shines perfectly in this aspect. Ideally, you should make it a habit to not pick up the mouse to perform most of your actions and slowly migrate towards a mouseless-workflow. Here are some of the most useful shortcuts for you to get started.

(Currently, only Mac shortcuts are available. Windows and Linux shortcuts coming soon.)

Must-Know Shortcuts:

Never-ever-ever forget these shortcuts.

Description Shortcut
Find everything (like files, classes, symbols, etc.) Shift + Shift
Show a list of automatic fixes and IDE suggestions at the cursor Option + Enter
Rename all copies of the variable/method/class at the cursor Shift + F6
List all usages of the variable/method/class at the cursor Command + Option + F7
Generate code (like getters, setters, constructors, method overrides) Command + N
Search for any action in Android Studio Command + Shift + A
Find text occurencesin the current file (Enter = cycle through results, Esc. = cancel) Command + F
Show the list of recently used files in the IDE Command + E
Run the app or test Control + R

Frequently Used Shortcuts:

You will surely need these quite often.

Description Shortcut
Search for and open any file by name Command + Shift + O
Move a piece of code in upward/downward direction Command + Shift + Up/Down
View javadoc of symbol at cursor in pop-up F1
View definition of method at cursor in pop-up Command + Y
Search for and list any occurrences of text Command + Shift + F
Comment/Uncomment all selected lines (also works in xml files) Command + /
Show available parameters for current method (must be inside parentheses) Command + P
Format code to match Android Studio's default style Command + Option + L
Delete a complete line at one go Command + Delete
Navigate through classes and methods Command + Left Click

Useful Shortcuts:

These can help you level up your development workflow.

Description Shortcut
Go to next highlighted error in current file F2
Go to the declaration of the variable/method/class at cursor Command + B
Go to given line number in current file Command + L
Duplicate current line Command + D
Search for and go to any symbol (incl. variables and methods) Command + Option + O
Show class structure in pop-up Command + F12
List recently edited files in pop-up Command + Shift + E
View full refactor menu Control + T
Collapse/expand all code blocks Command + Shift + +/-
Collapse/expand individual code block Command + +/-
Insert new line below current cursor position Shift + Enter
Complete statement (add braces, parentheses, semi-colon) Command + Shift + Enter

Android Studio Live Templates

Just like shortcuts, Live Templates can make your life a lot easier by generating tons of boring boilerplate code in a jiffy. Android Studio comes pre-loaded with a lot of these templates and here is a collection of some of the best ones for you to get started.

  • Toast - Creates a new Toast.makeText(context, "", Toast.LENGTH_SHORT).show(); toast
  • newInstance - Generates the static newInstance factory method in a Fragment with arguments
  • noInstance - Generates a private empty constructor to prevent instance creation
  • ViewConstructors - Generates the view constructors
  • Parcelable - Generates the boilerplate code for Pacelable implementation
  • fbc - Generates the findViewById code with the appropriate cast
  • const - Generates a constant according to Android's coding conventions
  • logd - Generates Log.d(TAG, ""); log. Check the other variants as well
  • logm - Generates a log with the current method name and its arguments
  • logr - Generates a log result of the current method
  • psf - Generates the boilerplate public static final. Also check psfi and psfs
  • key - Generates the key constant for a Bundle
  • sout - Prints a string to System.out. Also check soutm and soutp
  • visible - Sets a view's visibility to VISIBLE
  • gone - Sets view's visibility to GONE
  • todo - Adds a TODO comment. Also check stopship

Can't get enough of Live Templates? Here is a huge repository of lots of custom Live Templates for you to get your hands on.

Sites

If you want to keep yourself updated with all the latest Android development news, articles and tutorials then these are some of the best sites in the Internet where the good Androidy-things happen all the time.

  • AndroidPub - The Pub(lication) for Android & Tech, focused on Development
  • Android Arsenal - Android developer portal with tools, libraries, and apps
  • Android Design Patterns - Android Design Patterns is a website for developers who wish to better understand the Android application framework
  • AndroidDevDigest - A Handcrafted Weekly #AndroidDev Newsletter
  • Android Developers Official - The official Android development page provided by Google containing all the documentations and trainings
  • Android Hive - Androidhive is independent online publication that covers Android programming tutorials, app reviews and more
  • Android Niceties - A collection of screenshots encompassing some of the most beautiful looking Android apps
  • Android Weekly - Android Weekly is a free newsletter that helps you to stay cutting-edge with your Android Development
  • Antonio Leiva's Blog - Amazing blog on Android development, with special focus on Kotlin from Antonio Leiva
  • Caster.IO - Skyrocket your Android career with bite sized Android development video training
  • Codepath Android Cliffnotes - One of the best and most up-to-date crowdsourced resource for Android developers where you will find guides and tutorials about almost everything in Android
  • Dan Lew Codes - Thoughts on life, the universe and the mystery of it all; but actually mostly just code
  • Grokking Android - Getting Down to the Nitty Gritty of Android Development
  • Material Up - Get fresh Material Design inspiration daily
  • Medium's Google Developers Blog - Engineering and technology articles for developers, written and curated by Googlers. The views expressed are those of the authors and don’t necessarily reflect those of Google
  • Mindork's Blog - A regularly updated blog talking about various aspects of Android development in detail
  • Philosophical Hacker - Some really informative articles on Android development
  • ProAndroidDev - Professional Android Development: the latest posts from Android Professionals and Google Developer Experts.
  • Reddit's AndroidDev - News for Android developers with the who, what, where when and how of the Android community. Probably mostly the how
  • Styling Android - Learn perfecting your Android UI and UX development skills
  • Talking Kotlin - A Podcast on Kotlin and more
  • Vogella - Learn almost everything about Android development in an easy way

Books

"Books are gifts that you can open again and again" - here is a curated list of some of the best books that can help you sharpen your Android, Java and overall programming skills. Pick one of them and just start reading.

Podcasts

Not too fond of reading books or blogs? You should definately try listening to some of these podcasts in your free time, while driving, cooking or doing the dishes.

Sample Projects

If you want to get started with something quick-and-dirty, then sample projects are something which can help you a lot in understanding the concepts and technicalities in almost no time.

  • AdaptiveIconPlayground - An Android app for experimenting with Adaptive Icons
  • Android Architecture - A collection of samples to discuss and showcase different architectural tools and patterns for Android apps
  • Android Boilerplate - Android boilerplate app that showcases architecture and libraries used at ribot
  • Android Clean Architecture Boilerplate - An android boilerplate project using clean architecture from Buffer
  • Android Clean Architecture Kotlin - This is a movies sample app in Kotlin, which is part of a series of blog posts I have written about architecting android application using different approaches
  • Android Cookbook Examples - Collected code examples from the O'Reilly Android Cookbook
  • Android Instant Apps - Samples for Android Instant Apps
  • Android MVP Architecture - This repository contains a detailed sample app that implements MVP architecture using Dagger2, GreenDao, RxJava2, FastAndroidNetworking and PlaceholderView
  • Android MVVM Architecture - This repository contains a detailed sample app that implements MVVM architecture using Dagger2, Room, RxJava2, FastAndroidNetworking and PlaceholderView
  • Android Sunflower - A gardening app illustrating Android development best practices with Android Jetpack
  • Android Testing - A collection of samples demonstrating different frameworks and techniques for automated testing
  • Android Testing Guide - Complete reference for Android Testing with examples
  • Android Things Driver Samples - Samples for Android Things peripheral drivers
  • Android UniversalMusicPlayer - This sample shows how to implement an audio media app that works across multiple form factors and provide a consistent user experience on Android phones, tablets, Auto, Wear and Cast devices
  • Bubble - ample app showcases the MVP pattern and Robert Martin's Clean Architecture approach
  • Clean Architecture Manifest - Description of the main principles and rules for building an Android application using Clean Architecture approach
  • CW Omnibus - Source code to omnibus edition of The Busy Coder's Guide to Android Development
  • Effective Android UI - Sample project created to show some of the best Android practices to work in the Android UI Layer
  • Espresso Samples - A collection of samples demonstrating different Espresso techniques
  • Firebase Quickstart Android - Firebase Quickstart Samples for Android
  • Firebucket - Glimpse into Firebase, with a simple TODO list app built around Dagger, RxJava 2, Clean architecture and of course, Firebase
  • Java Design Patterns - Design patterns implemented in Java
  • Just Another Android App - An Android base app with loads of cool libraries/configuration
  • Material Animations - Android Transition animations explanation with examples
  • N26AndroidSamples - A public repo to demo the Reactive Clean Architecture
  • Quality Matters - Android Development Culture
  • RxJava Android Samples - Learning RxJava for Android by example
  • RxJava 2 Android Samples - RxJava 2 Android Examples - Migration From RxJava 1 to RxJava 2 - How to use RxJava 2 in Android
  • u2020 - A sample Android app which showcases advanced usage of Dagger among other open source libraries
  • VB Android App Quality - Sample android project using Gradle, with basic quality tools set up

Video Tutorials

Love learning from videos? Don't worry, we have got you covered. This list contains some of the most useful and informative video tutorials to boost up your Android development skills to the next level.

Twitter Profiles

If you are somebody who loves to engage with other fellow developers and surround yourself with all the latest news, ideas and happenings, then this list is just for you. Start following some of the best and most active Android and Java developers on Twitter.

  • Android Developers - News and announcements for developers from the Android team
  • Annyce Davis - #AndroidDev, Conference #Speaker, and #Instructor
  • Chet Haase - Willful misinterpretation. Android. Comedy. That kind of stuff
  • Chris Banes - #Android Developer Relations @Google
  • Chiu-Ki Chan - @monkeywrite & @heartcollage creator, Android developer, public speaker (@techspeakdigest), sketchnoter, language lover, world traveller
  • Cyril Mottier - Mobile Product Devsigner & Android expert. ex-Head of Mobile & Web @captaintrain. #UI #UX #Design
  • Dan Lew - Android @Trello/@Atlassian, gamer and geek. The views expressed in these tweets are yours and your employer's
  • Donn Felker - Best Selling Mobile Dev Book Author. Android GDE. Android Consultant. Co-Host of the @fragmentedcast. Teaching Android at @caster_io. Remote workforce advocate
  • Dave Smith - I write, speak, and build...mostly with Android+Embedded. IoT @ Google. Recovering spark-chaser
  • GenyMotion - The most complete Android emulation platform (desktop, cloud, on-demand) πŸš€ β€’ Trusted by 5M+ developers, testers & enthusiasts πŸ™Œ β€’ Made by @Genymobile in France
  • Huyen Tue Dao - Native Android Code Monkey: monkey code, monkey break, monkey debug, monkey iterate. Randomly typing on @Trello for @Atlassian. GDE. Β½ of Android Dialogs
  • Jake Wharton - Stop stopping
  • Jesse Wilson - Android and jokes. Sometimes also inclusivity & sustainability
  • Joe Birch - Android Engineer @Buffer. Instructor @caster_io & @Pluralsight. Public Speaker, Android Tinkerer
  • Kaushik Gopal - I'm Β½ of the @FragmentedCast and a Google Developer Expert. I build Android apps for @Instacart. I watch atleast 1 movie every week and Jon Stewart is my hero
  • Kristin Marsicano - Android Developer and Instructor @bignerdranch. Co-author of Android Programming: The Big Nerd Ranch Guide. Always learning
  • Lars Vogel - Eclipse platform UI and e4 project lead. Android and Eclipse RCP developer. CEO of vogella GmbH, book author, speaker, trainer and proud Dad and husband
  • Mark Allison - GDE for Android. I write code and https://blog.stylingandroid.com . Then I relax by supporting Watford FC. After that I need to drink good whisky
  • Nick Butcher - Design + Developer Advocate @Google, I help people to design and build lovely Android apps
  • Pierre-Yves Ricau - Android baker @Square
  • Rebecca Franks - Android Engineering Lead at @DVT_Corporate | Google Developer Expert for #Android and #IoT #GDE | Made @bookdash app | I ❀ baking and travelling
  • Reto Meier - Developer Advocate at Google, Android developer, and author of Professional Android Application Development series. Views expressed are mine alone
  • Romain Guy - Android Graphics team manager @Google, Photography
  • Roman Nurik - Designer on @Firebase at @Google Β· Android/Web Developer
  • Ryan Harter - Freelance Android Developer, Google Developer Expert, community leader
  • Tor Norbye - Tor Norbye is the tech lead for Android Studio at Google
  • Ty Smith - Android at @Uber Dev Platform - Google Developer Expert - @specializedtype investor - @sfaug and @droidconsf organizer - ex @twitter @fabric @evernote @zagat
  • Zarah Dominguez - Having a love/hate affair with the little green 'droid at @domaincomau; Google Developer Expert for Android; a walking contradiction

Game Development

If you aspire to develop amazing games for the Android platform, we haven't forgotten about you. Here are some of the best resources which can help you in kickstarting your Android game development career.

Frameworks

  • AndEngine - Free Android 2D OpenGL Game Engine
  • LibGDX - Desktop/Android/BlackBerry/iOS/HTML5 Java game development framework
  • Rajawali - Android OpenGL ES 2.0/3.0 Engine
  • Unity - Start creating a world class games using this framework

Open-Source Games

  • 2048 - A Android Port of the 2048
  • ColorPhun - A Simple Color Game in Android
  • Game of Life - An Android implementation of Conway's Game of Life, focusing on clean design and implementation
  • Memory Game - Simple and beautiful memory game for kids
  • Pixel Dungeon - Traditional rogue-like game with pixel-art graphics and simple interface

❀️ Found this project useful?

If you found this project useful, then please consider giving it a ⭐ on Github and sharing it with your friends via social media.

Project Maintained By

Aritra Roy

Android & Backend Developer. Blogger. Designer. Fitness Enthusiast.

License

Copyright 2017 aritraroy

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.