Программирование калуга

Этот проект назван в честь Калуги. Крупнейшей в мире пресноводной рыбы. Которая водится в ледяном Амуре. Его основная цель-обеспечить доступ к общим мультиплатформенным функциям. Используемым при разработке мобильных приложений. Таким как MVVM-архитектура. Местоположение. Разрешения. Bluetooth и т.д. Там, где это уместно. Он использует сопрограммы. Каналы и поток. Это позволяет разработчикам использовать холодные потоки из кода Kotlin. Который используется несколькими платформами. Такими как Android и iOS.

Установка

В настоящее время Калуга доступна только через bintray. Добавьте https://dl.bintray.com/kaluga/com.splendo.kaluga/в свой проект репозиторий maven для импорта различных модулей проекта.

Например оповещения Калуги можно импортировать следующим образом:

репозитории { // ... мейвен(https://dl.bintray.com/kaluga/com.splendo.kaluga// ... зависимости { // ... реализация(com.splendo.kaluga:alerts:$kalugaVersion

Доступные Модули

Модуль Использование Название библиотеки Последняя версия
Оповещения Используется для отображения диалоговых окон предупреждений com.splendo.kaluga.alerts 0.1.9
Архитектура Архитектура MVVM com.splendo.kaluga.architecture 0.1.9
База Основные компоненты Калуги. Содержит функции нарезания резьбы. Текучести и локализации

com.splendo.kaluga.base 0.1.9
DateTimePicker Используется для отображения выбора даты или времени com.splendo.kaluga.date-time-picker 0.1.9
КОЖУРА Используется для отображения индикатора загрузки HUD com.splendo.kaluga.hud 0.1.9
Клавиатура Используется для отображения и скрытия клавиатуры com.splendo.калуга.клавиатура 0.1.9
Расположение Обеспечивает геолокацию пользователя com.splendo.kaluga.location 0.1.9
Регистрация Ведение журнала общей консоли com.splendo.калуга.регистрация 0.1.9
Разрешения Управление разрешениями пользователей

com.splendo.kaluga. 0.1.9
Ресурсы Предоставляет общие строки. Изображения. Цвета и шрифты com.splendo.kaluga.resources 0.1.9
Обзор Используется для запроса пользователя на просмотр приложения com.splendo.kaluga.review 0.1.9
Система Системные API. Такие как сеть, аудио. Батарея com.splendo.kaluga.system 0.1.9
ТестУтилы Облегчает тестирование калужских компонентов com.splendo.kaluga.test-utils 0.1.9

Инструкции по сборке

Этот проект использует Android Studio. Иногда вам может понадобиться канареечная версия.


Как IDEA, так и Android Studio (на момент написания статьи 10.09.2019) сообщат предупреждение о том. Что не установлен правильный плагин Kotlin.

чтобы решить эти проблемы. Перейдите по Ideaссылке /Android StudioPreferencesLanguages & FrameworksKotlinи установите последний доступный плагин.


Некоторые компоненты используют сервисы Google Play. Для этого вам нужно будет предоставить свой собственный google-services.jsonфайл.


Вопрос Конана:

xcrun: error: unable to lookup item 'Path' in SDK 'iphonesimulator' e: org.jetbrains.kotlin.konan.KonanExternalToolFailure: The /usr/bin/xcrun command returned non-zero exit code: 1. 

Перейдите в XCodePreferencesLocations tabCommand Line Toolsвыпадающее меню.

Он должен показывать ни одного выбранного. Поэтому выберите любой элемент.


Тесты

Основные испытания идут commonTest. Эти тесты должны быть в состоянии работать в iOS. Android и JVM областях. JS еще не поддерживается должным образом.

Тестовые классы предназначены openдля того. Чтобы определенные платформенные тесты могли расширить их для тестирования собственных реализаций.

Существует также ограниченная поддержка покрытия кода для общих источников путем запуска commonTestCoverageReportзадачи. Некоторые ограничения в текущих инструментах jacoco заставляют его не находить исходные файлы (даже если данные покрытия сообщаются).

Android тесты

Android имеет две тестовые цели. Блок и интеграцию. Оба должны быть в состоянии выполнить тесты. Определенные в общем наборе.

Интеграционные тесты также расширяют некоторые базовые тесты (например. Для определения местоположения) для тестирования конкретной реализации Android.

Чтобы запустить тесты местоположения, Kaluga Testsприложение должно быть настроено как приложение mock location в настройках разработчика (на более низких уровнях платформы может быть достаточно просто разрешить mock locations)

Если время выполнения тестов истекло (в соответствии с Android Studio). Попробуйте запустить тесты в режиме отладки.

Тесты JVM

Подумайте об использовании конфигурации задачи Gradle для запуска тестов JVM (вы можете использовать --testsфильтр to). Если обычный бегун JUnit не работает. Пользовательский интерфейс тестового бегуна и отладка будут по-прежнему работать.

Тесты iOS

Тесты iOS можно запускать с помощью iosTestзадачи в gradle. Которая использует XCTest. Убедитесь, что у вас есть настройка симулятора с работающим целевым устройством. На данный момент вы можете изменить целевое устройство внутри файла сборки gradle.

Эта ioTestзадача поддерживает --testsфлаг. Как и другие задачи Gradle. Для фильтрации того. Какие тесты следует запускать.

Архитектура

Большинство компонентов в рамках этого проекта используют Kotlin coroutines и Flowдля доставки значений с поддерживаемых платформ. Поддержка Flow(по умолчанию) является конфлицированным каналом. Этот шаблон (хотя и с другой. Рамочной реализацией рычага) в настоящее время рассматривается для включения в coroutinesxбиблиотеку от Jetbrains. Если это произойдет, API. Скорее всего. Немного изменится.

Издательский

Процесс публикации

  1. Версия удара наgradle/ext.gradle:
library_version = 'X. X. X'
  1. Публикация в локальном maven:
./gradlew publishToMavenLocal
  1. Загрузка и публикация на Maven Central:

./gradlew publishAllPublicationsToSonatypeRepository -PsigningKeyId=SIGNING_KEY_ID -PsigningPassword=SIGNING_KEY_PASSWORD -PsigningSecretKeyRingFile=SIGNING_KEY_FILE -PossrhUsername=OSSRH_USERNAME -PossrhPassword=OSSRH_PASSWORD

Где SIGNING_KEY_ID— идентификатор ключа. Связанный с ключом подписи, SIGNING_KEY_PASSWORD— пароль для ключа подписи, SIGNING_KEY_PASSWORD— файл gpg. Используемый для подписи, OSSRH_USERNAME— имя пользователя Sonatype для загрузки репозитория и

OSSRH_PASSWORDпароль учетной записи Sonatype для загрузки репозитория.

Кодовые соглашения

Проект использует обычные соглашения кода Kotlin. Это включает в себя не создание com/splendo/kalugaкаталогов. Так как они являются общими для всех других папок.

Проверка стиля кода

В этом проекте используется линтер ktlint Kotlin со стандартными правилами. Каждый компонент должен настроить плагин ktlint gradle в build.gradle.ktsфайле:

применить(плагин = org.jlleitschuh.gradle.ktlint)

Вы можете запустить Ktlint Checkконфигурацию из IDE перед фиксацией изменений в git.

Форматирование

При необходимости вы можете запустить Ktlint Formatнастройку для переформатирования исходного кода.

Более подробную информацию смотрите в документации плагинов ktlint и gradle.