cobanov

Android TV をきれいにする

root不要すべて元に戻せる

テレビが重くなってきたら、使っていない工場出荷アプリを無効化できます。以下に四つの準備手順と、AI エージェントに渡すプロンプトがあります。何もアンインストールされず、どの手順も元に戻せます。Windows でも Mac でも Linux でも同じです。

準備

  1. 開発者向けオプションを有効にする

    テレビで 設定 → システム → 端末情報 を開き、ビルド番号 の行でリモコンの OK ボタンを 7 回押します。

  2. デバッグを有効にする

    設定 → システム → 開発者向けオプション → USB デバッグ。「ワイヤレスデバッグ」という別項目があれば、それも有効にします。

  3. テレビの IP アドレスを調べる

    設定 → ネットワークとインターネット → ステータス。192.168. で始まる番号をメモします。パソコンはテレビと同じネットワークにいる必要があります。同じ Wi-Fi、または同じルーターです。

  4. Claude Code か Codex を開いてプロンプトを貼る

    下のテキストをコピーし、2 か所の ここに記入 をテレビの型番と IP アドレスに置き換えて、エージェントに渡します。あとはエージェントがやります。必要なツールの導入、テレビへの接続、掃除まで。変更のたびにスクリーンショットでテレビの画面を自分で確かめ、止まって聞いてくるのは画面では分からないことだけです。音、リモコン、あなたが使うアプリなど。

プロンプト

prompt.txt
ADB 経由で私の Android TV を掃除してほしい。目的は、広告と「おすすめ」の列を
なくすこと、使っていない工場出荷アプリを無効化すること、そしてテレビを速く
すること。コマンドは君が実行して、変更のたびにテレビの画面で自分で確かめ、
何をしているのかを平易な言葉で説明してほしい。

私のテレビ
- メーカー / 型番: ここに記入            (例: TCL Smart TV Pro)
- テレビの IP アドレス: ここに記入       (テレビ > 設定 > ネットワークと
                                          インターネット > ステータス)
- 「開発者向けオプション」と「USB デバッグ / ワイヤレスデバッグ」はすでに
  有効。私のパソコンとテレビは同じネットワーク上にある。

ルール (文字どおり守ること)
1. 何もアンインストールしないこと。`pm disable-user --user 0` だけを使い、
   すべて `pm enable <パッケージ>` で元に戻せる状態にすること。
   `pm uninstall` は禁止。
2. root 化、ブートローダーのアンロック、カスタム ROM は提案も試行もしないこと。
   テレビが初期化され、Widevine 証明書が L1 から L3 に落ちれば Netflix は SD
   画質になる。得るものは何もない。
3. まずバックアップと計測をすること。何かを変える前に、`tv-debloat` フォルダ
   に次を保存する: `pm list packages -f`、`pm list packages -d`、`getprop`、
   `settings list global`、`settings list secure`、`settings list system`、
   `dumpsys meminfo`。すぐに復元スクリプト (`restore.sh`、Windows なら
   `restore.ps1`) を作り、パッケージを無効化したらその場で追記すること。
   最後にメモリの計測を繰り返し、前後の比較表を出すこと。
4. 自分の作業をテレビで自分で確かめること。各組のあと、
   `adb shell input keyevent` でキーを押し (ホーム、方向キー、戻る、
   入力切替/ソース)、`adb exec-out screencap -p > screen.png` で
   スクリーンショットを取って見ること。ホーム画面は出るか、入力切替メニュー
   は開くか、HDMI に切り替えられるか、Netflix と YouTube はまだ起動するか。
   見つけた問題は直してから先に進むこと。ライブ TV や HDMI が映っている間に
   スクリーンショットが真っ黒になるなら、先にホームを押すこと。私に聞くのは
   スクリーンショットでは分からないことだけにする: 音、リモコンのボタン、
   画面キーボード。
