
Ранее приложение ADAMANT для Android создавалось с помощью PWABuilder, что накладывало несколько ограничений: отсутствие контроля над целевым уровнем API, доступа к нативному коду и поддержки автоматизации. С обновлением PWA до версии 4.7 приложение перешло на Capacitor.js, чтобы получить полный контроль над нативным кодом, возможность запуска нативных функций, таких как push-уведомления и камера через Cordova API, оптимизацию кода, поддержку пользовательских плагинов и автоматизацию CI/CD.

Почему выбран Capacitor.js?
ADAMANT Messenger — децентрализованная платформа для обмена сообщениями, в которой приоритет имеют производительность, безопасность и удобство сопровождения. Capacitor.js был выбран, поскольку он интегрируется без проблем с современными веб-фреймворками, такими как Vue.js, позволяет использовать единый кодовой базис для iOS, Android и веб-платформы, обеспечивает доступ к нативным API, не жертвуя веб-опытом, и поддерживается активным сообществом с подробной документацией.

Сравнение: Native Android, PWABuilder и Capacitor.js
Разработка под Native Android предоставляет полный доступ ко всем функциям и API Android, высокую производительность и детальный контроль над интерфейсом и функциональностью, но требует знаний Java или Kotlin, отдельной кодовой базы для каждой платформы, а также увеличивает стоимость и сроки разработки.
PWABuilder упрощает преобразование PWA в нативное приложение с минимальной настройкой и быстрым развёртыванием, что подходит для простых приложений с ограниченной нативной функциональностью. Однако он предоставляет ограниченный доступ к функциям устройства, производительность может уступать полностью нативным приложениям, а также возникает зависимость от стороннего сервиса конвертации.
Capacitor.js обеспечивает кроссплатформенную единую кодовую базу с доступом к нативным API и плагинам, поддержку современных инструментов и фреймворков веб-разработки, а также активное сообщество и регулярные обновления. Компромиссами являются небольшой порог вхождения для тех, кто не знаком с мостами между веб и нативным кодом, а также необходимость создания пользовательских плагинов для некоторых нативных функций.
Техническая реализация
Приложение для Android собирается нативно с использованием Capacitor.js и GitHub Actions. В реализацию добавлен workflow для GitHub Actions, конфигурация Capacitor, файлы манифеста Android, изображения заставки и иконки приложения, а также скрипт сборки. Полный перечень изменений доступен в pull request на GitHub.
