b-dev-mobile 67cc851b15 Этап 0 п.1: release собираем и подписан (signingConfig из env + R8-правила)
- signingConfig.release читает F7_KEYSTORE_FILE/PASSWORD, F7_KEY_ALIAS/PASSWORD
  из env или -P; фолбэк на debug-подпись если не заданы. Схемы v2+v3.
- R8: app/proguard-rules.pro (kotlinx.serialization, Firebase, JS-мосты, Coil);
  vendor consumer-rules.pro через consumerProguardFiles (WebRTC/LoganSquare/Dagger/
  RxJava/Parceler/EventBus + dontwarn geogson/joda из missing_rules.txt).
- Проверено на инфре B (JDK 21 + Android SDK 36): assembleRelease BUILD SUCCESSFUL,
  подписанный APK 99 МБ (было ~130 debug), apksigner verify v2+v3 OK.
- Доки: docs/RELEASE-SIGNING.md, docs/AUDIT-2026-07-07.md.
2026-07-07 13:17:20 +00:00

F7cloud Mobile (native)

Нативное Android-приложение F7cloud на Kotlin + Jetpack Compose.

Параметр Значение
applicationId ru.forbion.f7cloud.mobile
minSdk 26
compileSdk / targetSdk 36
Gradle 9.3.0
AGP 8.13.2
Kotlin 2.3.0
Модули app, core (auth, network, designsystem, push), feature (widgets, files, talk, mail, …)

Сборка APK

С v0.5.27 используется собственный Gradle wrapper в этом каталоге (Gradle 9.3, AGP 8.13, Kotlin 2.3):

cd /var/www/f7cloud/f7cloud-mobile
./gradlew assembleDebug
chown www-data:www-data app/build/outputs/apk/debug/*.apk

Старый способ через android-webview (Gradle 8.7) больше не поддерживается — там AGP 8.2, несовместим с Kotlin 2.3.

Release:

./gradlew assembleRelease

APK с версией в имени:

app/build/outputs/apk/debug/f7cloud-mobile-v{versionName}-{versionCode}-debug.apk

Структура навигации

Мобильный UI повторяет мобильную версию сайта (тема forbion):

  • нижняя панель: Talk, Профиль, Уведомления, Создать, Меню;
  • меню приложений — bottom sheet со списком модулей;
  • стартовый экран после входа — Главная (виджеты / Dashboard).

Модуль «Файлы»

  • Список папок и файлов через WebDAV PROPFIND (oc:fileid для идентификации).
  • Навигация по папкам, кнопка «Назад».

Word / Excel / PowerPoint (Richdocuments)

Office-документы открываются в Collabora Online через Richdocuments:

  1. По fileId (WebDAV или ссылка /f/{id} с виджетов) → Direct Editing API: POST /ocs/v2.php/apps/richdocuments/api/v1/document.
  2. Полноэкранный WebView (OfficeEditorActivity) с:
    • RichDocumentsMobileInterface (см. apps/richdocuments/docs/mobile_flow.md на сервере) — скрывает оболочку F7cloud;
    • desktop User-Agent — полная панель инструментов Collabora;
    • поддержка iframe Collabora (coll.f7cloud.ru).

Где работает: модуль Файлы и виджет Рекомендации на Главной (клик по .docx / .xlsx).

Поддерживаемые расширения: см. OfficeFiles.kt.

Требования на сервере: richdocuments + Collabora (у вас: https://coll.f7cloud.ru).

Модуль «Главная» (Widgets)

Данные с Dashboard API F7cloud:

Endpoint Назначение
/ocs/v2.php/apps/dashboard/api/v1/widgets метаданные виджетов
/ocs/v2.php/apps/dashboard/api/v3/layout порядок виджетов пользователя
/ocs/v2.php/apps/dashboard/api/v2/widget-items элементы (Talk, Mail, Calendar)
/ocs/v2.php/apps/dashboard/api/v1/widget-items?widgets[]=recommendations блок «Рекомендации»

Запросы выполняются параллельно (WidgetsRepository, с v0.5.4).

Производительность

Клиент (приложение)

Версия Изменение
≤ 0.5.3 4 последовательных запроса → до ~30 с
≥ 0.5.4 параллельные запросы, layout с таймаутом 2 с, v1 только для recommendations → ~24 с

Сервер

Перед релизом или при жалобах на медленную «Главную» проверьте сервер:

docs/SERVER-PERFORMANCE.md

Кратко для forbion.f7cloud.ru (2026-05-30):

  • OPcache включён (FPM: 256 MB, 100k файлов)
  • Redis + APCu для кеша F7cloud
  • PHP-FPM: min 18 spare workers, старт 30

Первый API-запрос после простоя сервера может занимать 15–20 с — это холодный bootstrap PHP/F7cloud, не ошибка приложения.

Авторизация

  • Используется тот же пароль, что и для веб-входа (или пароль приложения при 2FA).
  • OCS /ocs/v2.php/cloud/user — проверка и получение davUserId для WebDAV.

Связанные проекты

S
Description
No description provided
Readme GPL-3.0 10 MiB
Languages
Kotlin 99.4%
JavaScript 0.5%