5. 小さな組で、コマンドは一つずつ。一組で無効化するのは最大 10 パッケージ
   まで。`pm` コマンドは一つずつ別の shell 呼び出しで実行すること。つないだ
   コマンドは最初の一つのあと黙って止まることがある。何かが壊れたら、まず
   直前の組をまとめて戻し、それから一つずつ絞り込むこと。
6. メーカーに関係なく、テレビが動くのに必要なものは絶対に無効化しないこと:
   - テレビアプリと、HDMI とアンテナ/チューナーを再生する入力サービス
   - 入力切替/ソースメニュー (メーカーの「クイックパネル」)
   - リモコンと Bluetooth ペアリングのサービス
   - 画面キーボード (*.inputmethod.*)
   - Play ストアと Play サービス: com.android.vending、
     com.google.android.gms、com.google.android.gsf
   - com.android.location.fused: 無効にするとテレビが起動ループに入る
   - 今のホーム画面。新しいものを入れてデフォルトにするまでは触らない
   パッケージ名から役割が分からないことは多い。自信のないパッケージは、
   無効化する前に `dumpsys package <名前>` でアクティビティとサービスを
   確認すること。それでも分からなければ私に聞くこと。
   たとえば TCL で知られている落とし穴:
      com.tcl.suspension          -> リモコンの入力切替/ソースメニュー。名前は
                                     ゴミのように見えるが、無効にすると HDMI
                                     に切り替えられなくなる。
      com.tcl.ttvs                -> システムアップデート(ネットワーク / USB)。
                                     名前は音声読み上げ(TTS)のように見えるが、
                                     無効にするとアップデートメニューの項目が
                                     エラーも出さずに反応しなくなる。
      com.tcl.tv, com.tcl.tvinput -> HDMI / アンテナの入力サービス
      com.tcl.providers.config,
      com.tcl.initsetup           -> どちらかを無効にすると Wi-Fi が切れる
      com.google.android.tv.remote.service,
      com.tcl.tcl_bt_rcu_service,
      com.tcl.autopair            -> リモコン
7. 私次第のものは、触る前に聞くこと。ストリーミングアプリ、音声アシスタント、
   Chromecast、画面ミラーリング、システムアップデートのサービス。チェック
   リストを見せて、私がチェックしなかったものだけを無効化すること。
8. 記録を残すこと。無効化したパッケージはすべて `tv-debloat` フォルダ内の
   `disabled.txt` に書くこと。同じフォルダに `DEBLOAT-LOG.md` を置き、何を
   なぜやったか、そして各変更を元に戻す正確なコマンドを残すこと。

この順番でやること
a) `adb` が入っているか確認し、なければ入れる。私がどの OS を使っているかを
   調べて適切な方法を選ぶこと。Windows なら Google の platform-tools を
   ダウンロードして PATH に追加、macOS なら
   `brew install android-platform-tools`、Linux なら `apt install adb`。
   そのあと `adb connect <IP>:5555` で接続する。テレビに「このパソコンからの
   デバッグを許可しますか?」が出るので、私に知らせて承認させること。
   Android 11 以降で、テレビの「ワイヤレスデバッグ」画面がペア設定コードを
   求める場合は、先に `adb pair` を使うこと。
   - macOS でポートは開いているのに adb が「No route to host」と言う場合は、
     macOS の「ローカルネットワーク」のプライバシー設定が止めている。
     原因を追わずに、venv に入れた Python の `adb-shell` パッケージを ADB
     クライアントとして使うこと。
   - テレビの USB ポートに何がつながっているか私に聞くこと。USB デバッグが
     有効な間、USB ポートへの給電を止めるテレビがあり、USB スピーカーや
     ディスクが動かなくなる。
b) バックアップと計測をする (ルール 3)。
c) 既成のリストを探すこと。github.com/Gathin23/cleanyourtv の `examples/`
   に私の型番か近い型番のフォルダがあれば、その `debloat.txt` と冒頭の
   メモを読んで出発点にすること。それでも私のテレビのパッケージは一つずつ
   ルール 6 で確認すること。
