ZapretKVN-android/docs/SOURCE_LAYOUT.md
loop-uh 13ec9959af
All checks were successful
Android CI / build (push) Successful in 25m17s
release: Android-выпуск под тегом v0.5.0 вместо v0.9.0
Заморозка ядер для пары Windows 0.8.21 / Android v0.5.0 (ядра без
изменений). Тег v0.9.0 не публиковался.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:43:15 +03:00

3.9 KiB
Raw Permalink Blame History

Карта исходников

Раскладка Android и Windows выполнена 2026-09-05. Перенос файлов не изменяет поведение соединения, формат профилей или статус готовности нового WG/AWG runtime. Старые forwarding/shim-копии не оставлены.

Android

app/src/main/java/io/github/zapretkvn/android/
├── vpn/                 сервис, контроллер, состояние и recovery VPN
├── engines/
│   ├── singbox/         libbox setup, iterators, selector reconciliation
│   └── hysteria/        runtime/recovery contract
├── network/             Android DNS, underlying network, bootstrap
│   └── probes/          health, latency, ping, external IP
├── platform/            Android TUN/socket adapter и системная VPN policy
├── apps/                обнаружение/выбор приложений, per-app scope, ViewModel
├── diagnostics/         исходные ошибки, журнал, метрики и экспорт
├── profiles/            хранение и редактирование профилей
├── importer/            импорт ключей, QR и подписок
├── config/, routing/    native JSON и правила
├── updates/             обновления приложения
└── ui/                  Compose-интерфейс: AppRoot, nav/, home/, servers/,
                         routing/, apps/, settings/ (экран + презентер на пакет)

core/
├── ui-model/            чистые форматтеры и тексты (без Android и домена)
└── designsystem/        тема, токены, общие Compose-компоненты, иконки

ZapretVpnService и ZapretQuickSettingsTileService остаются в пакете vpn: их имена используются Android, поэтому перенос внутренностей не меняет системные ComponentName, applicationId, профили и сохранённые настройки.

Четыре движка сохраняют прежние границы: sing-box исполняет routing/DNS и владеет единственным системным TUN; Xray, Hysteria и Amnezia WG/AWG обслуживают свой transport. Встроенные Go-адаптеры изменяются через core-patches. Пустые Kotlin-пакеты Xray/Amnezia не создаются. Для движков и рантайма отдельные Gradle-модули тоже не создаются; исключение — UI-модули core/ui-model и core/designsystem (0.5.0): они не знают про VPN, профили и сторы.

Существующие app-updater, network-bootstrap, wireguard-import остаются независимыми библиотеками. Тесты перенесённых компонентов также распределены по соответствующим пакетам.

Windows

В xray_fluent оставлены только корневые __init__.py и constants.py. Код сгруппирован по application, engines/<core>, profiles, importer, diagnostics, network, platform/windows, updates, ui. Go-реле — самостоятельный модуль runtime/amnezia.

Проверка структуры

scripts/verify-project.sh, :app:testDebugUnitTest, :app:assembleDebugAndroidTest. Windows выполняет свой полный host-набор. ADB необязателен; сборка instrumentation APK не считается device-прогоном. Публикация stable и функциональная приёмка нового WG/AWG — отдельные gates.