Попередній Наступний

SDK для криптогаманця на основі Kotlin Multiplatform

Індустрія Фінтех
Розташування Україна
Розробка 2021

Завдання

До нас надійшла бізнес-задача розробити 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 розробник

  • Антон
    Антон

    Менеджер по роботі з клієнтами