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

Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (412,846
Testing (93,338
Mock (8,127
Fabric (4,427
Rxjava (4,215
Retrofit2 (1,987
Static Analysis (1,458
Dagger2 (1,317
Espresso (1,042
Butterknife (791
Timber (563
Jacoco (458
Crashlytics (395
Robolectric (313
Mvp Android (271
Teamcity (173
Espresso Tests (117
Mosby (66
Mockwebserver (39
Stetho (37
Retrolambda (23