Телевизор без рекламы: почистил Android TV по ADB, как весь интернет

В октябре на GitHub выстрелил проект cleanyourtv: убрать с Android TV рекламу и мусор по Wi-Fi и поставить вместо штатной оболочки чистый главный экран в духе Apple TV. За неделю с небольшим он набрал больше 30 тысяч звёзд. Весь интернет чистит телевизоры, я тоже захотел попробовать. Понравилось) Идём под кат…

Что за проект

Скрипты там есть, но работать предлагается через coding-агента: в репозитории лежит PROMPT.md, агент по нему сам изучает пакеты телевизора и спрашивает хозяина, чем тот пользуется. Ничего не удаляется, пакеты только отключаются, и всё возвращается одной командой. К этому прилагаются списки для пары сотен моделей и свой лаунчер на 517 КБ без доступа в сеть. Лицензия MIT.

У меня как раз есть флот агентов, так что телевизор достался отдельному агенту.

Два снимка телевизора на стене: сверху штатный главный экран Google TV с рекламным баннером, снизу лаунчер cleanyourtv с часами и рядом приложений
Картинка из репозитория cleanyourtv: сверху штатный Google TV с рекламой, снизу их лаунчер. Телевизор не мой

Пациент

CHiQ AI PONT, он же Changhong. Android TV 14, MediaTek T31, 1,8 ГБ памяти. На главном экране рекламные FAST-каналы, рекомендации, фирменный портал и магазин Changhong. Ещё там живёт ACR — штука, которая распознаёт, что идёт на экране. Проще говоря, слежка.

Как подключиться

На Android 13 и новее есть «Отладка по Wi-Fi» с сопряжением по коду, кабель не нужен. Включается в меню «Для разработчиков» (семь раз нажать на номер сборки). Одна засада: после каждой перезагрузки телевизор выключает отладку сам, и порт меняется. Так что каждый раз лезу в настройки и диктую агенту новый порт.

Первым делом агент только читал: снял список пакетов, кто сейчас главный экран, чем я реально пользуюсь по статистике. Live TV и HDMI оказались в ходу, значит, входы трогать нельзя.

Отключаем

Всё делается одной командой, и так же откатывается:

pm disable-user --user 0 <пакет>   # отключить
pm enable <пакет>                  # вернуть

Отключали партиями и после каждой перезагружали и проверяли пульт, входы, громкость и мои приложения. Первая партия — реклама и слежка: FAST-каналы, ACR, рекомендации, автоустановка партнёрских приложений, отправка отзывов. Вторая — мусор Changhong: портал, магазин, справка, Alexa. Третья — предустановки, которыми я не пользуюсь: Netflix, Prime Video, YouTube Music, Play Игры, заставка. Всего 16 пакетов.

Совет: после отключения подождите минуту, прежде чем перезагружать. Иначе Android не успевает записать состояние, и после ребута всё оказывается включённым обратно.

Что не трогать

Универсального безопасного списка нет: у каждого производителя свои имена пакетов, и под мусорным названием может сидеть что-то важное. Классика — partnercustomizer. Выглядит как мусор, но, по опыту других владельцев, без него после перезагрузки на Changhong перестают работать кнопка Input и горячие клавиши пульта. Ещё не трогаем всё com.mediatek.* (входы, тюнер), сопряжение пульта, обновление прошивки и мастер настройки: на этой прошивке он хранит сохранённую сеть Wi-Fi.

Новый главный экран

Лаунчер агент собрал из исходников и положил в док YouTube, Кинопоиск, Rutube, Wink и VK Видео. Порядок важен: сначала новый лаунчер назначается главным экраном, и только когда он пережил перезагрузку, отключается штатный. Если отключить штатный раньше, Home может уехать в заводское тестовое приложение. Заодно анимации ускорили до 0.5x.

Обновление прошивки может вернуть отключённое и штатный лаунчер, в проекте для этого есть скрипт проверки.

Итог

Реклама с главного экрана пропала, остались только мои приложения, всё работает. Не работает только голосовой поиск, но очистка тут ни при чём: пульт, оказывается, работал по ИК и с телевизором по Bluetooth сопряжён не был) Осталось его сопрячь.