GithubHelp home page GithubHelp logo

minhlucvan / just-another-android-app Goto Github PK

View Code? Open in Web Editor NEW

This project forked from athkalia/just-another-android-app

0.0 1.0 0.0 873 KB

An Android base app with loads of cool libraries/configuration

License: Apache License 2.0

Java 100.00%

just-another-android-app's Introduction

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 com.example.tools.timber.CrashlyticsTree
  • Added automated unlocking the screen for espresso tests, check class com.example.util.EspressoTestRunner

libraries:

  • 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 (https://pmd.github.io/ - 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

Testing:

  • 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)

Other:

  • 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 (https://www.jetbrains.com/help/idea/2016.3/external-annotations.html)
  • 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 com.example.tools.timber.CrashlyticsTree

..and all sorts of other goodies!

Roadmap:

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

Any feedback/pull request is welcome! You can catch me at www.sakiskaliakoudas.com

just-another-android-app's People

Watchers

Minh Luc Van avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.