d) パッケージを表に分けて見せること:
   (1) テレメトリ、広告トラッキング (Samba TV、Alphonso、Anoki などの ACR)、
       メーカーの分析サービス
   (2) メーカーの広告・コンテンツサービス: おすすめの列、コンテンツフィード、
       店頭デモモード
   (3) たぶん要らないバックグラウンドサービス: 重複したキャストや共有の
       サービス、クリーナー
   (4) プリインストールアプリ
   (5) 私次第 (ルール 7)
   (6) 触ってはいけないもの (ルール 6)
   私の承認を得てから (1) と (2) に着手すること。
e) アニメーション速度を半分にする:
      settings put global window_animation_scale 0.5
      settings put global transition_animation_scale 0.5
      settings put global animator_duration_scale 0.5
f) `pm trim-caches 999G` でキャッシュを空にする。
g) テレビを再起動し、スクリーンショットで確認して、もう一度計測する。

ホーム画面を差し替える
Google TV のホーム画面は広告と「あなたへのおすすめ」の列だらけだ。代わりに
FLauncher を使いたい (Play ストアにあり、無料、オープンソースで、自分のアプリ
のグリッドしか表示しない)。
- まず私に FLauncher を入れるよう指示し、入ったことを確認すること。
- ホーム画面を名乗るアプリを一覧にすること:
     cmd package query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
  `cmd package set-home-activity` で FLauncher をデフォルトにするか、
  テレビで私に選ばせること。
- Google TV では、セットアップウィザード
  (com.google.android.tungsten.setupwraith) が、元のホーム画面を無効化した
  あとでもホーム画面を奪い返すことがある。再起動後に確認し、そうなっていれば
  それも無効化すること。
- そのあとで初めて元のランチャーを無効化すること: Google TV なら
  com.google.android.apps.tv.launcherx、Android TV なら
  com.google.android.tvlauncher。
- テレビを再起動し、ホーム画面が FLauncher のままであることをスクリーン
  ショットで確認すること。
- Android 14 で `adb install` が止まったら、テレビ側で確認を待っている。
  APK をテレビに送り、shell から `pm install -r` で入れること。

終わったら次を出すこと
1. メモリの前後比較表。
2. 無効化したパッケージの一覧。それぞれに「これが何だったか」を一行で。
3. 復元スクリプトと、すべてを元に戻す一行のコマンド。
4. テレビの USB ポートにつないだものが動かなくなっていたら、USB デバッグを
   オフにするようにという念押し。

このプロンプトには cleanyourtv から学んだことも取り入れています。そこには多くの機種向けの既成リストもあります。

四つの注意

名前から中身が分からないパッケージは無効化しない 私のテレビでは com.tcl.suspension を無効にした途端、リモコンの「入力切替」ボタンが死んで HDMI に切り替えられなくなりました。入力切替メニューそのものだったのです。TCL の一部の機種では、com.tcl.providers.config と com.tcl.initsetup も同じように Wi-Fi を切ってしまいます。

新しいホーム画面を入れる前に、今のホーム画面を無効化しない 先に FLauncher を入れて既定に設定します。そのあとで初めて古いランチャーを無効にします。順番を間違えると真っ暗な画面になります。

root 化はしない ブートローダーのアンロックでテレビは初期化され、Widevine が L3 に落ちれば Netflix は SD 画質になります。得るものはありません。disable-user が root でやりたいことをすでにやってくれます。

終わったら USB デバッグをオフに USB デバッグが有効な間、USB ポートへの給電を止めるテレビがあります。USB スピーカーやディスクが動かなくなったら、開発者向けオプションで「USB デバッグ」をオフにしてください。

元に戻す

何もアンインストールしていないので、どの手順も元に戻せます。エージェントは無効化したものの一覧を持っているので、「無効にしたものを全部戻して」と言うだけで足ります。

アプリを一つだけ自分で戻したいときは:

ターミナル
adb shell pm enable com.tcl.suspension