Awesome Open Source
Awesome Open Source

Android Sample app with MVP architecture

Sample project that displays some images from the dribble API. Demonstrates some cool stuff that you can do with the modern libraries and tooling in Android these days.

As someone said on reddit: "It's not over-engineered, it's just a skyscraper without the skyscraper part, just the foundations :)"

Demo Screenshot

Newest additions:

  • Added a separate Timber logging tree for crashlytics. See
  • Added automated unlocking the screen for espresso tests, check class com.example.util.EspressoTestRunner


  • RxJava
  • Dagger 2 with examples of assisted injection and different modules depending on build type
  • Retrofit 2 and Retrofit Mock mode for debug builds
  • Mosby MVP with View State support
  • Timber
  • Auto Value
  • Glide with a wrapper
  • Butterknife
  • AssertJ for fluent assertions
  • Fabric (Crashlytics and Answers)
  • Retrolambda
  • Stetho

Static analysis:

  • PMD ( - check file quality.gradle)
  • Checkstyle
  • Lint
  • Findbugs
  • Jacoco code coverage that can generate reports for unit tests, espresso tests or the combination of the two
  • A set of custom IDE inspection rules
  • A module with a sample custom lint rule


  • Espresso tests with and without mock web server
  • Mock web server tests that loads responses from json files
  • Robolectric tests
  • Normal unit tests
  • Ok http interceptor for changing the base url in tests
  • Idling resources
  • Unlocking screen for Espresso tests (check class com.example.util.EspressoTestRunner)


  • Separate app icons according to build type
  • Some advanced source sets configuration for splitting up tests
  • Loading some project config from property files in Android Manifest and build.gradle
  • Shared folders for some build types or tests
  • Working proguard config
  • Android Studio external annotations (
  • Package level annotations for @Nullable and @NonNull
  • OkHttp interceptor for adding auth token to headers easily
  • Strict mode
  • Plugin to publish app on the playstore
  • Dex count plugin for counting the number of methods in the apk
  • Separate Timber logging tree for crashlytics. See

..and all sorts of other goodies!


  • Proper CI setup (probably Teamcity)
  • Screenshot automation.
  • A debug drawer

Any feedback/pull request is welcome! You can catch me at

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (697,538
Android (41,662
Retrofit2 (1,896
Android Development (1,559
Rxjava (1,322
Dagger2 (1,237
Static Analysis (978
Fabric (794
Glide (598
Android Architecture (493
Mvp Android (379
Butterknife (280
Timber (187
Teamcity (178
Jacoco (129
Crashlytics (72
Robolectric (70
Stetho (42
Mockwebserver (36
Retrolambda (27
Mosby (20
Related Projects