Files
sevenhill b22654b99f
Build Android (FCM) / build-android-fcm (push) Canceled after 0s
Build Android / build-android (push) Canceled after 0s
Build iOS / build-ios (push) Canceled after 0s
Build Linux / build-linux (push) Canceled after 0s
Build macOS / build-macos (push) Canceled after 0s
Build Windows / build-windows (push) Canceled after 0s
Native crypto / native-crypto (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
Update Qlyra to 1.0.13 with messaging, media and plugin improvements
2026-09-10 17:55:55 +03:00

3.0 KiB
Raw Permalink Blame History

Qlyra Logo

Qlyra

Кроссплатформенный клиент для мессенджера MAX.

Android

Основной вариант приложения использует идентификатор ru.qlyra.app и flavor qlyra.

Сборка из исходного кода

Используйте Flutter 3.44.3, Rust и Java 17 для Android. Перед запуском тестов соберите нативную библиотеку шифрования:

flutter pub get
cargo build --locked --manifest-path native/qlyra_crypto/rust/Cargo.toml
cargo test --locked --manifest-path native/qlyra_crypto/rust/Cargo.toml
flutter test --no-pub
flutter analyze --no-pub --no-fatal-infos lib test

Криптотесты требуют библиотеку для текущей ОС в native/qlyra_crypto/rust/target/debug. Другой путь задаётся переменной QLYRA_CRYPTO_LIBRARY. Отсутствие библиотеки считается ошибкой проверки.

Для release-сборки Android обязателен локальный android/key.properties с полями storeFile, storePassword, keyAlias, keyPassword. Используйте тот же ключ, которым подписана установленная версия. Без ключа release-сборка останавливается. Для разработки доступна flutter build apk --debug --flavor qlyra.

Release-варианты подключают Flutter JNI через Android Components API. Перед удалением отладочных символов задача verifyQlyraReleaseFlutterJni (или verifyOnemeReleaseFlutterJni) сверяет SHA-256 скомпилированных и объединённых библиотек и останавливает упаковку при несовпадении.

$ flutter build [windows|linux] [--release]
$ flutter build apk --release --flavor qlyra

Отправка текста проходит через OutgoingText и OutboxQueue: в БД сохраняются подготовленный текст, постоянный cid и срок повторной попытки. При включённом шифровании в очереди находится шифротекст. Подтверждение заменяет временную запись одной транзакцией. Старые pending-записи без метаданных подготовки получают статус ошибки и автоматически не отправляются.

cid сохраняется при повторе; серверная дедупликация зависит от реализации сервера MAX. Локальные тесты моделируют потерю ответа и не заменяют проверку этого поведения на сервере.