All Projects → GrossumUA → TAS_Android_Boilerplate

GrossumUA / TAS_Android_Boilerplate

Licence: other
The App Solutions ready-to-use boilerplate for an Android Application.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to TAS Android Boilerplate

NiceDemo
iOS project, built on improved MVP architecture using Coordinator pattern for routing 😎
Stars: ✭ 54 (+80%)
Mutual labels:  mvp-architecture
mvp-architecture-kotlin-dagger-2-retrofit-android
Android Application MVP (Model-View-Presenter) architecture example using Dagger2 Dependency Injection (DI) and Retrofit Tutorial using Kotlin programming language.
Stars: ✭ 15 (-50%)
Mutual labels:  mvp-architecture
RDO.Net
Relational Data Objects for .Net
Stars: ✭ 23 (-23.33%)
Mutual labels:  mvp-architecture
StreamBox
直播聚合APP,包含熊猫tv,斗鱼tv,战旗tv,全民tv等等
Stars: ✭ 27 (-10%)
Mutual labels:  mvp-architecture
android-template
Template for android development at Tiki
Stars: ✭ 17 (-43.33%)
Mutual labels:  mvp-architecture
Cucumber
A recipe finding app written in Kotlin with MVP architecture
Stars: ✭ 64 (+113.33%)
Mutual labels:  mvp-architecture
NewsPin
News app for android using Kotlin, coroutines, MVP architecture
Stars: ✭ 25 (-16.67%)
Mutual labels:  mvp-architecture
Villains-and-Heroes
Android app built with MVP architectural approach and uses Marvel Comics API that allows developers everywhere to access information about Marvel's vast library of comics. ⚡
Stars: ✭ 53 (+76.67%)
Mutual labels:  mvp-architecture
android-base-project
Android LateralView Base Project
Stars: ✭ 25 (-16.67%)
Mutual labels:  mvp-architecture
PopMovies
Aplicativo em Android para organização dos seus filmes favoritos.
Stars: ✭ 41 (+36.67%)
Mutual labels:  mvp-architecture
MVPDemo
MVP+动态代理的模式框架例子
Stars: ✭ 12 (-60%)
Mutual labels:  mvp-architecture
clutch
No description or website provided.
Stars: ✭ 14 (-53.33%)
Mutual labels:  mvp-architecture
MusicPlayer
Android music player example.
Stars: ✭ 20 (-33.33%)
Mutual labels:  mvp-architecture
BakingApp
Udacity Android Developer Nanodegree, project 2.
Stars: ✭ 54 (+80%)
Mutual labels:  mvp-architecture
Android-Model-View-Presenter
No description or website provided.
Stars: ✭ 26 (-13.33%)
Mutual labels:  mvp-architecture
ExamplesAndroid
Simple Example of Android [APIFacebook,APIGoogleMaps,APITwitter,Volley,Picasso etc etc etc]
Stars: ✭ 24 (-20%)
Mutual labels:  mvp-architecture
XYZReader
A simple news reader app with elements of Material Design.
Stars: ✭ 17 (-43.33%)
Mutual labels:  mvp-architecture
Fineract-CN-mobile
DEPRECATED project - Check the Apache fineract-cn-mobile project instead
Stars: ✭ 17 (-43.33%)
Mutual labels:  mvp-architecture
Weather-Guru-MVP
Sample Material-design Android weather application build with MVP architectural approach using Dagger2, RxJava2, Retrofit2, Event-Bus, GreenDao, Butterknife, Lottie etc.
Stars: ✭ 15 (-50%)
Mutual labels:  mvp-architecture
delimeal
The Android template app for restaurant or booking item.
Stars: ✭ 26 (-13.33%)
Mutual labels:  mvp-architecture

TAS Android Boilerplate

This is one of the boilerplates that The App Solutions company developers are using as a foundation for new Android projects. It is result of years of experiments and refinement of the architecture and guidelines on various company's projects. This particular boilerplate provides basic set utilities for resolving common tasks.

Tech stack

Requirements

Architecture

This project follows TAS's Android architecture guidelines that are based on MVP (Model View Presenter). For data layer used Repository Design Pattern with Reactive (RxJava) callbacks. Presenters, Managers and some Utils provided by Dependency Injection (Dagger 2)

Architecture Diagram

Utils

For this particular boilerplate we’ve prepared a set of utilities for performing common tasks.

Data

  • ValidationUtils - utility for validation of different input fields with predefined rules and messages.
  • TimeConvertingUtils
  • StringUtils
  • RoundingHelper
  • RandomUtils
  • CountryCodeUtils - country code processing utility
  • OccurrencesIndexFinder - utility for start/end index search of phrases in the text

Storage

  • FileSystemHelper - utility for File System operation
  • RealmImporter - Import manager for json Realm database
  • RealmUtils - operation wrapper for base Realm

UI

  • DialogFactory - utility for streamlines access to base Android workflow dialogs
  • FragmentUtils
  • ToastUtils
  • ViewUtils - set of static methods with common view operations and calculations

Other

  • StreamsUtils
  • RxUtils
  • OptUtils - sets of utilities for manipulations with Optional
  • NetworkUtils
  • LogUtils
  • IntentUtils
  • HardwareUtils
  • BuildInfoUtils
  • ApiUtils - set of methods for main transformations wrap and check while working with REST API
  • GaidRetriever - enables access to Google Advertising ID
  • PermissionsCheckActivity - utility for on-screen base activity with permission checking
  • PermissionsUtils

Code Quality

For this boilerplate we’ve prepared a combination of several code tests:

  • unit tests;
  • functional test;
  • code analysis tools.

Tests

To run unit tests on your machine:

./gradlew test

To run functional tests on connected devices:

./gradlew connectedAndroidTest

Code Analysis tools

The following code analysis tools are prepared for this project:

  • PMD:designed for “search and destroy” of common programming flaws. It eliminates with extreme prejudice things like unused variables, empty catch blocks, unnecessary object creation, etc. See this project's PMD ruleset.
./gradlew pmd
  • Findbugs: designed for bug finding in Java code. Unlike PMD, instead of source code it uses compiled version of Java bytecode.
./gradlew findbugs
  • Checkstyle: designed to keep unified style over the entirety of the application’s code according to preset guidelines.
./gradlew checkstyle

The check task

To ensure that your code is valid and stable use check:

./gradlew check

This will run code analysis tools and unit tests in the following order:

Check Diagram

New project setup

Here is a step by step by on how to start a new project from this boilerplate:

  • Download this boilerplate repository.
  • Change the name of the package.
    • Rename packages in main, androidTest and test using Android Studio.
    • In app/build.gradle file, packageName and testInstrumentationRunner.
    • In src/main/AndroidManifest.xml.
  • Create a new git repository, see GitHub tutorial.
  • Replace the dummy code with the code of your app in accordance with the architecture.
  • Remove unused classes from /_additional_useful_classes and /util folders
  • In app/build.gradle add the signing configuration to enable release versions.
  • Add Fabric API key and secret to fabric.properties and uncomment Fabric plugin set up in app/build.gradle
  • Add google-services.json for using Firebase services, see tutorial.
  • Update proguard-rules.pro to keep models and add extra rules to file if needed.
  • Update README with information relevant to the new project.
  • Update LICENSE to match the requirements of the new project.

Credentials

This repository is being developed by The App Solutions Android team: Severyn Parkhomenko, Dmytro Yakovlev and Viktor Vaidner.

A lot of solutions was inspired by Ribot Android Boilerplate, Google Android Blueprints, android10 Clean Architecture and others. Certain elements were modified.

License

    Copyright 2018 The App Solutions.

    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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].