├── .gitignore ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/tasks.xml 39 | .idea/gradle.xml 40 | .idea/dictionaries 41 | .idea/libraries 42 | 43 | # Keystore files 44 | *.jks 45 | 46 | # External native build folder generated in Android Studio 2.2 and later 47 | .externalNativeBuild 48 | 49 | # Google Services (e.g. APIs or Firebase) 50 | google-services.json 51 | 52 | # Freeline 53 | freeline.py 54 | freeline/ 55 | freeline_project_description.json 56 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Khoa Pham 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # awesome android architecture [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 2 | 3 | ❤️ Support my app ❤️ 4 | 5 | - [Push Hero - pure Swift native macOS application to test push notifications](https://www.producthunt.com/posts/push-hero-2) 6 | - [PastePal - Pasteboard, note and shortcut manager](https://www.producthunt.com/posts/pastepal) 7 | - [Frame recorder - Recorder gif and video with frame](https://www.producthunt.com/posts/frame-recorder) 8 | - [Other apps](https://onmyway133.github.io/projects/) 9 | 10 | ❤️❤️😇😍🤘❤️❤️ 11 | 12 | ## Table of content 13 | 14 | - [Architecture Component](#architecture-component) 15 | - [MVP](#mvp) 16 | - [MVC](#mvc) 17 | - [MVI](#mvi) 18 | - [MVVM](#mvvm) 19 | - [Clean Architecture](#clean-architecture) 20 | - [Misc](#misc) 21 | 22 | # Architecture Component 23 | 24 | ### Posts 25 | 26 | - [Android Architecture Components](https://developer.android.com/topic/libraries/architecture/index.html) 27 | - [Architecture Components - Introduction (Google I/O '17)](https://www.youtube.com/watch?v=FrteWKKVyzI) 28 | - [Guide to App Architecture](https://developer.android.com/topic/libraries/architecture/guide.html) 🚀 29 | - [Android lifecycle-aware components codelab](https://codelabs.developers.google.com/codelabs/android-lifecycles) 30 | - [Exploring the new Android Architecture Components library](https://medium.com/exploring-android/exploring-the-new-android-architecture-components-c33b15d89c23) 31 | - [droidcon NYC 2017 - ViewModels, LiveData and Lifecycles, oh my!](https://www.youtube.com/watch?v=SlZVYkhoSq8) 32 | - [Android Architecture Components Considered Harmful](https://academy.realm.io/posts/android-architecture-components-considered-harmful-mobilization/) 33 | - [ViewModels: Persistence, onSaveInstanceState(), Restoring UI State and Loaders](https://medium.com/google-developers/viewmodels-persistence-onsaveinstancestate-restoring-ui-state-and-loaders-fc7cc4a6c090) 34 | - [ViewModels and LiveData: Patterns + AntiPatterns](https://medium.com/google-developers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54) 35 | - [Google releases source for Google I/O 2018 for Android](https://android-developers.googleblog.com/2018/08/google-releases-source-for-google-io.html) 36 | - [5 common mistakes when using Architecture Components](https://proandroiddev.com/5-common-mistakes-when-using-architecture-components-403e9899f4cb) 37 | 38 | ### Repos 39 | 40 | - [android-architecture-counter-sample](https://github.com/dlew/android-architecture-counter-sample) Sample app using Android architecture components 41 | - [android-architecture-components](https://github.com/googlesamples/android-architecture-components) Samples for Android Architecture Components 42 | 43 | # MVP 44 | Model View Presenter 45 | 46 | ### Posts 47 | 48 | - [Model-View-Presenter: Android guidelines](https://medium.com/@cervonefrancesco/model-view-presenter-android-guidelines-94970b430ddf) 49 | - [Android MVP — Doing it right](https://android.jlelse.eu/android-mvp-doing-it-right-dac9d5d72079) 50 | - [droidcon NYC 2017 - Clean app design with Architecture Components](https://www.youtube.com/watch?v=i1-7S-RxfvQ) :rocket: 51 | - [Android Architecture Patterns Part 2: Model-View-Presenter](https://medium.com/upday-devs/android-architecture-patterns-part-2-model-view-presenter-8a6faaae14a5) 52 | - [Essential Guide For Designing Your Android App Architecture: MVP: Part 1](https://blog.mindorks.com/essential-guide-for-designing-your-android-app-architecture-mvp-part-1-74efaf1cda40) 53 | 54 | ### Repos 55 | 56 | - [android-architecture-components](https://github.com/googlesamples/android-architecture-components) Samples for Android Architecture Components. 57 | - [mortar](https://github.com/square/mortar) A simple library that makes it easy to pair thin views with dedicated controllers, isolated from most of the vagaries of the Activity life cycle. 58 | - [nucleus](https://github.com/konmik/nucleus) Nucleus is an Android library, which utilizes the Model-View-Presenter pattern to properly connect background tasks with visual parts of an application. 59 | 60 | # MVC 61 | Model View Controller 62 | 63 | ### Posts 64 | 65 | - [Android Architecture Patterns Part 1: Model-View-Controller](https://medium.com/upday-devs/android-architecture-patterns-part-1-model-view-controller-3baecef5f2b6) 66 | 67 | # MVI 68 | Model View Intent 69 | 70 | ### Posts 71 | 72 | - [android-architecture](https://github.com/oldergod/android-architecture) MVI architecture Implementation of the ToDo app. 73 | - [droidcon NYC 2017 - Model-View-Intent for Android](https://www.youtube.com/watch?v=PXBXcHQeDLE) 74 | - [The Contract of the Model-View-Intent Architecture](https://proandroiddev.com/the-contract-of-the-model-view-intent-architecture-777f95706c1e) 75 | 76 | # MVVM 77 | Model View ViewModel 78 | 79 | ### Posts 80 | 81 | - [ANDROID DATABINDING: GOODBYE PRESENTER, HELLO VIEWMODEL!](http://tech.vg.no/2015/07/17/android-databinding-goodbye-presenter-hello-viewmodel/) 82 | - [Android Architecture Patterns Part 3: 83 | Model-View-ViewModel](https://medium.com/upday-devs/android-architecture-patterns-part-3-model-view-viewmodel-e7eeee76b73b) 84 | - [Android Architecture Components MVVM — Part 1](https://proandroiddev.com/android-architecture-components-mvvm-part-1-1bd138959535) 85 | 86 | ### Repos 87 | 88 | - [AndroidViewModel](https://github.com/inloop/AndroidViewModel) Separating data and state handling from Fragments or Activities without lots of boilerplate-code. 89 | - [android-oss](https://github.com/kickstarter/android-oss) Kickstarter for Android 90 | 91 | # Clean Architecture 92 | 93 | ### Posts 94 | 95 | - [A detailed guide on developing Android apps using the Clean Architecture pattern](https://medium.com/@dmilicic/a-detailed-guide-on-developing-android-apps-using-the-clean-architecture-pattern-d38d71e94029) 96 | 97 | ### Repos 98 | 99 | - [CleanArchitecture](https://github.com/android10/Android-CleanArchitecture) 100 | - [android-clean-architecture-boilerplate](https://github.com/bufferapp/android-clean-architecture-boilerplate) 101 | 102 | # Misc 103 | 104 | ### Posts 105 | 106 | - [Android Architecture: Part 1 – every new beginning is hard](http://five.agency/android-architecture-part-1-every-new-beginning-is-hard/) 107 | - [Model View Intent on Android](http://hannesdorfmann.com/android/model-view-intent) 108 | - [Communication between Fragment and Activity](https://github.com/onmyway133/blog/issues/108) 109 | - [Keddit — Intro: Learn Kotlin while developing an Android App](https://android.jlelse.eu/learn-kotlin-while-developing-an-android-app-introduction-567e21ff9664) :rocket: :rocket: 110 | - [MVC vs MVP vs MVVM vs MVI](https://academy.realm.io/posts/mvc-vs-mvp-vs-mvvm-vs-mvi-mobilization-moskala) 111 | - [A Functional Approach to Android Architecture using Kotlin](https://academy.realm.io/posts/mobilization-2017-jorge-castillo-functional-android-architecture-kotlin/) 112 | 113 | ### Reactive Programming 114 | 115 | - [Grokking RxJava, Part 1: The Basics](http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/) 116 | - [Crunching RxAndroid — Intro](https://medium.com/crunching-rxandroid/crunching-rxandroid-intro-c27eb6f009ea) 117 | - [RxAndroid and Kotlin (Part 1)](https://medium.freecodecamp.org/rxandroid-and-kotlin-part-1-f0382dc26ed8) 118 | - [Retrofiting on Android with Kotlin](https://segunfamisa.com/posts/using-retrofit-on-android-with-kotlin) 119 | - [Using Kotlin, RxJava 2 and Retrofit to consume REST API on Android](https://softwaremill.com/kotlin-rxjava2-retrofit-android/) 120 | 121 | ### Adapter 122 | 123 | - [Great Adapter hell escape](http://hannesdorfmann.com/android/adapter-delegates) 124 | 125 | ### Dependency Injection 126 | 127 | - [kapsule](https://github.com/traversals/kapsule) Minimalist dependency injection library for Kotlin. 128 | - [Kodein](https://github.com/SalomonBrys/Kodein) Painless Kotlin Dependency Injection 129 | - [Dependency injection in Android](https://developer.android.com/training/dependency-injection) 130 | 131 | ### Testing 132 | 133 | - [Testing robots](https://academy.realm.io/posts/kau-jake-wharton-testing-robots/) 134 | 135 | --------------------------------------------------------------------------------