- .gitea/workflows/ci.yml: push/PR → testDebugUnitTest+lintRelease+assembleDebug;
тег v* → подписанный assembleRelease + архив исходников в Gitea Release.
Gitea 1.26.1 поддерживает Actions. Self-hosted раннер (метка f7-android),
т.к. проект тяжёлый (WebRTC) и нужен тёплый Gradle-кэш.
- scripts/package-source.sh: GPL corresponding source (§6) — архив всего дерева
вкл. vendor talk-android (GPL), LICENSE, NOTICE. Проверен: 6.7 МБ, 2353 файла.
Закрывает п.4c, работает и вручную до появления раннера.
- docs/CI.md: пайплайн, регистрация раннера, secrets.
НЕ активно до регистрации раннера на инфре B (нужен Gitea-админ для токена).
- org.gradle.parallel=true (быстрее сборка 20 модулей)
- удалены core:data, core:ui (пустые заготовки) и feature:widgets (не в
settings.gradle, не компилировался) + чистка settings.gradle
- nonTransitiveRClass=true и убирание enableJetifier ОТКАЧЕНЫ: vendor-форк
talk-android их не переживает (R транзитивно; legacy android.support.* в
зависимостях типа FlexibleAdapter). Причины — в комментах gradle.properties.
Проверено сборкой: assembleRelease BUILD SUCCESSFUL. Этап 0 закрыт.
Владелец: входящие звонки и push должны работать при заблокированном телефоне.
- Биопривязка app password ОТКЛОНЕНА (вариант А): блокировала приём звонка без
разблокировки. Откачена из main (сохранена на ветке wip/biometric-binding).
Пароль остаётся под Keystore AES-256-GCM (п.3) — работает в фоне.
- Приватность локскрина: сообщения и звонки → VISIBILITY_PRIVATE + generic
public-версия ('Новое сообщение'/'Входящий звонок'); канал lockscreenVisibility=PRIVATE.
Полный контент — после разблокировки. Push приходит plaintext, для показа/звонка
пароль не нужен → звонки звонят и пуши приходят при блокировке.
Проверено сборкой: assembleRelease BUILD SUCCESSFUL, APK 53 МБ.
Приложение линкует vendored Nextcloud Talk (GPL-3.0-or-later), поэтому весь APK —
производная работа под GPL. Восстановление затёртых копирайтов Nextcloud в vendor
(п.4b) — отдельно, точной сверкой с апстримом talk-android v23.0.0.
- defaultConfig.ndk.abiFilters 'arm64-v8a','armeabi-v7a' — без эмуляторных x86/x86_64
- resourceConfigurations += ['ru','en'] — срез ~48 локалей vendor до нужных
- проверено сборкой: assembleRelease 53 МБ, ABI только ARM, подпись v2+v3 OK
- renderscriptSupportModeEnabled в vendor НЕ трогал (риск blur, отдельный пункт)