Android-клиент
Android app встраивает KnotRoute core через gomobile AAR. Отдельный desktop/daemon на телефоне не нужен.
Первый запуск
Заголовок раздела «Первый запуск»Рекомендуемый путь:
- Получить QR/deep-link из KnotRoute Control.
- Открыть
knotroute://join?...на устройстве. - Проверить Network ID и список Beacon.
- Сохранить network profile.
- Запустить соединение.
- При необходимости HTTPS установить локальный CA через системный Android dialog.
Network profiles
Заголовок раздела «Network profiles»Приложение поддерживает несколько профилей, например:
ProductionTestHomeLabУ каждого профиля собственные Network ID, Beacon URLs и client settings.
Встроенный браузер
Заголовок раздела «Встроенный браузер».knot-сайт можно открыть прямо в приложении. WebView направляется в локальный KnotRoute HTTP proxy.
Приложение не использует VpnService, поэтому не претендует на системный VPN slot.
HTTPS CA
Заголовок раздела «HTTPS CA»Android не позволяет приложению молча добавить пользовательский Root CA. KnotRoute вызывает штатный системный installation UI; действие подтверждает пользователь.
KnotRoute WebView не должен обходить TLS errors через proceed() — ошибка сертификата считается ошибкой подключения.
QR и deep links
Заголовок раздела «QR и deep links»Control генерирует URI с onboarding-параметрами, например:
knotroute://join?network_id=kn_...&name=Production&beacon=https%3A%2F%2Fbeacon.example.netВ QR нет private key. Он передаёт bootstrap profile, а не identity пользователя.
Диагностика
Заголовок раздела «Диагностика»Если профиль сохранён, но соединения нет, проверьте:
- правильный Network ID;
- доступность Beacon по HTTPS;
- наличие Internet connectivity;
- foreground service permission/notification;
- системное время устройства;
- logs/diagnostics внутри приложения.
Для проблем конкретно с .knot страницей смотрите troubleshooting клиентов.
Состояния запуска приложения
Заголовок раздела «Состояния запуска приложения»Foreground service стартует отдельно от Activity и удерживает embedded KnotRoute core. В интерфейсе состояния следует читать так:
Запуск… core ещё создаётся/перезапускаетсяПодключено embedded node и HTTP proxy поднятыОшибка core не стартовал; смотрите «Диагностика»Статус Подключено означает готовность локального core, а не гарантирует, что уже найден remote peer. Для сетевой диагностики всё равно проверяйте Beacon/profile и доступность test service.
Edge-to-edge и системные панели
Заголовок раздела «Edge-to-edge и системные панели»Начиная с современных target SDK Android применяет edge-to-edge layout. KnotRoute учитывает status/navigation bars и display cutout через WindowInsets, поэтому header и нижняя навигация не должны уходить под системные панели.
Если после обновления старый APK всё ещё рисуется под status bar, сначала убедитесь, что установлен именно новый build, а не предыдущий artifact.
Перезапуск после смены профиля
Заголовок раздела «Перезапуск после смены профиля»После Сохранить и перезапустить приложение:
- сохраняет выбранный Network Profile;
- просит foreground service выполнить restart;
- останавливает старый embedded core;
- запускает новый core с обновлёнными Network ID/Beacon;
- повторно применяет WebView proxy, когда core действительно готов.
Это устраняет старую гонку, когда WebView создавался раньше core и оставался без proxy до полного перезапуска приложения.
Какие поля нужны обычному пользователю
Заголовок раздела «Какие поля нужны обычному пользователю»Основные:
- имя профиля;
- Network ID;
- Beacon URL.
Количество circuit hops спрятано в Дополнительные настройки. Оставляйте default, пока не диагностируете конкретную topology проблему.
Правильный Beacon URL
Заголовок раздела «Правильный Beacon URL»Допустимо:
https://beacon.example.nethttp://192.168.1.10:8080Недопустимо:
http://beacon.example.net:7447https://beacon.example.net/some/path7447 — relay transport. Android-клиент теперь проверяет это до сохранения профиля.
Что копируется из «Диагностики»
Заголовок раздела «Что копируется из «Диагностики»»Раздел показывает как минимум node address, локальный HTTP proxy и последнюю ошибку core. Эти данные удобно прикладывать к bug report, но не публикуйте private identity/CA key или contents app private storage.
Если WebView не открывает .knot
Заголовок раздела «Если WebView не открывает .knot»Проверяйте в таком порядке:
- core имеет состояние «Подключено»;
- профиль содержит правильный Network ID;
- Beacon HTTP(S) URL доступен с телефона;
- сервис открывается с другого KnotRoute client;
- только после этого проверяйте CA/TLS для
https://...knot.
Для изоляции TLS проблемы можно диагностировать plain HTTP .knot endpoint, если конкретный сервисный сценарий это допускает. Сам overlay traffic при этом остаётся защищён KnotRoute service session; browser HTTPS — отдельный локальный compatibility layer.