├── LICENSE ├── README.md ├── others └── Logger.java └── raw ├── top-banner.png └── ultimate-android-reference-logo-small.png /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![UltimateAndroidReference](https://github.com/aritraroy/ultimate-android-reference/blob/master/raw/top-banner.png?raw=true) 2 | 3 | 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. 4 | 5 | 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. 6 | 7 | Happy learning. :+1: 8 | 9 | #### Featured In :star: 10 | [![Android Weekly](https://img.shields.io/badge/Android%20Weekly-%23255-blue.svg)](http://androidweekly.net/issues/issue-255) [![AndroidDev Digest](https://img.shields.io/badge/AndroidDev%20Digest-%23142-blue.svg)](https://www.androiddevdigest.com/digest142/) [![AndroidDev Digest](https://img.shields.io/badge/Mindorks%20Weekly-%231-blue.svg)](https://blog.mindorks.com/hello-android-weekly-update-1-10c57648b544) [![CodePath Android Cliffnotes](https://img.shields.io/badge/CodePath-Android%20Cliffnotes-blue.svg)](https://blog.mindorks.com/hello-android-weekly-update-1-10c57648b544) 11 | 12 | #### Spread Some :heart: 13 | 14 | [![GitHub stars](https://img.shields.io/github/stars/aritraroy/ultimate-android-reference.svg?style=social&label=Star)](https://github.com/aritraroy/ultimate-android-reference) [![GitHub forks](https://img.shields.io/github/forks/aritraroy/ultimate-android-reference.svg?style=social&label=Fork)](https://github.com/aritraroy/ultimate-android-reference/fork) [![GitHub watchers](https://img.shields.io/github/watchers/aritraroy/ultimate-android-reference.svg?style=social&label=Watch)](https://github.com/aritraroy/ultimate-android-reference)[![GitHub followers](https://img.shields.io/github/followers/aritraroy.svg?style=social&label=Follow)](https://github.com/aritraroy) [![Twitter Follow](https://img.shields.io/twitter/follow/aritraroy93.svg?style=social)](https://twitter.com/aritraroy93) 15 | 16 | [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=102)](https://opensource.org/licenses/Apache-2.0) 17 | [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/aritraroy/ultimate-android-reference/blob/master/LICENSE) 18 | 19 | 20 | ## Contribution Guide 21 | 22 | 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.** 23 | 24 | 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. 25 | 26 | 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.** 27 | 28 | 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. 29 | 30 | 31 | ## Categories 32 | 33 | * [Libraries](#libraries) 34 | * [Animations](#animations) 35 | * [Background Processing](#background-processing) 36 | * [Charts](#charts) 37 | * [Crash Reporting & Tracking](#crash-reporting--tracking) 38 | * [Debugging](#debugging) 39 | * [Dependency Injection](#dependency-injection) 40 | * [Image Loading](#image-loading) 41 | * [Image Processing](#image-processing) 42 | * [Logging](#logging) 43 | * [Networking](#networking) 44 | * [Persistence](#persistence) 45 | * [Testing](#testing) 46 | * [UI Components](#ui-components) 47 | * [Utilities](#utilities) 48 | * [Utilities (Advanced)](#utilities-advanced) 49 | * [Open-Source Apps](#open-source-apps) 50 | * [Beginner](#beginner) 51 | * [Intermediate](#intermediate) 52 | * [Expert](#expert) 53 | * [Tools](#tools) 54 | * [Free](#free) 55 | * [Free (+ Pro)](#free--pro) 56 | * [Kotlin for Android](#kotlin-for-android) 57 | * [Android Studio Shortcuts](#android-studio-shortcuts) 58 | * [Android Studio Live Templates](#android-studio-live-templates) 59 | * [Sites](#sites) 60 | * [Books](#books) 61 | * [Sample Projects](#sample-projects) 62 | * [Video Tutorials](#video-tutorials) 63 | * [Twitter Profiles](#twitter-profiles) 64 | * [Game Development](#game-development) 65 | * [Frameworks](#frameworks) 66 | * [Open-Source Games](#open-source-games) 67 | 68 | 69 | ## Libraries 70 | 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. 71 | 72 | ### Animations 73 | 74 | * [AndroidViewAnimations](https://github.com/daimajia/AndroidViewAnimations) - Cute view animation collection 75 | * [Backboard](https://github.com/tumblr/Backboard) - A motion-driven animation framework for Android 76 | * [Bubble-Picker](https://github.com/igalata/Bubble-Picker) - An easy-to-use animation which can be used for content picking for Android 77 | * [ExpectAnim](https://github.com/florent37/ExpectAnim) - Describe your animation and run 78 | * [Grav](https://github.com/glomadrian/Grav) - Configurable animations based on points 79 | * [Lottie](https://github.com/airbnb/lottie-android) - Render After Effects animations natively on Android and iOS 80 | * [Rebound](https://github.com/facebook/rebound) - A Java library that models spring dynamics and adds real world physics to your app 81 | * [Spruce](https://github.com/willowtreeapps/spruce-android) - Spruce Animation Library 82 | * [ViewAnimator](https://github.com/florent37/ViewAnimator) - A fluent Android animation library 83 | 84 | 85 | ### Background Processing 86 | 87 | * [Android Priority Job Queue](https://github.com/yigit/android-priority-jobqueue) - A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability 88 | * [Evernote Android Job](https://github.com/evernote/android-job) - Android library to handle jobs in the background 89 | * [Firebase Job Dispatcher](https://github.com/firebase/firebase-jobdispatcher-android) - The Firebase JobDispatcher is a library for scheduling background jobs in your Android app. It provides a JobScheduler-compatible API that works on all recent versions of Android (API level 9+) that have Google Play services installed 90 | 91 | 92 | ### Charts 93 | 94 | * [EazeGraph](https://github.com/blackfizz/EazeGraph) - An Android chart and graph library 95 | * [HelloCharts](https://github.com/lecho/hellocharts-android) - Charts/graphs library for Android compatible with API 8+, several chart types with support for scaling, scrolling and animations 96 | * [MPAndroidChart](https://github.com/PhilJay/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 97 | * [Spark](https://github.com/robinhood/spark) - A simple Android sparkline chart view 98 | * [WilliamChart](https://github.com/diogobernardino/WilliamChart) - Android library to create charts 99 | 100 | 101 | ### Crash Reporting & Tracking 102 | 103 | * [Bugsee](https://www.bugsee.com) - Flight recorder for your iOS 104 | and Android apps 105 | * [Bugsnag](https://www.bugsnag.com) - Monitor application errors to improve customer experiences and code quality 106 | * [CleverTap](https://clevertap.com) - A complete tool to track and analyze user activity in your Android app 107 | * [Countly](https://count.ly) - End-to-end platform for web, mobile applications and game analytics 108 | * [Fabric Crash Analytics](https://get.fabric.io) - Fabric is a platform that helps your mobile team build better apps, understand your users, and grow your business 109 | * [HockeyApp](https://hockeyapp.net) - Bring Mobile DevOps to your apps with beta distribution, crash reporting, user metrics, feedback, and powerful workflow integrations 110 | * [InstaBug](https://instabug.com) - The top apps in the world rely on Instabug for beta testing, user engagement and crash reporting 111 | * [MixPanel](https://mixpanel.com) - Deeply understand every user's journey with instant insights for everyone on mobile and web 112 | 113 | 114 | ### Debugging 115 | 116 | * [Android Debug Database](https://github.com/amitshekhariitbhu/Android-Debug-Database) - A library for debugging Android databases and shared preferences 117 | * [Android Performance Monitor](https://github.com/markzhai/AndroidPerformanceMonitor) - A transparent ui-block detection library for Android (known as BlockCanary) 118 | * [Chuck](https://github.com/jgilfelt/chuck) - An in-app HTTP inspector for Android OkHttp clients 119 | * [Debug Drawer](https://github.com/palaima/DebugDrawer) - Android Debug Drawer for faster development 120 | * [LeakCanary](https://github.com/square/leakcanary) - A memory leak detection library for Android and Java 121 | * [Stetho](https://github.com/facebook/stetho) - Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more 122 | * [Takt](https://github.com/wasabeef/Takt) - Takt is Android library for measuring the FPS using Choreographer 123 | 124 | 125 | ### Dependency Injection 126 | 127 | * [Butterknife](https://github.com/JakeWharton/butterknife) - Bind Android views and callbacks to fields and methods 128 | * [Dagger](https://github.com/square/Dagger) - A fast dependency injector for Android and Java 129 | * [Dagger 2](https://github.com/google/dagger) - A fast dependency injector for Android and Java 130 | * [Dart](https://github.com/f2prateek/dart) - Extras "injection" library for Android 131 | 132 | ### Image Loading 133 | 134 | * [Android Universal Image Loader](https://github.com/nostra13/Android-Universal-Image-Loader) - Powerful and flexible library for loading, caching and displaying images on Android 135 | * [Fresco](https://github.com/facebook/fresco) - An Android library for managing images and the memory they use 136 | * [Glide](https://github.com/bumptech/glide) - An image loading and caching library for Android focused on smooth scrolling 137 | * [Picasso](https://github.com/square/picasso) - A powerful image downloading and caching library for Android 138 | 139 | 140 | ### Image Processing 141 | 142 | * [Android GPU Image](https://github.com/CyberAgent/android-gpuimage) - Android filters based on OpenGL (idea from GPUImage for iOS) 143 | * [Fresco Processors](https://github.com/wasabeef/fresco-processors) - An Android image processor library providing a variety of image transformations for Fresco 144 | * [Glide Face Detection Transformation](https://github.com/aryarohit07/GlideFaceDetectionTransformation) - An Android image transformation library providing cropping above Face Detection (Face Centering) for Glide 145 | * [Glide Transformations](https://github.com/wasabeef/glide-transformations) - An Android transformation library providing a variety of image transformations for Glide 146 | * [PhotoFiltersSDK](https://github.com/Zomato/AndroidPhotoFilters) - AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media 147 | * [Picasso Face Detection Transformation](https://github.com/aryarohit07/PicassoFaceDetectionTransformation) - An Android image transformation library providing cropping above Face Detection (Face Centering) for Picasso 148 | * [Picasso Transformations](https://github.com/wasabeef/picasso-transformations) - An Android transformation library providing a variety of image transformations for Picasso 149 | * [Pollexor](http://square.github.io/pollexor/) - An Android library, that can download unencrypted and encrypted images, crop, resize, apply filters and convert to another format. 150 | 151 | 152 | ### Logging 153 | * [Hugo](https://github.com/JakeWharton/hugo) - Annotation-triggered method call logging for your debug builds 154 | * [Logger](https://github.com/orhanobut/logger) - Simple, pretty and powerful logger for Android 155 | * [LoggingInterceptor](https://github.com/ihsanbal/LoggingInterceptor) - An OkHttp interceptor which pretty logs request and response data 156 | * [Timber](https://github.com/JakeWharton/timber) - A logger with a small, extensible API which provides utility on top of Android's normal Log class 157 | 158 | 159 | ### Networking 160 | 161 | * [Bridge](https://github.com/afollestad/bridge) - A simple but powerful HTTP networking library for Java. It features a Fluent chainable API, powered by Java URLConnection classes for maximum compatibility and speed 162 | * [Fast Android Networking](https://github.com/amitshekhariitbhu/Fast-Android-Networking) - A Complete Fast Android Networking Library that also supports HTTP/2 163 | * [Ion](https://github.com/koush/ion) - Android Asynchronous Networking and Image Loading 164 | * [OkHttp](https://github.com/square/okhttp) - An HTTP+HTTP/2 client for Android and Java applications 165 | * [Retrofit](https://square.github.io/retrofit) - Retrofit turns your REST API into a Java interface 166 | * [Volley](https://github.com/google/volley) - Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster 167 | 168 | ### Persistence 169 | 170 | * [ActiveAndroid](https://github.com/pardom/ActiveAndroid) - Active record style SQLite persistence for Android 171 | * [DBFLow](https://github.com/Raizlabs/DBFlow) - A blazing fast, powerful, and very simple ORM Android database library that writes database code for you 172 | * [Firebase Realtime Database](https://firebase.google.com/docs/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 173 | * [greenDAO](https://github.com/greenrobot/greenDAO) - greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases 174 | * [Paper](https://github.com/pilgr/Paper) - Fast and simple data storage library for Android 175 | * [Realm](https://github.com/realm/realm-java) - Realm is a mobile database: a replacement for SQLite & ORMs 176 | * [RxCache](https://github.com/VictorAlbertos/RxCache) - Reactive caching library for Android and Java 177 | * [StorIO](https://github.com/pushtorefresh/storio) - Beautiful API for SQLiteDatabase and ContentResolver 178 | * [SQL Brite](https://github.com/square/sqlbrite) - A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operations 179 | 180 | ### Testing 181 | 182 | * [AssertJ](https://github.com/joel-costigliola/assertj-core) - AssertJ is a library providing easy to use rich typed assertions 183 | * [AssertJ Android](https://github.com/square/assertj-android) - A set of AssertJ helpers geared toward testing Android 184 | * [Calabash](https://github.com/calabash/calabash-android) - Automated Functional testing for Android based on cucumber 185 | * [Espresso](https://google.github.io/android-testing-support-library/docs/espresso/index.html) - Write easy, simple and human-readable UI tests on Android 186 | * [Hamcrest](https://github.com/hamcrest/JavaHamcrest) - Java (and original) version of Hamcrest 187 | * [JaCoCo](https://github.com/jacoco/jacoco) - JaCoCo - Java Code Coverage Library 188 | * [JUnit4](https://github.com/junit-team/junit4) - A programmer-oriented testing framework for Java 189 | * [Mockito](https://github.com/mockito/mockito) - Most popular Mocking framework for unit tests written in Java 190 | * [Robolectric](https://github.com/robolectric/robolectric) - Android Unit Testing Framework 191 | * [Robotium](https://github.com/RobotiumTech/robotium) - Android UI Testing 192 | * [Selendroid](https://github.com/selendroid/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 193 | * [Truth](https://github.com/google/truth) - Assertion/Proposition framework for Java unit tests 194 | 195 | ### UI Components 196 | 197 | * [AdaptiveTableLayout](https://github.com/Cleveroad/AdaptiveTableLayout) - Library that makes it possible to read, edit and write CSV files 198 | * [Android SpinKit](https://github.com/ybq/Android-SpinKit) - Android loading animations 199 | * [BlurKit Android](https://github.com/gogopop/BlurKit-Android) - The missing Android blurring library. Fast blur-behind layout that parallels iOS 200 | * [BottomBar](https://github.com/roughike/BottomBar) - A custom view component that mimics the new Material Design Bottom Navigation pattern 201 | * [BottomSheet](https://github.com/Flipboard/bottomsheet) - Android component which presents a dismissible view from the bottom of the screen 202 | * [Cafebar](https://github.com/danimahardhika/cafebar) - An upgraded Snackbar for Android that provides more options and easy to use 203 | * [CircleImageView](https://github.com/hdodenhof/CircleImageView) - A circular ImageView for Android 204 | * [DiagonalLayout](https://github.com/florent37/DiagonalLayout) - With Diagonal Layout explore new styles and approaches on material design 205 | * [DialogPlus](https://github.com/orhanobut/dialogplus) - Advanced dialog solution for Android 206 | * [Epoxy](https://github.com/airbnb/epoxy) - Epoxy is an Android library for building complex screens in a RecyclerView 207 | * [ExoPlayer](https://github.com/google/ExoPlayer) - An extensible media player for Android 208 | * [FirebaseUI for Android](https://github.com/firebase/FirebaseUI-Android) - UI Bindings for Firebase 209 | * [JazzyViewPager](https://github.com/jfeinstein10/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 210 | * [Litho](https://github.com/facebook/litho) - A declarative framework for building efficient UIs on Android 211 | * [Material Dialogs](https://github.com/afollestad/material-dialogs) - A beautiful, fluid, and customizable dialogs API 212 | * [Material Drawer](https://github.com/mikepenz/MaterialDrawer) - The flexible, easy to use, all in one drawer library for your Android project 213 | * [Material Search View](https://github.com/MiguelCatalan/MaterialSearchView) - Cute library to implement SearchView in a Material Design Approach 214 | * [Matisse](https://github.com/zhihu/Matisse) - A well-designed local image and video selector for Android 215 | * [PhotoView](https://github.com/chrisbanes/PhotoView) - Implementation of ImageView for Android that supports zooming, by various touch gestures 216 | * [Subsampling Scale ImageView](https://github.com/davemorrissey/subsampling-scale-image-view) - 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 217 | * [TapTargetView](https://github.com/KeepSafe/TapTargetView) - An implementation of tap targets from the Material Design guidelines for feature discovery 218 | * [Toasty](https://github.com/GrenderG/Toasty) - The usual Toast, but with steroids 219 | * [VLayout](https://github.com/alibaba/vlayout) - Project vlayout is a powerful LayoutManager extension for RecyclerView, it provides a group of layouts for RecyclerView 220 | 221 | 222 | ### Utilities 223 | 224 | * [Aesthetic](https://github.com/afollestad/aesthetic) - A fast and easy to use plug-and-play dynamic theme engine. Powered by Rx, for Android apps 225 | * [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) - :fire: Android developers should collect the following utils(updating) 226 | * [Android Annotations](https://github.com/androidannotations/androidannotations) - Fast Android Development. Easy maintainance 227 | * [Android Crop](https://github.com/jdamcd/android-crop) - Android library project for cropping images 228 | * [Android In-App Billing V3](https://github.com/anjlab/android-inapp-billing-v3) - A lightweight implementation of Android In-app Billing Version 3 229 | * [Android Saripaar](https://github.com/ragunathjawahar/android-saripaar) - UI form validation library for Android 230 | * [Android Weak Handler](https://github.com/badoo/android-weak-handler) - Memory safer implementation of android.os.Handler 231 | * [Ason](https://github.com/afollestad/ason) - JSON in Java made easy! Catch less exceptions, serialize/deserialize with ease, plus some other useful tricks and conveniences 232 | * [ByteBuddy](http://bytebuddy.net) - Byte Buddy is a code generation and manipulation library for creating and modifying Java classes during the runtime of a Java application 233 | * [Calligraphy](https://github.com/chrisjenx/Calligraphy) - Custom fonts in Android the easy way 234 | * [DeepLinkDispatch](https://github.com/airbnb/DeepLinkDispatch) - A simple, annotation-based library for making deep link handling better on Android 235 | * [EasyDeviceInfo](https://github.com/nisrulz/easydeviceinfo) - Get device information in a super easy way 236 | * [Easy Permissions](https://github.com/googlesamples/easypermissions) - Simplify Android M system permissions 237 | * [Gson](https://github.com/google/gson) - A Java serialization/deserialization library to convert Java Objects into JSON and back 238 | * [Guava](https://github.com/google/guava) - Google Core Libraries for Java 239 | * [IcePick](https://github.com/frankiesardo/icepick) - Android Instance State made easy 240 | * [LibPhoneNumber](https://github.com/googlei18n/libphonenumber) - Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers 241 | * [Moshi](https://github.com/square/moshi) - A modern JSON library for Android and Java. 242 | * [Parceler](https://github.com/johncarl81/parceler) - Android Parcelables made easy through code generation 243 | * [PermissionsDispatcher](https://github.com/hotchemi/PermissionsDispatcher) - Simple annotation-based API to handle runtime permissions 244 | * [Reprint](https://github.com/ajalt/reprint) - A unified fingerprint library for Android 245 | * [Secure Preferences](https://github.com/scottyab/secure-preferences) - Android Shared preference wrapper than encrypts the values of Shared Preferences 246 | * [Sensey](https://github.com/nisrulz/sensey) - Detecting gestures in a snap 247 | * [uCrop](https://github.com/Yalantis/uCrop) - Image Cropping Library for Android 248 | 249 | ### Utilities (Advanced) 250 | 251 | * [EventBus](https://github.com/greenrobot/EventBus) - Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality 252 | * [Lightweight Stream API](https://github.com/aNNiMON/Lightweight-Stream-API) - Stream API from Java 8 rewritten on iterators for Java 7 and below 253 | * [Optional](https://github.com/MrHadiSatrio/Optional) - Java 8 Optional-like APIs for everyone 254 | * [RetroLambda](https://github.com/evant/gradle-retrolambda) - A Gradle plugin for getting Java lambda support in Java 6, 7 and android 255 | * [RxAndroid](https://github.com/ReactiveX/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. 256 | * [RxBinding](https://github.com/JakeWharton/RxBinding) - RxJava binding APIs for Android's UI widgets 257 | * [RxJava](https://github.com/ReactiveX/RxJava) - RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM 258 | 259 | 260 | ## Open-Source Apps 261 | 262 | 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. 263 | 264 | ### Beginner 265 | 266 | * [KISS](https://github.com/Neamar/KISS) - Lightning fast, open-source, < 200kb Android launcher 267 | * [Materialize](https://github.com/oxoooo/materialize) - Materialize all those not material 268 | * [MinimalTodo](https://github.com/avjinder/Minimal-Todo) - Material To-Do App 269 | * [PhotoAffix](https://github.com/afollestad/photo-affix) - 270 | Stitch your photos together vertically or horizontally easily! 271 | * [Simple Gallery](https://github.com/SimpleMobileTools/Simple-Gallery) - A gallery for viewing photos and videos without ads 272 | * [SoundRecorder](https://github.com/dkim0419/SoundRecorder) - A simple sound recording app implementing Material Design 273 | 274 | 275 | ### Intermediate 276 | 277 | * [ClipStack](https://github.com/heruoxin/Clip-Stack) - A tiny clipboard history manager app 278 | * [EverMemo](https://github.com/daimajia/EverMemo) - Fast Record,Organize,and Share. The Android memo app you will deeply love 279 | * [FastHub](https://github.com/k0shk0sh/FastHub) - GitHub client for Android 280 | * [Google I/O App](https://github.com/google/iosched) - The Google I/O 2016 Android App 281 | * [InstaMaterial](https://github.com/frogermcs/InstaMaterial) - Implementation of Instagram with Material Design (originally based on Emmanuel Pacamalan's concept) 282 | * [LeafPic](https://github.com/HoraApps/LeafPic) - LeafPic is an ad-free, open-source and material-designed Android gallery alternative 283 | * [MLManager](https://github.com/javiersantos/MLManager) - A modern, easy and customizable app manager for Android with Material Design 284 | * [MovieGuide](https://github.com/esoxjem/MovieGuide) - Movie discovery app showcasing MVP, RxJava, Dagger 2 and Clean Architecture. Popcorn? 285 | * [Narrate](https://github.com/timothymiko/narrate-android) -Narrate is a beautiful and functional open source journal for Android 286 | * [Plaid](https://github.com/nickbutcher/plaid) - An Android app which provides design news & inspiration as well as being an example of implementing material design 287 | * [Robot Scouter](https://github.com/SUPERCILEX/Robot-Scouter/) - 🤖 A scouting app for FIRST Robotics Competition teams 288 | * [ToolWizAppLock](https://github.com/Toolwiz/ToolWizAppLock) - Smart App Lock for Android 289 | * [Turbo Editor](https://github.com/vmihalachi/turbo-editor) - Simple and powerful File Editor for Android 290 | * [WeGit](https://github.com/Leaking/WeGit) - An Android App for Github 291 | 292 | 293 | ### Expert 294 | 295 | * [AmazeFileManager](https://github.com/arpitkh96/AmazeFileManager) - Amaze File Manager source code 296 | * [AntennaPod](https://github.com/AntennaPod/AntennaPod) - A podcast manager for Android 297 | * [CoCoin](https://github.com/Nightonke/CoCoin) - CoCoin, Multi-view Accounting Application 298 | * [Conversations](https://github.com/siacs/Conversations) - A federated Instant Messaging app for Android (XMPP/Jabber) 299 | * [Kickstarter](https://github.com/kickstarter/android-oss) - Kickstarter for Android. Bring new ideas to life, anywhere 300 | * [LibreTorrent](https://github.com/proninyaroslav/libretorrent) - Free as in Freedom torrent client for Android 301 | * [MusicDNA](https://github.com/harjot-oberai/MusicDNA) - A Music Player for Android that renders beautiful DNA(Visualization) of the currently playing music 302 | * [Muzei Wallpaper](https://github.com/romannurik/muzei) - Muzei Live Wallpaper for Android 303 | * [OmniNotes](https://github.com/federicoiosue/Omni-Notes) - Open source note-taking application for Android 304 | * [QkSms](https://github.com/moezbhatti/qksms) - The most beautiful SMS messenger app for Android 305 | * [RedReader](https://github.com/QuantumBadger/RedReader) - An unofficial open source Reddit client for Android 306 | * [Signal](https://github.com/WhisperSystems/Signal-Android) - A private messenger for Android 307 | * [SuperCleanMaster](https://github.com/joyoyao/superCleanMaster) - CleanMaster like open-source app 308 | * [Talon for Twitter](https://github.com/klinker24/Talon-for-Twitter) - 100% open source version of my popular Talon for Twitter app on Android 309 | * [Telegram](https://github.com/DrKLO/Telegram) - Telegram for Android source 310 | * [Timber](https://github.com/naman14/Timber) - Material Design Music Player 311 | 312 | 313 | ## Tools 314 | 315 | "*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. 316 | 317 | ### Free 318 | 319 | * [ADB IDEA](https://github.com/pbreault/adb-idea) - A plugin for Android Studio and Intellij IDEA that speeds up your day to day Android development 320 | * [Android Asset Studio](https://romannurik.github.io/AndroidAssetStudio) - A collection of tools to easily generate assets such as launcher icons for your Android app 321 | * [Android Tool for Mac](https://github.com/mortenjust/androidtool-mac) - One-click screenshots, video recordings, app installation for iOS and Android 322 | * [Android Wifi ADB](https://github.com/pedrovgs/AndroidWiFiADB) - 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 323 | * [APK DeGuard](http://apk-deguard.com) - DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries 324 | * [Battery Historian](https://github.com/google/battery-historian) - Battery Historian is a tool to analyze battery consumers using Android "bugreport" files 325 | * [Buck](https://github.com/facebook/buck) - A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages 326 | * [Butterknife Zelezny](https://github.com/avast/android-butterknife-zelezny) - Android Studio plug-in for generating ButterKnife injections from selected layout XML 327 | * [CheckStyle IDEA](https://plugins.jetbrains.com/plugin/1065-checkstyle-idea) - This plugin provides both real-time and on-demand scanning of Java files with CheckStyle from within IDEA 328 | * [ClassyShark](https://github.com/google/android-classyshark) - Android executables browser 329 | * [CodeGlance](https://plugins.jetbrains.com/plugin/7275-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 330 | * [Codota](https://www.codota.com/ide-plugin) - 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 331 | * [Dagger IntelliJ Plugin](https://github.com/square/dagger-intellij-plugin) - An IntelliJ IDEA plugin for Dagger which provides insight into how injections and providers are used 332 | * [DevKnox](https://devknox.io) - Autocorrect Security Issues As You Write Code 333 | * [Dex Count Gradle Plugin](https://github.com/KeepSafe/dexcount-gradle-plugin) - A Gradle plugin to report the number of method references in your APK on every build 334 | * [Dex Method Counts](https://github.com/mihaip/dex-method-counts) - Command-line tool to count per-package methods in Android .dex files 335 | * [DTO Generator](https://plugins.jetbrains.com/plugin/7834-dto-generator) - Data Transfer Object(DTO) generator that generates Java classes from the given feed 336 | * [DPI Love](http://dpi.lv) - Get accurate DPI information on a wide range of Android devices 337 | * [Drawable Optimizer](https://github.com/fabiomsr/drawable-optimizer) - Gradle plugin to optimize png files and reduce resultant apk size within an Android project 338 | * [Dry Run](https://github.com/cesarferreira/dryrun) - Try any Android library hosted online directly from the command line 339 | * [FindBugs](http://findbugs.sourceforge.net) - Powerful static code analysis tool for Java and Android 340 | * [FlatIcon](http://www.flaticon.com) - The largest database of free icons available in PNG, SVG, EPS, PSD and BASE 64 formats 341 | * [Gradle Please](http://gradleplease.appspot.com) - Quick and easy way to build Gradle based libraries in Android 342 | * [Infer](https://github.com/facebook/infer) - A static analyzer for Java, C, C++, and Objective-C 343 | * [JSONBlob](https://jsonblob.com) - JSON Blob is a web-based tool to create, edit, view, format, and share JSON 344 | * [JSONSchema2POJO](http://www.jsonschema2pojo.org) - Easy and quick way to convert your JSON to Java objects 345 | * [KeyPromoter](https://plugins.jetbrains.com/plugin/4455-key-promoter) - Shows to user how easy he can make same action using only keyboard(menus and toolbar button mouse clicks initiates shortcut display) 346 | * [Material Design Icon Generator](https://github.com/konifar/android-material-design-icon-generator-plugin) - This plugin help you to set material design icon to your project 347 | * [Material Palette](https://www.materialpalette.com) - Generate Material Design color palettes quickly and easily 348 | * [Methods Count](http://www.methodscount.com) - Your solution for a perfectly fit APK 349 | * [Mocky.IO](http://www.mocky.io) - Mock your HTTP responses to test your REST API 350 | * [Pidcat](https://github.com/JakeWharton/pidcat) - Colored logcat script which only shows log entries for a specific application package 351 | * [RESTMock](https://github.com/andrzejchm/RESTMock) - HTTP Server for Android Instrumentation tests 352 | * [Scalpel](https://github.com/JakeWharton/scalpel) - A surgical debugging tool to uncover the layers under your app 353 | * [Shape Shifter](https://shapeshifter.design) - Useful tool for creating simple path morphing AnimatedVectorDrawables 354 | * [Slides Code Highlighter](https://romannurik.github.io/SlidesCodeHighlighter) - A nifty tool to turn your boring pieces of code into beautifully highlighted code snippets 355 | * [SonarLint](https://plugins.jetbrains.com/plugin/7973-sonarlint) - SonarLint is an IntelliJ IDEA plugin that provides on-the-fly feedback to developers on new bugs and quality issues injected into Java 356 | * [SourceTree](https://www.sourcetreeapp.com) - Harness the power of Git and Hg in a beautifully simple application 357 | * [String Manipulation](https://plugins.jetbrains.com/plugin/2162-string-manipulation) - Provides actions for text manipulation such as toggle, capitalize, encode/decode, etc 358 | * [SVG2VectorDrawable Plugin](https://plugins.jetbrains.com/plugin/8103-svg2vectordrawable) - Tools for convert SVG file to Android VectorDrawable 359 | * [WireMock](https://github.com/tomakehurst/wiremock) - A tool for mocking HTTP services 360 | 361 | ### Free (+ Pro) 362 | 363 | * [Crowdin](https://crowdin.com) - Translate and manage the process better, faster, and smarter 364 | * [GenyMotion](https://www.genymotion.com) - A unique platform to bring your Android app to perfection! 365 | * [GitKraken](https://www.gitkraken.com) - The most popular Git GUI for Windows, Mac AND Linux 366 | * [IDE Scout](https://www.idescout.com) - SQLScout is a plugin for Android Studio and IntelliJ IDEA that provides powerful, dedicated support for managing and debugging SQLite databases 367 | * [JRebel for Android](https://zeroturnaround.com/software/jrebel-for-android) - Instantly update code and resources 368 | JRebel for Android is an IDE plug-in that accelerates the development of Android applications 369 | * [NimbleDroid](https://nimbledroid.com) - Auto-test Your Android Apps for Critical Issues. No Coding Required 370 | * [Markdown Navigator 2.0](https://github.com/vsch/idea-multimarkdown) - Markdown language support for IntelliJ IDEA. 371 | * [The Noun Project](https://thenounproject.com) - Icons for Everything 372 | * [Trialy.IO](https://www.trialy.io) - Increase your IAP conversions by letting your users try premium features for a limited time 373 | * [Vysor](https://www.vysor.io) - Vysor puts your Android on your desktop 374 | * [Zeplin](https://zeplin.io) - Design hand-off has never been easier. Generate styleguides and resources, automatically 375 | 376 | 377 | ## Kotlin for Android 378 | 379 | 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. 380 | 381 | * [Anko](https://github.com/Kotlin/anko) - Pleasant Android application development 382 | * [Anvil](https://github.com/zserge/anvil) - Minimal UI library for Android inspired by React 383 | * [AsyncAwait](https://github.com/metalabdesign/AsyncAwait) - async/await for Android built upon coroutines introduced in Kotlin 1.1 384 | * [Exposed](https://github.com/JetBrains/Exposed) - Kotlin SQL Framework 385 | * [Klutter](https://github.com/kohesive/klutter) - A mix of random small libraries for Kotlin, the smallest reside here until big enough for their own repository 386 | * [Kodein](https://github.com/SalomonBrys/Kodein) - Painless Kotlin Dependency Injection 387 | * [Koi](https://github.com/mcxiaoke/kotlin-koi) - Koi, a lightweight Kotlin library for Android Development 388 | * [PreferenceHolder](https://github.com/MarcinMoskala/PreferenceHolder) - SharedPreference usage made easy using Kotlin 389 | * [RxKotlin](https://github.com/ReactiveX/RxKotlin) - RxJava bindings for Kotlin 390 | 391 | 392 | ## Android Studio Shortcuts 393 | 394 | 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. 395 | 396 | *(Currently, only Mac shortcuts are available. Windows and Linux shortcuts coming soon.)* 397 | 398 | ### Must-Know Shortcuts: 399 | 400 | Never-ever-ever forget these shortcuts. 401 | 402 | | Description | Shortcut | 403 | |:----------------------------------------------------------------------------------------|:--------------------:| 404 | | Find everything (like files, classes, symbols, etc.) | Shift + Shift | 405 | | Show a list of automatic fixes and IDE suggestions at the cursor | Option + Enter | 406 | | Rename all copies of the variable/method/class at the cursor | Shift + F6 | 407 | | List all usages of the variable/method/class at the cursor | Command + Option + F7 | 408 | | Generate code (like getters, setters, constructors, method overrides) | Command + N | 409 | | Search for any action in Android Studio | Command + Shift + A | 410 | | Find text occurencesin the current file (Enter = cycle through results, Esc. = cancel) | Command + F | 411 | | Show the list of recently used files in the IDE | Command + E | 412 | | Run the app or test | Control + R | 413 | 414 | 415 | ### Frequently Used Shortcuts: 416 | 417 | You will surely need these quite often. 418 | 419 | | Description | Shortcut | 420 | |:----------------------------------------------------------------------------------------|:---------------------:| 421 | | Search for and open any file by name | Command + Shift + O | 422 | | Move a piece of code in upward/downward direction | Command + Shift + Up/Down | 423 | | View javadoc of symbol at cursor in pop-up | F1 | 424 | | View definition of method at cursor in pop-up | Command + Y | 425 | | Search for and list any occurrences of text | Command + Shift + F | 426 | | Comment/Uncomment all selected lines (also works in xml files) | Command + / | 427 | | Show available parameters for current method (must be inside parentheses) | Command + P | 428 | | Format code to match Android Studio's default style | Command + Option + L | 429 | | Delete a complete line at one go | Command + Delete | 430 | | Navigate through classes and methods | Command + Left Click | 431 | 432 | 433 | ### Useful Shortcuts: 434 | 435 | These can help you level up your development workflow. 436 | 437 | | Description | Shortcut | 438 | |:--------------------------------------------------------------------------------|:-------------------------------:| 439 | | Go to next highlighted error in current file | F2 | 440 | | Go to the declaration of the variable/method/class at cursor | Command + B | 441 | | Go to given line number in current file | Command + L | 442 | | Duplicate current line | Command + D | 443 | | Search for and go to any symbol (incl. variables and methods) | Command + Option + O | 444 | | Show class structure in pop-up | Command + F12 | 445 | | List recently edited files in pop-up | Command + Shift + E | 446 | | View full refactor menu | Control + T | 447 | | Collapse/expand all code blocks | Command + Shift + +/- | 448 | | Collapse/expand individual code block | Command + +/- | 449 | | Insert new line below current cursor position | Shift + Enter | 450 | | Complete statement (add braces, parentheses, semi-colon) | Command + Shift + Enter | 451 | 452 | 453 | ## Android Studio Live Templates 454 | 455 | 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. 456 | 457 | * `Toast` - Creates a new `Toast.makeText(context, "", Toast.LENGTH_SHORT).show();` toast 458 | * `newInstance` - Generates the static `newInstance` factory method in a Fragment with arguments 459 | * `noInstance` - Generates a private empty constructor to prevent instance creation 460 | * `ViewConstructors` - Generates the view constructors 461 | * `Parcelable` - Generates the boilerplate code for Pacelable implementation 462 | * `fbc` - Generates the `findViewById` code with the appropriate cast 463 | * `const` - Generates a constant according to Android's coding conventions 464 | * `logd` - Generates `Log.d(TAG, "");` log. Check the other variants as well 465 | * `logm` - Generates a log with the current method name and its arguments 466 | * `logr` - Generates a log result of the current method 467 | * `psf` - Generates the boilerplate `public static final`. Also check `psfi` and `psfs` 468 | * `key` - Generates the key constant for a Bundle 469 | * `sout` - Prints a string to `System.out`. Also check `soutm` and `soutp` 470 | * `visible` - Sets a view's visibility to VISIBLE 471 | * `gone` - Sets view's visibility to GONE 472 | * `todo` - Adds a TODO comment. Also check `stopship` 473 | 474 | Can't get enough of Live Templates? [Here](https://github.com/keyboardsurfer/idea-live-templates) is a huge repository of lots of custom Live Templates for you to get your hands on. 475 | 476 | ## Sites 477 | 478 | 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. 479 | 480 | * [Android Arsenal](https://android-arsenal.com) - Android developer portal with tools, libraries, and apps 481 | * [Andorid Design Patterns](http://www.androiddesignpatterns.com) - Android Design Patterns is a website for developers who wish to better understand the Android application framework 482 | * [AndroidDevDigest](https://www.androiddevdigest.com) - A Handcrafted Weekly #AndroidDev Newsletter 483 | * [Android Developers Backstage](http://androidbackstage.blogspot.ch/) - Podcast made by Google, featuring Chet Haase and Tor Norbye 484 | * [Android Developers Official](https://developer.android.com/training/index.html) - The official Android development page provided by Google containing all the documentations and trainings 485 | * [Android Hive](http://www.androidhive.info) - Androidhive is independent online publication that covers Android programming tutorials, app reviews and more 486 | * [Android Niceties](http://androidniceties.tumblr.com) - A collection of screenshots encompassing some of the most beautiful looking Android apps 487 | * [Android Weekly](http://androidweekly.net) - Android Weekly is a free newsletter that helps you to stay cutting-edge with your Android Development 488 | * [Caster.IO](https://caster.io) - Skyrocket your Android career with bite sized Android development video training 489 | * [Codepath Android Cliffnotes](https://guides.codepath.com/android) - 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 490 | * [Dan Lew Codes](http://blog.danlew.net) - Thoughts on life, the universe and the mystery of it all; but actually mostly just code 491 | * [Fragmented Podcast](http://fragmentedpodcast.com) - An Android Developer Podcast 492 | * [Grokking Android](https://www.grokkingandroid.com) - Getting Down to the Nitty Gritty of Android Development 493 | * [Material Up](https://material.uplabs.com) - Get fresh Material Design inspiration daily 494 | * [Medium's Google Developers Blog](https://medium.com/google-developers) - 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 495 | * [Mindork's Blog](https://blog.mindorks.com) - A regularly updated blog talking about various aspects of Android development in detail 496 | * [Reddit's AndroidDev](https://www.reddit.com/r/androiddev) - News for Android developers with the who, what, where when and how of the Android community. Probably mostly the how 497 | * [Styling Android](https://blog.stylingandroid.com) - Learn perfecting your Android UI and UX development skills 498 | * [Vogella](http://www.vogella.com/tutorials/android.html) - Learn almost everything about Android development in an easy way 499 | 500 | ## Books 501 | 502 | *"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. 503 | 504 | 505 | * [Android Programming: The Big Nerd Ranch Guide](https://www.bignerdranch.com/books/android-programming) - by Bill Phillips, Chris Stewart, and Kristin Marsicano 506 | * [Asynchronous Android](https://www.amazon.in/Asynchronous-Android-Steve-Liles/dp/1783286873) - by Steve Liles 507 | * [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) - by Robert C. Martin 508 | * [Effective Java](https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683) - by Joshua Bloch 509 | * [Head First Design Patterns](https://www.amazon.com/First-Design-Patterns-Elisabeth-Freeman/dp/0596007124) - by Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson 510 | * [Java: The Complete Reference](https://www.amazon.com/Java-Complete-Reference-Herbert-Schildt/dp/9339212096) - by Herbert Schildt 511 | * [The Busy Coder's Guide to Advanced Android Development](https://commonsware.com/Android) - by Mark Murphy 512 | * [Working Effectively with Legacy Code](https://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052) - by Michael Feathers 513 | 514 | ## Sample Projects 515 | 516 | 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. 517 | 518 | * [Android Architecture](https://github.com/googlesamples/android-architecture) - A collection of samples to discuss and showcase different architectural tools and patterns for Android apps 519 | * [Android Boilerplate](https://github.com/ribot/android-boilerplate) - Android boilerplate app that showcases architecture and libraries used at ribot 520 | * [Android Cookbook Examples](https://github.com/IanDarwin/Android-Cookbook-Examples) - Collected code examples from the O'Reilly Android Cookbook 521 | * [Android Instant Apps](https://github.com/googlesamples/android-instant-apps) - Samples for Android Instant Apps 522 | * [Android MVP Architecture](https://github.com/MindorksOpenSource/android-mvp-architecture) - This repository contains a detailed sample app that implements MVP architecture using Dagger2, GreenDao, RxJava2, FastAndroidNetworking and PlaceholderView 523 | * [Android Testing](https://github.com/googlesamples/android-testing) - A collection of samples demonstrating different frameworks and techniques for automated testing 524 | * [Android Testing Guide](https://github.com/ravidsrk/android-testing-guide) - Complete reference for Android Testing with examples 525 | * [Android Things Driver Samples](https://github.com/androidthings/drivers-samples) - Samples for Android Things peripheral drivers 526 | * [CW Omnibus](https://github.com/commonsguy/cw-omnibus) - Source code to omnibus edition of _The Busy Coder's Guide to Android Development_ 527 | * [Effective Android UI](https://github.com/pedrovgs/EffectiveAndroidUI) - Sample project created to show some of the best Android practices to work in the Android UI Layer 528 | * [Espresso Samples](https://github.com/chiuki/espresso-samples) - A collection of samples demonstrating different Espresso techniques 529 | * [Firebase Quickstart Android](https://github.com/firebase/quickstart-android) - Firebase Quickstart Samples for Android 530 | * [Firebucket](https://github.com/remychantenay/Firebucket) - Glimpse into Firebase, with a simple TODO list app built around Dagger, RxJava 2, Clean architecture and of course, Firebase 531 | * [Java Design Patterns](https://github.com/iluwatar/java-design-patterns) - Design patterns implemented in Java 532 | * [Just Another Android App](https://github.com/athkalia/Just-Another-Android-App) - An Android base app with loads of cool libraries/configuration 533 | * [Material Animations](https://github.com/lgvalle/Material-Animations) - Android Transition animations explanation with examples 534 | * [Quality Matters](https://github.com/artem-zinnatullin/qualitymatters) - Android Development Culture 535 | * [RxJava Android Samples](https://github.com/kaushikgopal/RxJava-Android-Samples) - Learning RxJava for Android by example 536 | * [RxJava 2 Android Samples](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples) - RxJava 2 Android Examples - Migration From RxJava 1 to RxJava 2 - How to use RxJava 2 in Android 537 | * [u2020](https://github.com/JakeWharton/u2020) - A sample Android app which showcases advanced usage of Dagger among other open source libraries 538 | * [VB Android App Quality](https://github.com/vincentbrison/vb-android-app-quality) - Sample android project using Gradle, with basic quality tools set up 539 | 540 | 541 | ## Video Tutorials 542 | 543 | 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. 544 | 545 | * [Advanced Android App Development (Udacity)](https://www.udacity.com/course/advanced-android-app-development--ud855) - This course will guide you through the process of productionizing an app, using Sunshine, the weather app we built in Developing Android Apps 546 | * [Android Developers (YouTube)](https://www.youtube.com/user/androiddevelopers) - Google's official Android development channel on Youtube for all the tutorials, demos, events, etc 547 | * [Beginner Java Tutorials (YouTube)](https://www.youtube.com/watch?v=Hl-zzrqQoSE&list=PLFE2CE09D83EE3E28) - An excellent Java video tutorial series for beginners by *thenewboston* on YouTube. 548 | * [Design Patterns Tutorials (YouTube)](https://www.youtube.com/watch?v=vNHpsC5ng_E&list=PLF206E906175C7E07) - Learn about all the Java design patterns in details from these quick and easy video tutorials by Derek Banas 549 | * [Developing Android Apps (Udacity)](https://www.udacity.com/course/new-android-fundamentals--ud851) - As the first course in the Android Developer Nanodegree, Developing Android Apps is the foundation of our advanced Android curriculum. This course blends theory and practice to help you build great apps the right way 550 | * [Firebase in a Weekend: Android (YouTube)](https://www.udacity.com/course/firebase-in-a-weekend-by-google-android--ud0352) - In this course, you’ll learn how to use Firebase. Firebase is app development platform that provides developers a variety of tools and a scalable infrastructure to build high quality apps 551 | * [Firebase for Android (YouTube)](https://www.youtube.com/user/Firebase) - Learn everything about Firebase and boost your Android development skills 552 | * [Slidenerd Tutorials (YouTube)](https://www.youtube.com/user/slidenerd) - One of the best channels covering a lot of tutorials on various aspects of Android 553 | 554 | ## Twitter Profiles 555 | 556 | 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. 557 | 558 | * [Android Developers](https://twitter.com/AndroidDev) - News and announcements for developers from the Android team 559 | * [Annyce Davis](https://twitter.com/brwngrldev) - #AndroidDev, Conference #Speaker, and #Instructor 560 | * [Chet Haase](https://twitter.com/chethaase) - Willful misinterpretation. Android. Comedy. That kind of stuff 561 | * [Chris Banes](https://twitter.com/chrisbanes) - #Android Developer Relations @Google 562 | * [Chiu-Ki Chan](https://twitter.com/chiuki) - @monkeywrite & @heartcollage creator, Android developer, public speaker (@techspeakdigest), sketchnoter, language lover, world traveller 563 | * [Cyril Mottier](https://twitter.com/cyrilmottier) - Mobile Product Devsigner & Android expert. ex-Head of Mobile & Web @captaintrain. #UI #UX #Design 564 | * [Dan Lew](https://twitter.com/danlew42) - Android @Trello/@Atlassian, gamer and geek. The views expressed in these tweets are yours and your employer's 565 | * [Donn Felker](https://twitter.com/donnfelker) - Best Selling Mobile Dev Book Author. Android GDE. Android Consultant. Co-Host of the @fragmentedcast. Teaching Android at @caster_io. Remote workforce advocate 566 | * [Dave Smith](https://twitter.com/devunwired) - I write, speak, and build...mostly with Android+Embedded. IoT @ Google. Recovering spark-chaser 567 | * [GenyMotion](https://twitter.com/Genymotion) - The most complete Android emulation platform (desktop, cloud, on-demand) 🚀 • Trusted by 5M+ developers, testers & enthusiasts 🙌 • Made by @Genymobile in France 568 | * [Huyen Tue Dao](https://twitter.com/queencodemonkey) - Native Android Code Monkey: monkey code, monkey break, monkey debug, monkey iterate. Randomly typing on @Trello for @Atlassian. GDE. ½ of Android Dialogs 569 | * [Jake Wharton](https://twitter.com/JakeWharton) - Stop stopping 570 | * [Jesse Wilson](https://twitter.com/jessewilson) - Android and jokes. Sometimes also inclusivity & sustainability 571 | * [Joe Birch](https://twitter.com/hitherejoe) - Android Engineer @Buffer. Instructor @caster_io & @Pluralsight. Public Speaker, Android Tinkerer 572 | * [Kaushik Gopal](https://twitter.com/kaushikgopal) - 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 573 | * [Kristin Marsicano](https://twitter.com/kristinmars) - Android Developer and Instructor @bignerdranch. Co-author of Android Programming: The Big Nerd Ranch Guide. Always learning 574 | * [Lars Vogel](https://twitter.com/vogella) - 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 575 | * [Mark Allison](https://twitter.com/MarkIAllison) - 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 576 | * [Nick Butcher](https://twitter.com/crafty) - Design + Developer Advocate @Google, I help people to design and build lovely Android apps 577 | * [Pierre-Yves Ricau](https://twitter.com/Piwai) - Android baker @Square 578 | * [Rebecca Franks](https://twitter.com/riggaroo) - Android Engineering Lead at @DVT_Corporate | Google Developer Expert for #Android and #IoT #GDE | Made @bookdash app | I ❤ baking and travelling 579 | * [Reto Meier](https://twitter.com/retomeier) - Developer Advocate at Google, Android developer, and author of Professional Android Application Development series. Views expressed are mine alone 580 | * [Romain Guy](https://twitter.com/romainguy) - Android Graphics team manager @Google, Photography 581 | * [Roman Nurik](https://twitter.com/romannurik) - Designer on @Firebase at @Google · Android/Web Developer 582 | * [Ryan Harter](https://twitter.com/rharter) - Freelance Android Developer, Google Developer Expert, community leader 583 | * [Tor Norbye](https://twitter.com/tornorbye) - Tor Norbye is the tech lead for Android Studio at Google 584 | * [Ty Smith](https://twitter.com/tsmith) - Android at @Uber Dev Platform - Google Developer Expert - @specializedtype investor - @sfaug and @droidconsf organizer - ex @twitter @fabric @evernote @zagat 585 | * [Zarah Dominguez](https://twitter.com/zarahjutz) - Having a love/hate affair with the little green 'droid at @domaincomau; Google Developer Expert for Android; a walking contradiction 586 | 587 | ## Game Development 588 | 589 | 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. 590 | 591 | ### Frameworks 592 | 593 | * [AndEngine](http://www.andengine.org) - Free Android 2D OpenGL Game Engine 594 | * [LibGDX](https://libgdx.badlogicgames.com) - Desktop/Android/BlackBerry/iOS/HTML5 Java game development framework 595 | * [Rajawali](https://github.com/Rajawali/Rajawali) - Android OpenGL ES 2.0/3.0 Engine 596 | * [Unity](https://unity3d.com/unity) - Start creating a world class games using this framework 597 | 598 | ### Open-Source Games 599 | 600 | * [ColorPhun](https://github.com/prakhar1989/colorphun) - A Simple Color Game in Android 601 | * [Game of Life](https://github.com/zsoltk/GameOfLife) - An Android implementation of Conway's Game of Life, focusing on clean design and implementation 602 | * [Memory Game](https://github.com/sromku/memory-game) - Simple and beautiful memory game for kids 603 | * [Pixel Dungeon](https://github.com/watabou/pixel-dungeon) - Traditional rogue-like game with pixel-art graphics and simple interface 604 | 605 | 606 | 607 | ### :heart: Found this project useful? 608 | If you found this project useful, then please consider giving it a :star: on Github and sharing it with your friends via social media. 609 | 610 | 611 | ## Project Maintained By 612 | 613 | ### Aritra Roy 614 | 615 | Android & Backend Developer. Blogger. Designer. Fitness Enthusiast. 616 | 617 | 618 | 619 | 620 | 621 | ## License 622 | 623 | ``` 624 | Copyright 2017 aritraroy 625 | 626 | Licensed under the Apache License, Version 2.0 (the "License"); 627 | you may not use this file except in compliance with the License. 628 | You may obtain a copy of the License at 629 | 630 | http://www.apache.org/licenses/LICENSE-2.0 631 | 632 | Unless required by applicable law or agreed to in writing, software 633 | distributed under the License is distributed on an "AS IS" BASIS, 634 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 635 | See the License for the specific language governing permissions and 636 | limitations under the License. 637 | -------------------------------------------------------------------------------- /others/Logger.java: -------------------------------------------------------------------------------- 1 | package com.aritraroy.logger; 2 | 3 | import android.util.Log; 4 | 5 | public class Logger { 6 | 7 | private final String TAG; 8 | private final int priority; 9 | 10 | public static Logger withTag(String tag) { 11 | return new Logger(tag); 12 | } 13 | 14 | private Logger(String TAG) { 15 | this.TAG = TAG; 16 | this.priority = Log.DEBUG; 17 | } 18 | 19 | public Logger log(String message) { 20 | if (BuildConfig.DEBUG) { 21 | Log.println(priority, TAG, message); 22 | } 23 | return this; 24 | } 25 | 26 | public void withCause(Exception cause) { 27 | if (BuildConfig.DEBUG) { 28 | Log.println(priority, TAG, Log.getStackTraceString(cause)); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /raw/top-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amitshekhariitbhu/UltimateAndroidReference/de07282868fe5c386ad263d8a558b9444fa6e543/raw/top-banner.png -------------------------------------------------------------------------------- /raw/ultimate-android-reference-logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amitshekhariitbhu/UltimateAndroidReference/de07282868fe5c386ad263d8a558b9444fa6e543/raw/ultimate-android-reference-logo-small.png --------------------------------------------------------------------------------