Go to file
Sergey Vlasenko 7866be1637 Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
alerts fix detekt 2022-09-16 11:41:07 +03:00
android-configs Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
api-logansquare feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
base-filters Small refactor 2022-10-06 20:43:50 +03:00
base-map Map module: review comments and small fixes 2022-10-20 12:03:14 +04:00
bottom-navigation-base fix BaseBottomNavigationController 2024-03-06 15:31:08 +03:00
bottom-navigation-fragment fix errors from wrong gradle setup in new modules 2020-09-09 16:50:32 +03:00
bottom-navigation-viewcontroller fix errors from wrong gradle setup in new modules 2020-09-09 16:50:32 +03:00
bottom-sheet Add test project link 2023-04-07 12:08:00 +04:00
cart-utils add new line 2023-03-23 18:56:46 +04:00
client-services fix for comments 2022-03-17 12:14:23 +03:00
code-confirm fix issues from Ekaterina Kacharova 2022-12-16 11:29:42 +03:00
google-map Map module: review comments and small fixes 2022-10-20 12:03:14 +04:00
gradle/wrapper Detekt update 2018-11-07 16:25:52 +03:00
kotlin-extensions Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
lifecycle Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
lifecycle-rx feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
lifecycle-viewcontroller feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
livedata-location feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
logging feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
logging_reader small fix 2022-08-31 12:49:26 +03:00
mvi-arch Remove pretty-print dependency from mvi module 2022-04-18 11:51:21 +03:00
navigation-base Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
navigation-cicerone Set dagger version up to 2.34 to make it compilable with kotlin 1.5+ 2022-02-13 21:05:39 +03:00
navigation-viewcontroller Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
pagination paginator fix in NewPageProgress case State.FullData 2020-09-11 12:23:10 +03:00
recaptcha fix for comments 2022-03-17 12:14:23 +03:00
recyclerview-adapters Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
recyclerview-calendar feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
recyclerview-decorators delete staples 2021-11-18 03:35:33 +03:00
rx-extensions feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
storable feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00
text-processing "Replace" template generation, Placeholder generation, Mask generation 2022-12-22 14:23:59 +03:00
utils Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
views Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
webview Fix review comments 2022-12-28 19:12:58 +04:00
yandex-map refactor 2023-03-16 12:51:41 +03:00
.gitignore Added fragment dependency v1.1.0 for Fragment constructor with arguments 2019-09-11 12:09:24 +03:00
.gitmodules remove buildscripts 2019-11-07 11:14:41 +03:00
CODEOWNERS add code owners 2020-06-16 11:57:20 +03:00
LICENSE License 2018-09-11 16:15:52 +03:00
README.md move to another module 2020-10-01 18:30:15 +03:00
build.gradle Migrate from bintray to maven.dev 2022-05-11 13:42:16 +03:00
gradle.properties Fix CPD and Detekt lint issues 2021-06-23 23:47:58 +03:00
gradlew Migration to single repo 2018-09-27 13:52:59 +03:00
gradlew.bat Migration to single repo 2018-09-27 13:52:59 +03:00

README.md

RoboSwag

Roboswag - библиотека решений, ускоряющих разработку Android приложений. Она включает в себя архитектурные решения для построения приложения, утилитарные классы и общие инструменты, которые используются в компании Touch Instinct. Библиотека состоит из gradle модулей. Каждый модуль отвечает за свой функционал. В проектах используются только те модули, которые нужны. Такая модульность позволяет сохранять размер приложения небольшим и ускорять сборку проекта.

Минимальные требования

  • Android Api: 21
  • Kotlin: 1.3.11
  • Gradle: 4.0.0

Основная архитектура

За основу архитектуры взят подход от Google - MVVM на основе Android Architecture Components. Данный подход популярен в сообществе Android разработки, позволяет разбивать код на мелкие и независимые части, что ускоряет разработку и последующую поддержку приложения.

Для организации многопоточности используется фреймворк RxJava2. RxJava - обширный инструмент, реализующий концепции реактивного программирования. Сочетание этой концепции с возможностью выносить задачи на другой поток позволяет легко писать многопоточное асинхронное приложение.

В качестве Di-фреймворка выбран Dagger 2. Он позволяет сделать код приложения менее связным, более гибким и позволяет легко настроить автотестирование.

Roboswag позволяет сочетать эти три решения в одну гибкую и удобную архитектуру. Разработка становится быстрее, проще и надежнее. За архитектуру отвечают модули lifecycle и lifecycle-rx.

Основные инструменты библиотеки

Работа с RecyclerView

RecyclerView - один из самых часто используемых инструментов Android разработчика. Модуль recyclerview-adapters позволяет сделать работу с RecyclerView более гибкой и делает работу самого элемента быстрее.

Работа с SharedPreferences

Чтобы сохранять простые данные в память смартфона, используются SharedPreferences. Модуль storable разработан для облегчения работы с SharedPreferences. Для шифрования данных в SharedPreferences можно использовать encrypted-shared-prefs

Утилиты и extension функции

В Roboswag также есть много утилитарных классов и extension функций, которые позволяют писать часто используемый код в одну строку.

Подключение

.gitmodules

[submodule "RoboSwag"]
	path = RoboSwag
	url = git@github.com:TouchInstinct/RoboSwag.git

build.gradle (Module: app)

dependencies {
    gradle.ext.roboswag.forEach { module ->
        implementation project(":$module")
    }
}

Управление зависимостями нужно производить с помощью ext.roboswag добавляя или удаляя из него названия модулей.

settings.gradle (Module: project)

gradle.ext.roboswag = [
        'utils',
        'logging',
        'navigation',
        'storable',
        'api-logansquare',
        'lifecycle',
        'views',
        'recyclerview-adapters',
        'kotlin-extensions',
        'recyclerview-calendar',
        'tabbar-navigation',
        'base-map',
        'yandex-map',
        'google-map',
        'webview',
        'encrypted-shared-prefs'
]

gradle.ext.roboswag.forEach { module ->
    include ":$module"
    project(":$module").projectDir = file("RoboSwag/$module")
}

R8/Proguard

-keep class ** extends ru.touchin.roboswag.components.navigation.viewcontrollers.ViewController { *; }

Лицензия

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.