PRO1 Лента — Android-прототип 0.1.3

Отдельный проект; пакет ru.pro1vpn.lenta. Минимальная версия платформы:
Android 7.0 (API 24). Для работы сайта нужен актуальный Android System WebView.

Что работает в текущей версии

- Веб-версия TikTok внутри приложения с собственными кнопками навигации.
- Поиск авторов, тем и хештегов; открытие страницы входа TikTok.
- Сохранение веб-сессии стандартным CookieManager и DOM storage.
- Открытие TikTok-ссылок из текста и системного меню «Поделиться».
- Отдельный плеер для известного ролика через официальный TikTok Embed Player.
- Собственные кнопки пуска, паузы, звука, сохранения ссылки и «Поделиться».
- Локальная подборка до 200 роликов; пролистывание сохранённых роликов.
- Полноценная веб-лента с адаптацией под экран; открытие PRO1VPN или настроек VPN.
- Обработка сетевой ошибки и возврат из плеера к сайту.

Это прототип с веб-лентой. Собственная нативная лента через неофициальный
API, SIM spoof и изменение региона аккаунта в первой версии не реализованы.
Сохранение ролика здесь означает добавление ссылки в локальную подборку,
а не лайк или добавление в избранное аккаунта TikTok. Для действий в аккаунте
используется сайт TikTok. Доступность и актуальность видео зависят от TikTok,
аккаунта, IP-адреса и подключения пользователя.

Проверка на телефоне

1. Установить release/PRO1-Lenta-0.1.3-test.apk.
2. Включить PRO1VPN и выбрать зарубежный сервер. Если используется выбор
   приложений для VPN, включить в него PRO1 Лента (ru.pro1vpn.lenta).
3. Открыть ленту и проверить даты публикации нескольких роликов.
4. Проверить ленту после входа в аккаунт и после перезапуска приложения.
5. Через кнопку «+» открыть ссылку на отдельный ролик и проверить плеер.
   Для короткой vm.tiktok.com / vt.tiktok.com ссылки сначала загружается сайт;
   приложение открывает отдельный плеер, когда получает полный адрес ролика.

APK подписан стандартным отладочным ключом среды разработки и предназначен
для первого теста. Действующий клиент PRO1VPN использует другой пакет.
В приложении нет встроенных VPN-ключей или стороннего сервера авторизации.

Сборка

JDK 21, Android SDK 37, Gradle Wrapper 9.5.1, Android Gradle Plugin 9.2.1.
Настроить путь к SDK в local.properties: sdk.dir=/path/to/android-sdk

./gradlew :app:assembleDebug :app:lintDebug --console=plain
./scripts/test-core.sh

Готовый APK: app/build/outputs/apk/debug/app-debug.apk

В тестах проверяются импорт ссылок, границы допустимых доменов, запрет
исполняемых и локальных URL, короткие ссылки и построение ссылки на плеер.
Результаты сборки и ограничения проверки описаны в BUILD-REPORT-0.1.2.txt.

Источники архитектуры

https://developer.android.com/develop/ui/views/layout/webapps/webview
https://developers.tiktok.com/docs/en/embed-player
https://github.com/caixax/opentok

В прототип не перенесён код сторонних TikTok-модов или OpenTok.

Версия 0.1.1

Новый адаптивный значок, анимированная загрузка, кнопки в стиле TikTok и собственный канал обновлений с проверкой APK.
Файлы: release/PRO1-Lenta-0.1.1-test.apk и release/update.json.
Экран обновлений открывается кнопкой скачивания в шапке или из настроек.
Установка APK поверх версии 0.1.0 сохраняет тот же пакет и сертификат.
Для проверки функций обновления: ./gradlew :app:testDebugUnitTest
Подробности и ограничения: BUILD-REPORT-0.1.1.txt.

Версия 0.1.2

Убрано второе меню сайта, приглашения скачать TikTok и окна cookies. Рекламные баннеры блокируются, помеченные рекламные ролики пропускаются.
Меню сайта скрывается при первой загрузке и после динамических переходов.
Для TikTok используется браузерный User-Agent с версией установленного
движка. Кэш мобильного портала сбрасывается при первом запуске обновления;
вход и локальная подборка сохраняются. Переходы в магазин и приложение
TikTok блокируются. Известные рекламные хосты фильтруются в WebView.
Для cookies выбирается отказ от необязательных cookies, если сайт даёт
такую кнопку; приложение не нажимает принятие cookies.

Фильтр пропускает ролики с явными рекламными маркерами TikTok. Рекламную
интеграцию автора без маркировки внутри видео автоматически не вырезает.
Селекторы адаптации могут потребовать обновления при изменении сайта.

Проверки Java: ./scripts/test-core.sh
Браузерные проверки: node --test tests/WebShellChecks.cjs
Для них требуется playwright-core и имеющийся Chromium. При необходимости
задайте PRO1_PLAYWRIGHT_MODULE и PRO1_CHROMIUM_EXECUTABLE.

Версия 0.1.3

Русский язык по умолчанию с выбором в настройках, предзагрузка до двух следующих роликов, скачивание доступного оригинального видео в галерею, подавление известных опросов и окно аккаунта.
Язык задаёт предпочтение сайту: это не строгий фильтр языка речи.
Кнопка скачивания в шапке теперь сохраняет текущий ролик в галерею;
обновления доступны в настройках. Скачивание работает, когда оригинальная
медиассылка доступна в веб-плеере. Блокируются известные опросы,
выбор интересов и предложения включить уведомления.
Предзагрузка до двух роликов не сбрасывает текущий плеер.
Полные нативные функции доступны в отдельной сборке PRO1 Native.
