О клиенте
Наш клиент — крупная компания в сфере цифрового издательства, предоставляющая авторам платформу для создания, публикации и продажи электронных книг.
Для читателей компания разработала мобильные приложения для iOS и Android, объединяющие книжный интернет-магазин, персональную библиотеку и ридер. Приложения позволяли приобретать и скачивать книги, читать их без подключения к интернету, синхронизировать прогресс чтения между устройствами, настраивать шрифты и фон, использовать синтез речи, создавать закладки и заметки, а также взаимодействовать с авторами и другими читателями.
К моменту начала проекта мобильная платформа развивалась более восьми лет. За это время приложения накопили значительный объем бизнес-логики, множество интеграций, платформозависимый код и устаревшие программные компоненты, что усложняло их сопровождение и дальнейшее развитие.
- Отрасль: Цифровое издательство, электронные книги
- Платформы: iOS, Android
- Сроки: Около 18 месяцев
Задача проекта
Мобильные приложения клиента были разработаны на Xamarin, жизненный цикл которого подходил к концу.
Задача проекта заключалась в переходе на современный технологический стек без остановки работы продукта. При этом новая платформа должна была не только сохранить существующую функциональность, но и обеспечить поддержку интерактивных книг, мультимедиа, взаимодействия между читателями и новых возможностей на базе ИИ.
Основными задачами проекта стали:
- Миграция с Xamarin на Flutter: Перейти на современную кроссплатформенную технологию до прекращения поддержки Xamarin.
- Сохранение функциональности: Перенести существующие пользовательские сценарии без потери ключевых возможностей приложения.
- Модернизация читалки: Заменить устаревший движок для работы с электронными книгами на SDK epuBear.
- Сокращение технического долга: Переработать архитектуру, упростить сопровождение и повысить тестируемость приложения.
- Непрерывное развитие продукта: Продолжать выпускать новые функции на протяжении всей миграции.
- Подготовка к внедрению ИИ: Создать архитектурную основу для рекомендаций, контекстного перевода, кратких пересказов и ИИ-ассистента, работающего непосредственно на устройстве.
Обзор проекта
Команда СКЭНД выбрала стратегию поэтапной модернизации: пока приложение на Xamarin продолжало работать и получать необходимые обновления, параллельно разрабатывалась новая версия на Flutter с модульной архитектурой.
Вместо автоматического переноса кода команда последовательно воссоздавала пользовательские сценарии, повторно используя существующие API, механизмы аутентификации и контракты данных. Для каждого компонента определялась оптимальная стратегия: сохранить, переработать, переписать или заменить.
Устаревший движок для чтения электронных книг заменили на SDK epuBear с поддержкой EPUB. Параллельно проводились автоматизированное тестирование и проверка функционального соответствия. После подтверждения стабильности новой версии приложение на Xamarin вывели из эксплуатации.
Решение
Команда СКЭНД разработала новое мобильное приложение на Flutter для iOS и Android с модульной архитектурой, общей бизнес-логикой и нативными интеграциями. Это позволило сократить дублирование кода и упростить сопровождение продукта.
Устаревший движок для чтения электронных книг заменили на SDK epuBear с поддержкой EPUB, навигации и пагинации. Новая архитектура также подготовлена к внедрению интерактивных книг, мультимедиа, функций сообщества и ИИ-инструментов: рекомендаций, перевода, кратких пересказов и локального ИИ-ассистента.
Основные возможности приложения
- Кроссплатформенное приложение. Единая кодовая база Flutter для iOS и Android.
- Электронный ридер. SDK epuBear для отображения EPUB-книг, навигации и пагинации.
- Книжный магазин и библиотека. Поиск, покупка и организация электронных книг.
- Офлайн-чтение и синхронизация. Доступ к книгам без интернета и синхронизация прогресса между устройствами.
- Персонализация чтения. Настройка шрифтов и фона, закладки, заметки и синтез речи.
- Мультимедийный контент. Подготовка платформы к поддержке интерактивных книг, аудио и видео.
- Модульная архитектура. Упрощение сопровождения, тестирования и расширения приложения.
- Нативные интеграции. Использование Swift и Kotlin для платформоспецифичных функций.
- Поддержка ИИ. Архитектурная основа для рекомендаций, перевода, кратких пересказов и ИИ-ассистента.
Технологический стек
Для миграции мобильного приложения, интеграции движка электронных книг и подготовки платформы к дальнейшему развитию использовались следующие технологии и инструменты:
- Мобильная разработка: Flutter, Dart
- Управление состоянием и навигация: Riverpod, go_router
- Сетевое взаимодействие и модели данных: Dio, Freezed
- Локальное хранение данных: Drift, SQLite
- Ридер и нативные интеграции: epuBear SDK, Swift, Kotlin, Flutter Platform Channels, Dart FFI
- ИИ и машинное обучение: ONNX Runtime, llama.cpp, LiteRT (ранее TensorFlow Lite), OpenAI API, Python
- Тестирование: flutter_test, integration_test, Mocktail, Patrol, Firebase Test Lab
- CI/CD и распространение приложений: GitHub Actions, Fastlane, Firebase App Distribution
- Мониторинг и отслеживание ошибок: Firebase Crashlytics, Sentry
Результаты
Поэтапная модернизация позволила заменить мобильную платформу на Xamarin до прекращения поддержки технологии и продолжить развитие продукта без остановки разработки.
Ключевые результаты проекта:
- 100% миграции завершено до окончания поддержки Xamarin.
- Около 90% общей кодовой базы используется для iOS и Android.
- На 30% сократился цикл разработки новых функций.
- На 45% снизились трудозатраты на регрессионное тестирование.
- Более 99,5% пользовательских сессий проходят без сбоев приложения.
- На 25% ускорен перенос типовых компонентов благодаря применению ИИ в разработке.