Предыдущий проект Следующий проект

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, которое объединяет в себе бизнес логику, инкапсулирует все внутренние процессы, отвечающие за шифрование, хранение данных и авторизацию.

Над проектом работали:

  • Андрей
    Андрей

    Android разработчик

  • Антон
    Антон

    Менеджер