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, которое объединяет в себе бизнес логику, инкапсулирует все внутренние процессы, отвечающие за шифрование, хранение данных и авторизацию.
Команда проекта:
- Андрей
Android разработчик
- Антон
Менеджер
Другие наши проекты
Приложение для работы с умным замком
Проект под NDAs
CopeCart
Разработка нативных приложений Android и iOS для мониторинга продаж электронной дистрибуции, Германия
Прибор для управления уличными сиренами
Прибор для удаленного управления уличными сиренами оповещения