Developing native Android apps for enterprise customers the last year has been fun and challenging, most definitely. I got such a huge motivational boost, urging to learn all new techniques and best practices.
Implementing a MVP pattern, with a mix of RxJava in the data/sync-layer and regular Java in the view-layer. The hardest part of it all was for sure, RxJava and Bi-directional synchronization.
What I learned
Dagger2 - Static dependency injection
RxJava - A library to compose asynchronous and event-based programs
GreenDao - Sqlite ORM
Nucleus - A lightweight library which utilizes MVP-pattern
ButterKnife - Bind Android views and callbacks to fields and methods
Retrofit - A type-safe HTTP client for Android and Java
Icepick - Helping with Android Instance State
Picasso - A powerful image downloading and caching library for Android
FCM - Firebase Cloud Messaging service
Guava - Google library with helpful methods
ProviGen - Helps generating ContentProviders
LeakyCanary - A memory leak detection library for Android and Java
Stetho - Stetho is a debug bridge for Android applications
I'm currently only touching base with XCode, it feels odd but pretty straight forward so far. Sometimes I catch myself overthinking solutions, it feels like iOS development is easier. Simply because there isn't as much overhead as in Android development.
I'll give an more in-depth explanation when I feel a bit more comfortable with the environment. I read somewhere on the internet that iOS development produces 30% less code than Android development, comparing the same feature. I hope this is true...