Files
lastochka-messenger/lastochka-android-compose/README.md
Anton Budylin ea171ed95a first commit
2026-04-14 10:12:51 +03:00

4.6 KiB
Raw Blame History

Lastochka Android (Compose)

Мессенджер «Ласточка» для Android — Jetpack Compose + собственный Tinode HTTP-клиент.

Архитектура

MVVM + Repository pattern

UI (Compose) → ViewModel → Repository → TinodeHttpClient (OkHttp WebSocket) + Room DB

Структура

app/src/main/java/ru/lastochka/messenger/
├── LastochkaApp.kt            — Application, инициализация
├── MainActivity.kt            — Точка входа, навигация
├── data/
│   ├── TinodeClient.kt        — Высокоуровневый клиент (сессия + auth)
│   ├── TinodeHttpClient.kt    — Низкоуровневый WebSocket-клиент (OkHttp)
│   ├── ChatRepository.kt      — Repository
│   ├── local/
│   │   └── AppDatabase.kt     — Room DB
│   └── model/
│       └── TinodeProtocol.kt  — Модели Tinode-протокола
├── viewmodel/
│   ├── AuthViewModel.kt       — Вход/регистрация
│   ├── ChatListViewModel.kt   — Список чатов
│   └── ChatViewModel.kt       — Экран чата
├── navigation/
│   └── Screen.kt              — Маршруты навигации
├── di/
│   └── AppModule.kt           — Hilt модули
└── ui/
    ├── screens/
    │   ├── auth/              — LoginScreen, RegisterScreen
    │   ├── chat/              — ChatScreen
    │   └── chatlist/          — ChatListScreen
    ├── components/            — Avatar, ChatItem, MessageBubble, ...
    └── theme/                 — Color, Theme, Type

Технологии

Компонент Технология
UI Jetpack Compose + Material 3
DI Hilt 2.52 + KSP
DB Room 2.6.1 + KSP
Networking OkHttp 4.12.0 (WebSocket)
Serialization Gson 2.11.0
Async Kotlin Coroutines + Flow
Build Gradle 8.7, Kotlin 1.9.25

Быстрый старт

Требования

  • JDK 17+ (Android Studio JDK или системная)
  • Android SDK 35 (compileSdk), minSdk 26
  • Gradle 8.7

Сборка

# Windows
set JAVA_HOME=C:\Program Files\Android\Android Studio\jbr
set PATH=%JAVA_HOME%\bin;%PATH%
cd dev\lastochka-android-compose
gradlew.bat assembleDebug

# Linux/macOS
export JAVA_HOME=/path/to/android-studio/jbr
cd dev/lastochka-android-compose
./gradlew assembleDebug

Результат: app/build/outputs/apk/debug/app-debug.apk (~22 MB)

Запуск на эмуляторе

adb install app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n ru.lastochka.messenger/.MainActivity

Конфигурация сервера

Сервер настраивается в app/build.gradle.kts:

debug {
    resValue("string", "default_host_name", "app.lastochka-m.ru")
    resValue("string", "default_api_key", "AQEAAAABAAD_...")
}

Для локальной разработки измените hostName на localhost:6060 и useTLS = false.

Протокол

Приложение использует Tinode протокол поверх WebSocket:

  • Подключение: wss://host/ws + header X-Tinode-APIKey
  • Аутентификация: basic (логин/пароль) или token
  • Сообщения: plain text {"txt": "..."} (Drafty пока не поддерживается)

Подробная документация: docs/MIGRATION.md

Иконка приложения

  • Источник: Brand/logo2.png (ласточка, градиент blue→purple)
  • Формат: Adaptive Icons (Android 8+)
  • Плотности: mdpi (48px), hdpi (72px), xhdpi (96px), xxhdpi (144px), xxxhdpi (192px)
  • Play Store: 512×512px
  • Splash: PNG в 5 плотностях (120480px)

Известные ограничения

  • Только текстовые сообщения (нет Drafty, файлов, изображений)
  • Нет push-уведомлений
  • Нет видеозвонков
  • Нет E2E шифрования

Планы

  • Drafty парсер для форматированных сообщений
  • Загрузка файлов/изображений
  • Push-уведомления (Firebase)
  • Offline-кэш сообщений
  • Видеозвонки (WebRTC)

Лицензия

Apache-2.0 (форк HuLa + Tinode)

© 2026 Ласточка