SDK для криптогаманця на основі Kotlin Multiplatform
Завдання
До нас надійшла бізнес-задача розробити SDK для мобільних платформ Android та IOS з використанням Kotlin Multiplatform для криптовалютної біржі.
Рішення
Однією із задач було об’єднати бізнес логіку та використовувати одну й ту ж кодову базу на різних платформах. Для цього ми використали технологію Kotlin Multiplatform, що дозволила використовувати одні й ті ж бізнес моделі, процеси, запити, внутрішню обробку даних і шифрування на усіх цільових платформах.
Об’єднання бізнес логіки дозволило:
- використати ті самі методи для отримання даних та їх представлення;
- ідентичну обробку помилок і проміжних станів.
До прикладу, обробка цифрових значень високої точності на обох платформах відбувається однаково.
Для взаємодії з UI додатків були розроблені інтерфейси, реалізація котрих жорстко визначить стани, формат отримання даних та помилок.
Розробка
Розробка відбувалась в кілька етапів:
- Ознайомлення з KMM і вимогами безпеки.
- Формування, реалізація контрактів і запитів на API за допомогою apiary.io.
- Розробка загальної архітектури SDK.
- Розробка архітектури додатку та інтеграція SDK в додаток.
- Правки SDK для коректної роботи корутинів на iOS.
Серед всього флоу розробки найважливішим була розробка архітектури для SDK. У ході розробки була взята Clear Architecture з використанням Interactor-ів. Також довелось виокремити платформозалежний код в окремий підмодуль з зовнішньою реалізацією безпосередньо на платформах. До прикладу, одним з таких виокремлень стали модулі RSA та HMAC.
Найскладнішим етапом була інтеграція SDK на платформи. Справа в тому, що в залежності від версії мови Kotlin, змінювався принцип генерації та експорту iOS модуля. Попередні підходи до генерації були видалені як застарілі, а нові працювали некоректно. Рішенням стала генерація 2 різних модулів під різні архітектури (на базі процесорів Intel і процесорів M серії) та подальшим мерджем в універсальний модуль. Фінальним рішенням став гібридний проект iOS та Android додатку, що використовував внутрішні залежності обох проектів з платформ.
Перемогою стала реалізація власного Coroutine Scope для iOS додатків, оскільки iOS та Android платформи мають різний підхід до роботи з потоками. Усі запити були обгорнуті в загальні інтерактори, які використовувались на кожній з платформ, що дозволило однаково опрацьовувати дані й обробляти помилки.
Результат
Нам вдалося розробити готове до використання SDK на основі Kotlin Multiplatform. Дане SDK об’єднує в собі бізнес логіку, інкапсулює всі внутрішні процеси, які відповідають за шифрування, зберігання даних та авторизацію.
Команда проєкту:
- Андрій
Android розробник
- Антон
Менеджер по роботі з клієнтами
Інші наші проєкти
Додаток для роботи з розумним замком
Проект під NDAs, США
CopeCart
Розробка нативних додатків Android та iOS для моніторингу продажів електронної дистрибуції, Німеччина
Керування вуличними сиренами
Прилад для оповіщення за допомогою сирен і AUX-сумісних аудіосистем