Skip to content
Using Uncle Bob's clean architecture with Kotlin language and the latest Android technologies(Rx, Dagger2 etc.).
Kotlin
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
data Update Gradle version; Mar 25, 2019
domain Update Gradle version; Mar 25, 2019
gradle/wrapper Update Gradle version; Mar 25, 2019
mvp Update Gradle version; Mar 25, 2019
ui Fix okhttp D8 build issue Apr 18, 2019
.gitignore update .gitignore Mar 18, 2018
.travis.yml Update CI build environment to support android 28 Apr 17, 2019
LICENSE Create LICENSE Mar 18, 2018
README.md Update README.md Mar 25, 2019
build.gradle Fix okhttp D8 build issue Apr 18, 2019
clean_architecture_pyin.png change the image size for readme file Mar 18, 2018
gradle.properties Update Gradle version; Mar 25, 2019
gradlew Initial commit May 19, 2017
gradlew.bat Initial commit May 19, 2017
settings.gradle rename module Mar 18, 2018

README.md

Android Clean Architecture - Kotlin

Build Status Android Arsenal

This is an Android Clean Architecture base project using 100% Kotlin including Unit tests!

You could use it as the base project when you create a new Android project. This architecture optimized the Clean Architecture and MVP for the Android Kotlin project. When using this architecture, you could isolate the UI, business logic and data sources, and also making the unit test easier. It uses latest and most popular technologies e.g. Dagger2, RxJava etc.

Benefit

  • Makes your new project clean
  • Isolates UI, business logic and data sources' responsibilities
  • Testable
  • Avoids multi-threading problems

Approach of Clean Architecture for Android

There are 3 layers in the project: Data, Domain and Presentation(UI), and the UI layer contains view and presenters.

Approach of Clean Architecture for Android - Patrick Yin

Multi-threading

Base UseCase class handles the thread of Rx chains, it puts whole chain on IO thread, and then changes back to Android main thread(UI thread) for the steps after use case execution. That means when you write the project based on this project, then you don't have to worry about any multi-threading issue.

Requirements & configurations

Requirements

  • JDK 8
  • Android SDK API 26
  • Kotlin Gradle plugin 1.2.30 (it will be installed automatically when this project is synced)

Configurations

  • minSdkVersion=21
  • targetSdkVersion=26

Language

Libraries

More about The Clean Architecture

The Clean Architecture

S.O.L.I.D Principle

More articles available on my blog: https://medium.com/@pyin001

TODO

Bugs and Feedback

For bugs, feature requests, and discussion please use GitHub Issues. For general usage questions please use the StackOverflow.

License

Copyright 2017 Patrick Yin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
You can’t perform that action at this time.