Go to file
Aksenov Vladimir 03eeecfea3 Fixed review 2019-09-16 21:52:59 +03:00
BuildScripts@cd61ff3398 update static analysis to detekt RC 15 2019-07-22 16:14:57 +03:00
api-logansquare AndroidX migration 2018-09-28 21:40:03 +03:00
base-map code review 2019-08-16 14:01:31 +03:00
google-map code review 2019-08-16 14:01:31 +03:00
gradle/wrapper Detekt update 2018-11-07 16:25:52 +03:00
kotlin-extensions Fix submodules' READMEs 2019-09-10 13:58:03 +03:00
lifecycle Fix submodules' READMEs 2019-09-10 13:58:03 +03:00
lifecycle-rx Fix submodules' READMEs 2019-09-10 13:58:03 +03:00
livedata-location Fix submodules' READMEs 2019-09-10 13:58:03 +03:00
logging AndroidX migration 2018-09-28 21:40:03 +03:00
navigation Fixed review 2019-09-16 21:52:59 +03:00
recyclerview-adapters Fix submodules' READMEs 2019-09-10 13:58:03 +03:00
recyclerview-calendar added header when current day is the first day of the month (#15) 2019-04-09 18:53:36 +03:00
sample Proguard 2019-01-09 15:02:51 +03:00
storable Deprecated some utils 2018-10-16 17:44:31 +03:00
tabbar-navigation Merge pull request #62 from TouchInstinct/feature/update-gradle-files 2019-09-10 14:40:20 +03:00
utils Kotlin for utils module (#39) 2019-07-30 18:10:27 +03:00
views Some package refactor 2018-10-20 13:38:21 +03:00
yandex-map Use also instead of apply 2019-08-20 12:43:55 +03:00
.gitignore Migration to single repo 2018-09-27 13:52:59 +03:00
.gitmodules Migration to single repo 2018-09-27 13:52:59 +03:00
LICENSE License 2018-09-11 16:15:52 +03:00
README.md Update gradle files 2019-09-05 22:31:34 +03:00
build.gradle Merge branch 'master' into feature/maps 2019-08-16 14:08:52 +03:00
gradle.properties AndroidX migration 2018-09-28 21:40:03 +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
modules.gradle add file modules.gradle 2019-09-11 14:59:08 +03:00

README.md

RoboSwag

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

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

  • Andoroid Api: 19
  • Kotlin: 1.3.11
  • Gradle: 3.2.1
  • Gradle CPD Plugin: 1.1
  • Detekt Plugin: 1.0.0-RC12

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

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

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

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

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

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

Работа с RecyclerView

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

BuildScripts

BuildScrpts - набор скриптов, автоматизирующих разработку. Один из главных скриптов - staticAnalysis - инструмент для автоматической проверки кода на соответствие правилам компании.

Api Generator

Внутренний инструмент компании Touch Instinct для генерации общего кода на разные платформы - Android, iOS и Server. Описанные в одном месте общие классы и Http методы используются на разных платформах. Данный инструмент позволяет сократить время разработки в два раза.

Работа с SharedPreferences

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

Утилиты и 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'
]

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.