거실 TV를 켜면 화면 위쪽 절반을 커다란 홍보 배너가 떡하니 가로막는다. 내 기기에 깔지도 않은 스트리밍 앱의 신작 드라마 광고다. 보기 싫어서 설정 메뉴를 뒤져 ‘앱만 보기(Apps Only)’ 모드를 켜 본다. 아래쪽에 줄줄이 뜨던 추천 목록은 사라지지만 정작 제일 거슬리는 위쪽 대형 배너는 꿈쩍도 하지 않는다. 이 배너만 쏙 끄는 옵션은 설정 어디에도 없다.
Google TV나 Android TV를 쓰는 집이라면 하루에도 몇 번씩 겪는 풍경이다. Cretezy 블로그를 운영하는 개발자는 10월 19일 이 골칫거리를 직접 뜯어고친 과정을 글로 남겼다. 그는 사실 Android TV 생태계를 꽤 좋아한다. 쓸 수 있는 앱이 풍부하고 Chromecast 같은 기기로 저렴하게 구할 수 데다 시중 TV 대다수에 기본으로 들어가 있기 때문이다. 단지 내 돈 주고 산 TV 첫 화면에서 광고를 봐야 하는 게 싫었을 뿐이다.
해법은 TV를 바꾸는 게 아니라 광고를 띄우는 기본 앱들을 걷어 내고 그 자리에 깔끔한 대체 앱을 갈아 끼우는 것이다. 구체적으로 어떤 앱을 바꾸는지, 왜 ADB 같은 개발자 도구까지 동원해야 하는지, 그리고 혹시 꼬였을 때 어떻게 원래대로 되돌릴 수 있는지 차례대로 짚어 본다.
광고가 기어 나오는 두 개의 구멍
첫 번째 구멍은 TV를 켜자마자 나오는 홈 화면인 ‘런처(Launcher)’ 앱이다. 화면 절반을 덮는 배너 광고는 바로 이 기본 런처가 띄운다. 기본 런처를 그대로 살려 두는 한 배너는 절대 사라지지 않는다. 그래서 글쓴이는 기본 런처를 내리고 그 자리에 ‘Projectivy Launcher’를 깔았다. 사용자가 직접 고른 앱 아이콘만 깔끔하게 보여 주는 런처다. 취향에 따라 오픈소스인 FLauncher나 유료 앱인 ATV Launcher Pro를 써도 무방하다.
두 번째 구멍은 YouTube 앱이다. 글쓴이는 공식 앱을 지우고 오픈소스 클라이언트인 ‘SmartTube’로 갈아탔다. 영상 앞뒤로 붙는 광고가 아예 없을 뿐 아니라 리모컨으로 조작하는 화면 구성도 공식 앱보다 훨씬 쾌적하다고 평한다. 특히 유튜버가 영상 중간에 직접 읽는 유료 협찬 구간까지 알아서 건너뛰어 주는 SponsorBlock 기능이 기본으로 들어 있다. 글쓴이는 평소 YouTube Premium을 돈 내고 구독 중인데도 TV에서만큼은 공식 앱 대신 SmartTube를 쓴다고 적었다.
여기에 주변 앱 두어 개가 빈자리를 메운다. ‘Button Mapper’는 리모컨에 박힌 전용 YouTube 버튼을 눌렀을 때 공식 앱 대신 SmartTube가 열리도록 가로채 준다. 집에서 개인 미디어 서버인 Jellyfin을 돌린다면 기본 클라이언트 대신 화면이 훨씬 깔끔한 ‘Wholphin’(또는 Moonfin)을 까는 식이다.
아예 TV 바깥의 공유기 단에서 광고 서버를 차단하는 방법도 있다. 글이 올라온 뒤 Hacker News 댓글에서 쏟아진 팁을 글쓴이가 본문에 추가한 내용이다. 집 안 네트워크 전체의 광고 도메인을 DNS(도메인 이름을 IP 주소로 바꿔 주는 시스템) 단계에서 막아 주는 Pi-hole을 쓰고 있다면 androidtvwatsonfe-pa.googleapis.com 주소 하나만 차단 목록에 넣으면 된다. 그러면 런처를 바꾸지 않아도 기본 홈 화면에서 배너 광고를 못 불러와 빈칸이 된다고 한다. 따로 Pi-hole 서버를 굴리지 않더라도 TV 네트워크 설정에서 비공개 DNS 주소를 AdGuard DNS로 바꿔 주면 비슷한 효과를 볼 수 있다.
홈 화면을 완전히 갈아 끼우려면 ADB가 필요하다
사실 Projectivy Launcher 자체에도 ‘기본 런처 덮어쓰기’라는 설정이 있긴 하다. 하지만 이 옵션만 켜 두면 홈 버튼을 누를 때 원래의 Google TV 화면이 잠깐씩 번쩍이며 나타난다. 뿌리까지 깔끔하게 바꾸려면 컴퓨터에서 안드로이드 기기에 직접 명령을 내리는 도구인 ADB(Android Debug Bridge)를 꺼내야 한다.
먼저 TV에서 숨겨진 개발자 옵션을 열어야 한다. 설정 → 시스템 → 정보로 들어가서 맨 아래의 ‘Android TV OS 빌드’ 항목을 리모컨으로 일곱 번 연달아 누르면 개발자 옵션이 풀린다. 거기서 ‘무선 디버깅’을 켜고 화면에 뜬 페어링 코드로 내 노트북과 연결한다. 단, 무선 디버깅은 TV가 Wi-Fi에 연결되어 있을 때만 쓸 수 있다. 글쓴이가 쓰는 Hisense TV처럼 유선 랜선을 꽂아 쓰는 기기라면 ‘USB 디버깅’을 켜고 네트워크의 5555번 포트로 직접 붙어야 한다.
연결이 끝났다면 앱 설치부터 ADB로 편하게 밀어 넣을 수 있다. Projectivy나 Wholphin, Button Mapper처럼 Play 스토어에 있는 앱은 ADB 명령 한 줄로 TV 화면에 스토어 설치 페이지를 바로 띄워 준다. 사용자는 리모컨 확인 버튼만 누르면 된다. 스토어에 없는 SmartTube는 GitHub에서 최신 APK 파일을 내려받아 adb install 명령으로 직접 깔아 준다.
대망의 런처 교체는 아래 명령어 세 줄이면 끝난다. 여기서 $D는 방금 연결한 내 TV의 IP 주소다.
adb -s $D shell cmd package set-home-activity com.spocky.projengmenu/.ui.home.MainActivity
adb -s $D shell pm disable-user --user 0 com.google.android.apps.tv.launcherx
adb -s $D shell pm disable-user --user 0 com.google.android.tungsten.setupwraith
첫째 줄은 Projectivy를 새로운 기본 홈 화면으로 임명하는 명령이다. 둘째 줄은 기존의 Google TV 기본 런처(launcherx)를 얼려 버리고 셋째 줄은 죽은 기본 런처를 좀비처럼 다시 살려 내는 복구 패키지(setupwraith)까지 마저 얼린다. 여기서 순서를 절대 바꾸면 안 된다. 새 홈 앱을 먼저 지정하지 않고 기존 런처부터 꺼 버리면 화면이 까맣게 먹통이 될 수 있다. 또한 일부 기기에서는 마지막 setupwraith를 끄는 순간 TV에 저장된 Wi-Fi 비밀번호가 날아가기도 하니 바로 다시 연결할 수 있게 리모컨을 손에 쥐고 작업하는 편이 안전하다. 간혹 기본 런처가 외부 HDMI 입력 전환 기능까지 쥐고 있는 TV도 있어서 작업 뒤에 게임기나 셋톱박스 화면으로 잘 넘어가는지도 꼭 확인해야 한다.
리모컨 버튼 가로채기와 자잘한 청소
SmartTube를 깔았다면 이제 기존 YouTube 앱을 치울 차례다. TV 펌웨어에 기본 내장된 앱이라 그냥 지우려 하면 DELETE_FAILED_INTERNAL_ERROR라는 오류를 뱉으며 거부한다. 이럴 때는 시스템 전체에서 지우는 대신 pm uninstall --user 0 옵션을 붙여 현재 사용자 계정에서만 안 보이게 걷어 내면 된다.
리모컨의 YouTube 버튼을 가로채려면 Button Mapper와 Projectivy에 ‘접근성 서비스’ 권한을 줘야 한다. 다른 앱이 리모컨 신호를 읽기 전에 먼저 낚아채려면 이 권한이 필수다. 주의할 점은 ADB로 접근성 서비스 목록을 바꿀 때 기존 목록에 추가되는 게 아니라 목록 전체를 새로 덮어쓴다는 것이다. 그래서 덮어쓰기 전에 원래 켜져 있던 항목이 무엇인지 먼저 조회해서 같이 적어 줘야 기존 기능이 안 깨진다. 간혹 안드로이드 시스템이 멋대로 이 권한을 다시 꺼 버리기도 하는데 Button Mapper에 WRITE_SECURE_SETTINGS 권한을 주고 배터리 최적화 대상에서 빼 두면 권한이 풀렸을 때 앱이 알아서 다시 켠다.
기왕 손대는 김에 TV 반응 속도도 한결 빠릿하게 다듬는다. 창이 열리고 닫히는 애니메이션 배율 세 가지를 기본값 1.0에서 0.75로 줄여 주면 리모컨을 누를 때 체감 속도가 확 빨라진다. 평생 쓸 일 없는 Google 기본 앱 여섯 개(기본 동영상, 게임, YouTube Music, TV 추천, 피드백, 파트너 설정)도 같은 방식으로 얼려 버린다. 만약 제조사가 깔아 둔 온갖 잡다한 앱과 텔레메트리(사용 기록 수집기)까지 싹 다 걷어 내고 싶다면 기기별 삭제 목록을 잘 정리해 둔 cleanyourtv 오픈소스 프로젝트를 참고하면 좋다.
마지막으로 글쓴이는 화질 설정 팁도 짧게 남겼다. 매장에서 눈길만 끌려고 색감을 과하게 비틀어 놓은 기본 화면 모드 대신 ‘Filmmaker Mode’나 ‘Movie’, ‘Cinema’처럼 원작의 색감을 살리는 모드를 고르고 화면을 부자연스럽게 뭉개는 모션 스무딩이나 노이즈 감소 기능은 전부 끄라고 권한다.
언제든 원래대로 되돌리는 안전장치
시스템을 이리저리 건드리다 보면 혹시 TV가 벽돌이 되지 않을까 겁이 날 수 있다. 다행히 지금까지 한 작업은 대부분 앱을 영구 삭제한 게 아니라 잠시 잠재워 둔(disable) 것이라 명령 한 줄이면 언제든 원래대로 살아난다. 현재 계정에서 지웠던 내장 YouTube 앱 역시 시스템 파티션에는 원본이 그대로 남아 있어서 바로 복구할 수 있다.
adb shell pm enable <패키지>
adb shell cmd package install-existing <패키지>
모든 작업이 끝났다면 개발자 옵션에서 디버깅 스위치를 반드시 다시 꺼야 한다. 무선 디버깅이든 유선 5555 포트든 열어 둔 채로 방치하면 같은 집 공유기에 붙은 다른 기기나 악성 앱이 아무런 인증 없이 내 TV의 관리자 권한을 가져갈 수 있다. 광고 배너 하나 치우려다 집 안 네트워크에 보안 구멍을 열어 두는 꼴이 된다.
글쓴이는 이 복잡한 ADB 명령들을 일일이 손으로 치기 귀찮다면 Claude Code 같은 AI 에이전트에게 시켜도 된다고 적었다. 다만 에이전트가 명령을 실행하기 전에 매번 사람이 직접 확인(confirm) 버튼을 누르게 하라는 단서를 달았다. 이 대목을 두고 GeekNews 댓글창에서도 갑론을박이 벌어졌다. 기기 설정을 바꾸는 ADB 명령을 AI에게 맡기는 건 인터넷에서 출처 모를 스크립트를 curl | bash로 바로 실행하는 것보다 훨씬 예측하기 위험하다는 우려가 나온 반면 실제로 Claude에게 맡겨 구형 Chromecast의 꼬인 네트워크 문제를 단숨에 해결했다는 경험담도 올라왔다. AI에게 타이핑을 맡기더라도 방금 본 명령어 중 어느 줄이 위험한지는 사람이 알고 있어야 안전하다.
물론 모든 TV에서 이 방법이 백 퍼센트 똑같이 먹힌다는 보장은 없다. 글쓴이가 직접 테스트해 본 기기는 Chromecast with Google TV 두 대와 Hisense TV 한 대뿐이다. 안드로이드 기반 TV라면 구조가 비슷해 대개 잘 돌아가겠지만 제조사마다 숨겨 둔 함정이 다를 수 있다.
내 TV의 주인을 되찾는 수고
결국 광고 없는 깔끔한 TV 화면은 설정 메뉴의 스위치 하나로 공짜로 얻어지지 않는다. 광고를 쏟아내는 기본 런처와 공식 YouTube 앱 두 개를 들어내야 하고 새 앱들이 원래 앱처럼 자연스럽게 열리도록 기본 홈 지정과 리모컨 버튼 매핑까지 손봐야 한다. 제조사가 메뉴에서 숨겨 놓은 권한을 건드려야 하니 어쩔 수 없이 ADB라는 연장통까지 꺼내 들게 된다.
댓글창에는 “이럴 바에야 처음부터 스마트 기능이 아예 없는 깡통 모니터나 상업용 사이니지 디스플레이를 사서 쓰자”는 목소리도 꽤 많았다. 하지만 요즘 시장에서는 스마트 기능을 뺀 대형 TV를 찾기가 오히려 하늘의 별 따기이고 가격도 더 비싸다는 반론이 곧장 뒤따랐다. 대낮에 어린아이가 거실 TV를 켰는데 홈 화면 한가운데에 피가 튀는 공포 영화 광고 배너가 떠서 기겁했다는 한 Firestick 사용자의 댓글은 왜 사람들이 이런 번거로운 작업까지 감수하는지를 잘 보여 준다.
다시 처음의 거실 풍경으로 돌아가 보자. Google은 앞으로도 홈 화면 배너를 끄는 친절한 설정 버튼을 만들어 주지 않을 것이다. 하지만 약간의 수고만 들이면 배너를 띄우는 홈 화면 자체를 내 손으로 통째로 들어낼 수는 있다. 어떤 패키지를 잠재웠고 문제 생겼을 때 어떻게 다시 깨우는지 딱 두 줄의 복구 명령만 알고 시작한다면 주말 오후 한 시간쯤 투자해 볼 만한 값어치가 충분하다.
출처: Cretezy — An Ad-Free Android TV, GeekNews — 광고 없는 Android TV 만들기