Files
IKAR/src/Ikar.AndroidKotlin

Ikar Android Kotlin

Отдельный Android-клиент на Kotlin/Jetpack Compose, создаваемый как поэтапная замена текущего MAUI-клиента.

Что уже перенесено в этом проекте:

  • базовая Gradle/Android-структура
  • Compose-приложение с экранами Login, Chats, Chat
  • HTTP-клиент к ikar.kusoft.xyz
  • хранение сессии
  • прямой Android update manifest через argus.kusoft.xyz
  • базовая модель данных, совместимая с текущими DTO Ikar.Shared

Что еще не перенесено:

  • push/FCM
  • SignalR realtime и звонки
  • запись и проигрывание voice notes
  • загрузка вложений и аватаров в полном объеме
  • контакты телефона, профиль, настройки, боты и остальная функциональность MAUI-клиента

Текущее состояние нужно считать рабочим стартом переписывания, а не полным feature parity.

Подготовка к публикации в Argus

  • Локальная release-подпись хранится в gitignored файлах argus-signing.local.properties и signing/.
  • Единая координата публикации для клиента Икар: slug ikar-android, channel stable, platform android. Именно этот manifest запрашивают текущий Android-клиент и серверный proxy обновлений.
  • Публикация новых версий в Argus выполняется только по инструкции G:\Repos\Marketplace\ARGUS_PUBLICATION.md. У Argus больше нет HTTP admin API/upload endpoint для публикации: файл релиза передается на Pi по SSH, кладется в /srv/argus-data/Packages, а запись релиза добавляется в /srv/argus-data/argus.db.
  • Первый запуск локального signing pipeline:
    • .\scripts\new-argus-upload-keystore.ps1
  • Подготовка signed APK и metadata JSON для Argus:
    • .\scripts\prepare-argus-publication.ps1
  • Публикация уже подготовленного APK:
    • .\scripts\publish-release.ps1 -SshPassword "<ssh-password>" -Slug "ikar-android" -Name "Ikar" -Summary "<summary>" -Description "<description>" -Version "<version>" -PackagePath "<apk>"

Скрипт подготовки собирает release APK, проверяет подпись и извлекает из самого APK:

  • androidPackageName
  • androidVersionCode
  • version
  • targetSdkVersion
  • ABI/platform

После этого он складывает готовый APK и metadata JSON в build/argus-publication/v<versionCode>/.