Ultimate Android Development Guild
Android Architecture (MVI + Clean)
View Layer
RxBinding
Intents/UiEvents
Kotlin Extension Function for Views
Anko Layouts?
Sample UseCases (RecyclerView Rx Click, Search....)
Presentation Layer
I/O Stream
Transformers
States/UiModels/PartialStates
One small UiModel/State
UiModel/State + PartialStates (the deltas)
State Reducers
Survive Screen Orientation
With Android Arch
ViewModelWithout
ViewModel
Domain Layer and Interactors
When to use (Complex B. Logic, 2 or more Presenters fetching/updating the same resource, two presenters are observing the same resource)
Sample UseCases (Search, ShoppingCart, FileUploader....)
Data Layer
Repository Pattern (interface)
Entity Mappers: Api Entities + B.L Models (modelmapper.org, kotlin mapper)
Retrofit + OkHttp + Moshi
Instance Creation Tips for Dagger
ServiceManager
Interceptors
Call Adapters
Moshi
Caching
Persistance (Room)
Testing , Mocking and Debugging
Flavors (Production, Internal, Mock, Debugging)
Unit Testing
Unit Testing in Kotlin
Testing Presenters
Testing Interactors
Side Effects of the State
Crash Reporting
Logging (timber)
Analytics
Mocking
Mocking Data (Faker)
Retrofit MockWebServer
Debug Drawer
Global App Drawer, Activity Drawer, Global Debug Activity
Switching Enviroments at will (change between prod, mock...)
Device Info / Quick Settings links / App Version Info
Screenshot button + report bug via email
Ui element inspection (Wireframes, Scalpel)
External Libraries info (OkHttp, Glide, LeakCanary)