Skip to content

This repository contains sample code. Its purpose being, to quickly demonstrate Android and software development in general, clean code, best practices, testing and all those other must know goodies.

License

Notifications You must be signed in to change notification settings

ParaskP7/sample-code-posts

Repository files navigation

Sample Code: Posts

This repository contains sample code. Its purpose being, to quickly demonstrate Android and software development in general, clean code, best practices, testing and all those other must know goodies.

The below listed skills are the main focus:

  1. Architectural Pattern
    1. MVP (Canonical code only, without any libraries)
    2. Mosby MVP (Helper MVP library)
  2. Libraries
    1. Dagger 2 (A fast dependency injector for Android and Java)
    2. Butter Knife (Bind Android views and callbacks to fields and methods)
    3. Retrolambda (A gradle plugin for getting java lambda support in java 6, 7 and android)
    4. RxJava 2 (RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM)
    5. Retrofit 2 (Type-safe HTTP client for Android and Java by Square, Inc.)
    6. Realm (Realm is a mobile database: a replacement for SQLite & ORMs)
    7. Picasso (A powerful image downloading and caching library for Android)
    8. Timber (A logger with a small, extensible API which provides utility on top of Android's normal Log class)
  3. Android Support
    1. Swipe Refresh Layout (The SwipeRefreshLayout should be used whenever the user can refresh the contents of a view via a vertical swipe gesture)
    2. Card View (A FrameLayout with a rounded corner background and shadow)
    3. Recycler View (A flexible view for providing a limited window into a large data set)
    4. Shared Element Transition (Activity transitions in material design apps provide visual connections between different states through motion and transformations between common elements)
    5. Vector Drawables (In Android 5.0 (API Level 21) and above, you can define vector drawables, which scale without losing definition)
  4. Code Quality
    1. Android Lint (The lint tool checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization)
    2. Checkstyle (Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. By default it supports the Google Java Style Guide and Sun Code Conventions, but is highly configurable. It can be invoked with an ANT task and a command line program.)
    3. PMD (PMD is a source code analyzer)
    4. Findbugs (A program which uses static analysis to look for bugs in Java code)
    5. Jacoco (JaCoCo - Java Code Coverage Library)
  5. Tests
    1. Espresso (Espresso to write concise, beautiful, and reliable Android UI tests)
    2. JUnit (A programmer-oriented testing framework for Java)
    3. Robolectric (Android Unit Testing Framework)
    4. Mockito (Most popular Mocking framework for unit tests written in Java)
    5. AssertJ (AssertJ is a library providing easy to use rich typed assertions)

Usage

Use the below command to build the project in order to install it on an Android device for demonstration:

gradlew clean build -x check

Open an emulator or connect a physical device to experiment with the sample app, use the below command, which first uninstalls and then installs the sample app:

gradlew uninstallDebug | gradlew installDebug

Or faster yet and targeting a specific device (in our case an emulator)!

adb -s emulator-5554 uninstall io.petros.posts | adb -s emulator-5554 install app\build\outputs\apk\debug\app-debug.apk

alt tag

Use this command in order to run the static code analysis for the project:

gradlew check -x test

Or even run the below commands to run a specific code quality tool in isolation:

gradlew lint
gradlew checkstyle
gradlew pmd
gradlew findbugs

Run the project unit tests using this command, Jacoco is included:

gradlew test
gradlew testDebugUnitTestCoverage

Open an emulator or connect a physical device to run the instrumentation tests using this command:

gradlew connectedAndroidTest

PS

I also hope this project will help others to quick understand and grasp all the listed technologies...

ENJOY YOU

About

This repository contains sample code. Its purpose being, to quickly demonstrate Android and software development in general, clean code, best practices, testing and all those other must know goodies.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages