L×Box v2.15.8
«Stopped: VPN revoked by another app» больше не пугает. Когда VPN-слот
забирало другое приложение, L×Box показывал сырую внутреннюю строку — она
читалась как поломка самого приложения, хотя описывала штатную ситуацию: Android
держит один VPN-слот, и его перехватил другой VPN-клиент.
Теперь на этом месте текст, который объясняет причину и что делать. Разбор
жалобы вскрыл, что вся ветка обработки перехвата не работала с первого коммита
проекта: сообщение о перехвате не доезжало от системного слоя до интерфейса.
Quick links:
🆕 Что нового ·
🔧 Под капотом ·
⚠️ Важно понимать ·
📲 Install
🆕 Что нового
-
Понятное сообщение при перехвате VPN-слота (§276, §224):
Текст на экране Было Stopped: VPN revoked by another appСтало Another VPN app took the system VPN slot (e.g. an always-on VPN). Start again to reconnect.Причина перехвата почти всегда одна: второе VPN-приложение с Always-on /
kill-switch или автозапуском отбирает единственный системный VPN-слот. Найти
виновника можно кнопкой VPN settings в диалоге «Another VPN is active» —
на системном экране активный VPN помечен как Connected. -
Признак перехвата переживает сворачивание приложения. Если слот забрали,
пока L×Box был в фоне, при возврате состояние больше не выглядит как обычное
«Disconnected». -
Убран дублирующий всплывающий блок. При перехвате показывались два
сообщения подряд: второе мгновенно затирало первое, юзер видел мелькание.
Осталось одно.
🔧 Под капотом
-
Починен контракт статуса между системным слоем и интерфейсом (§276).
Интерфейс ожидал статусRevoked, которого системный слой не отправлял
никогда — там всего четыре статуса (Stopped/Starting/Started/
Stopping). Перехват приезжал как обычная остановка, поэтому весь UX
перехвата (§003 / §224 / §241) был недостижимым кодом.Признак перехвата теперь едет отдельным флагом рядом со
Stopped, а не пятым
статусом: терминальный статус обязан остаться прежним — на нём завязана вся
процедура остановки туннеля (Stop, Reconnect из шторки, force-stop). Пятый
статус подвесил бы остановку до таймаута. -
Проверено на устройстве — впервые за историю проекта UX перехвата
протестирован живьём, вторым VPN-клиентом на реальном телефоне. -
Тесты: 1904 (+11). Прежний тест этой ветки сам подставлял несуществующий
статусRevoked— то есть закреплял сломанный контракт и потому был зелёным. -
Доки: контракт статусов в
012 native vpn serviceпротиворечил сам себе —
объявлялRevokedи тут же описывал отправкуStopped; приведён к
реальности. В §003 / §224 добавлен разбор, почему дыру не замечали.
⚠️ Важно понимать
Это исправление делает причину видимой, но не устраняет перехват. Если VPN
отваливается регулярно — на устройстве работает другое VPN-приложение,
забирающее слот. Проверьте:
- Настройки → Сеть → VPN — нет ли второго клиента с включённым Always-on;
- автозапуск у второго VPN-клиента;
- на Samsung — встроенный Secure Wi-Fi: это тоже VPN, он умеет включаться
сам при подключении к Wi-Fi.
📲 Install
adb install -r LxBox-v2.15.8-arm64-v8a.apkБез uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
Предыдущий релиз: v2.15.7.