非root化Android端末の不要ソフトウェアを削除
(github.com/0x192)- Universal Android Debloater GUI は、既存の UAD project を Rust で完全に書き直したツールで、不要またはあまり知られていない Android システムアプリを削除し、プライバシーとバッテリー性能の改善を目的としている
- root なしでシステムパッケージを 削除/無効化 し、復元/有効化できるほか、マルチユーザー・マルチデバイス・選択項目のエクスポート/インポート・操作ログをサポートする
- パッケージは可能な限り文書化されており、削除可能かどうかの判断を助けるが、起動に必要な 必須システムパッケージ を削除するとブートループが発生する可能性がある
- root なしの端末ではシステムアプリを実際に完全削除することはできず、OEM アップデート後に一部の「削除済み」システムアプリが再インストールされることがあるため、ツールを再実行する必要がある
- サポート一覧には Google/Facebook/Amazon/Microsoft、AOSP、OEM、通信事業者、Qualcomm/Mediatek などが含まれ、メーカー別・通信事業者別の debloat list が別途提供される
Universal Android Debloater GUI の目的
- Universal Android Debloater GUI は、UAD project を Rust で完全に再実装 したプロジェクトである
- 目的は、不要であまり知られていないシステムアプリを削除し、プライバシー とバッテリー性能を改善することである
- システムアプリの削除は、攻撃対象領域 を減らし、セキュリティ向上にも寄与しうる
- プロジェクトはまだ 初期開発段階 にあり、Issue の確認と貢献が推奨されている
安全性と主な警告
- 使用は 自己責任 であり、端末に起こりうる事象についてプロジェクトは責任を負わない
- パッケージは、削除可能かどうかをよりよく理解できるよう、可能な限り文書化されている
- 最も深刻な問題は、起動に必要な必須システムパッケージを削除して ブートループ が発生するケースである
- およそ 5 回の起動失敗後、端末は自動的にリカバリーモードで再起動する
- この場合は 工場出荷時リセット を実行する必要がある
- 事前にバックアップを取る必要がある
- このソフトウェアによって端末が brick 状態になることはないと明記されている
- root なしではシステムアプリを実際に完全削除することはできず、詳細は FAQ を参照する必要がある
サポート機能
- システムパッケージの Uninstall/Disable および Restore/Enable をサポート
- 業務プロファイルアプリのような マルチユーザー をサポート
- 選択項目を
uad_exported_selection.txtとしてエクスポート/インポート可能 - 複数のスマートフォンを同時接続する マルチデバイス をサポート
- すべての操作がログに残り、ユーザーが実行した内容を忘れないようにする
Debloat リストの範囲
- Universal Debloat Lists には次のカテゴリが含まれる
- GFAM: Google, Facebook, Amazon, Microsoft
- AOSP
- メーカー(OEM)
- 通信事業者
- Qualcomm, Mediatek, その他
- メーカー向け debloat list は Asus、LG、Google、Fairphone、Huawei、Motorola、Nokia、OnePlus、Oppo、Realme、Samsung、Sony、Tecno、Unihertz、Vivo/iQOO、Xiaomi、ZTE などをサポートする
- Archos、Blackberry、Gionee、iQOO、HTC、TCL、Wiko はメーカー一覧でまだチェックされていない
- 通信事業者向け debloat list には次の国と事業者が含まれる
- France: Orange, SFR, Free, Bouygues
- USA: T-Mobile, Verizon, Sprint, AT&T
- Germany: Telekom
- UK: EE
使用手順と制約
- まず FAQ を読み、データを バックアップ する必要がある
- スマートフォンで Developer Options を有効化し、開発者パネルで USB Debugging をオンにする必要がある
- 設定で OEM アカウントの関連付けを解除する必要がある
- OEM アカウントのパッケージを削除すると、端末がユーザーの身元を関連付けられなくなり、ロック画面で塞がれる可能性がある
- ADB のインストールが必要である
- Linux ではディストリビューションごとのパッケージマネージャーで
android-sdk-platform-toolsまたはandroid-toolsをインストールする - macOS では Homebrew で
android-platform-toolsをインストールする - Windows では android platform tools をダウンロードして展開し、PATH に追加するか、UAD を同じディレクトリから実行する必要がある
- Windows では端末用の USB drivers をインストールし、
adb devicesで認識されているか確認する
- Linux ではディストリビューションごとのパッケージマネージャーで
- 使用中の OS 向け最新の UAD GUI リリースは releases から入手できる
- デフォルトの Vulkan バックエンド版が起動しない場合にのみ
opengl版を使用する
- デフォルトの Vulkan バックエンド版が起動しない場合にのみ
- 中国製スマートフォンのユーザーは、一部の標準アプリ削除に AOSP list が必要になる場合がある
- 特に Xiaomi や Huawei などの中国メーカーが、独自に改変したクローズドソースアプリに AOSP パッケージ名を使用してきたためである
- OEM が端末にアップデートを配信すると、一部の「削除済み」システムアプリが再インストールされることがあるため、このソフトウェアを再実行する必要がある
貢献
- プロジェクトは コミュニティプロジェクト であり、貢献方法は How to contribute にまとめられている
1件のコメント
Hacker News のコメント
最近、親戚にミドルレンジの Samsung スマートフォンを定価で買ってあげたのだが、プリインストールアプリの多さが信じられないほどだった。
複数のソーシャルネットワークやショッピングアプリがあらかじめ入っており、Google アプリ群を中途半端に重複させる Samsung アプリも大量にあった。
初期設定プロセス全体が、できるだけ多くのデータを抜き取るように設計されたダークパターンだらけで、一般ユーザーが何も見落とさずに通過するのは難しそうに見えた。
その会社のプライバシーポリシーには、関心事、社会生活、知能レベルや学歴の推定に使い、「市場調査」などのためにデータを販売すると書かれていた。
スマートフォンに標準で入っているキーボードが、メッセージやメールを第三者に読ませるとは、ユーザーは疑いにくい。
偶然キーを長押しして「about samsung keyboard」ウィンドウを開き、そこからプライバシーポリシーをたどって、どの会社にキー入力を送っているのか確認して初めて分かった。
すぐにオープンソースのキーボードに替えたが、全ユーザーの入力を集めていたおかげなのか、Samsung キーボードのスペルチェックと予測入力は本当に優秀ではあった。
最近の3台は EU で販売された Samsung S シリーズだったが、「第三者のプリインストールアプリ」と言えそうなものは Facebook と MS Office くらいで、どちらも簡単に削除できた。
Samsung の代替アプリは好みの問題で、Google の「オリジナル」より使いやすいと感じた。
他ブランドのスマートフォンも軽く使ってみた限りでは、Samsung はソフトウェアとユーザー体験の面で、Android の選択肢の中ではかなり良いほうだ。
1200ドルのフラッグシップ機でこれは恥ずべきことだ。
「Android デバイスで Microsoft SwiftKey Account の使用を選択していない場合、Microsoft SwiftKey が生成したすべての個人データおよび言語データはデバイスにローカル保存され、送信されない」という説明がある。
有効にした言語間を自然に切り替えてくれるので使っており、「meet me at Østerport Station」のような文もスムーズに入力できる。
ただしプリインストールアプリが問題なので、Samsung のスマートフォンを買ったらまず
pm uninstall –k ––user 0を実行する。リンク先のツールも同じことをより使いやすくしてくれるが、Samsung アカウントや Knox 関連項目のように、カスタム ROMを入れない限り依然として削除できないものもある。
このプロジェクトは1年間メンテナンスされていない。
最新のメンテナンス済みフォークは https://github.com/Universal-Debloater-Alliance/universal-an... で見られる。
このプロジェクトで使う Android 対応コマンドはおおよそ次のようなものだ。
dpkg --get-selections:adb shell pm list packages | sortdpkg -r:adb shell pm uninstall -k --user 0ステータスバーのアイコンを隠すには、バージョンによっては
adb shell dumpsys activity service SystemUIServiceを実行し、「icon slots: 」を探して名前を確認したうえで、adb shell settings put secure icon_blacklist battery,wifi,clock, ...のように設定できる。このコマンドは既存のブロックリストを新しいリストで上書きする。
例えば Google の Android と Pixel の中核チームのほとんどは、Wi-Fi とデータのトグルを別々に使っていることを知っているが、実際の製品では両方をまとめたクイック設定タイルを1つだけ出していた。
それでも隠し設定で2タイルモードを復活させられるのだが、Google でなぜこういうことがよく起きるのか分からない。
数週間前から、モバイル機器向けのオープンソースの自由ソフトウェアOS開発はどうなったのかと考えていた
GrapheneOS や CalyxOS のようなOSが、なぜ Alphabet Inc. が作った携帯電話でしか使えず、ほかの端末では使えないのか、昔の Linux 的な開発のように多様なハードウェアのバリエーションを集めて、ほぼあらゆるデバイスにドライバとサポートを提供するOSはどこへ行ったのか疑問に思う
モバイルコンピュータのハードウェア産業があまりに萎縮して閉じられているため、ユーザーが自分の端末を所有できず、別の主体が所有する端末を使っている格好になっているのではないかとも思う
それとも複数の端末をサポートするOSがないことには別の理由があるのか、自分が何か見落としているのかもしれない
GrapheneOS や CalyxOS も必須ドライバにアクセスできないため、元のイメージからバイナリの塊を持ってきて一緒に配布している
そのため、こうしたプロジェクトはクローズドソースのカーネルドライバだらけで、そのバイナリドライバを使うために特定のカーネルバージョンに縛られる
結局、オープンソース版にできる最大限は、別の「システムアプリ」のセットを選ぶ程度で、実際にはテーマ変更より少しましな程度に近い、という主張
特定の端末 X をサポートしたいなら、root 脆弱性でバイナリの塊を確保すればよく、その後はその端末向けに配布できる
https://grapheneos.org/faq#supported-devices も受け入れられない
記憶が正しければ、Alphabet/Google は Android OS を配布するための資金を受け取り、一時期はハードウェアの携帯電話も出していたが姿を消し、その後ほかの会社に引き継がせ、後になって再び現れて他メーカーの努力を利用して先行したように見える
なのにOSが Google の携帯電話にだけあって他の端末にはないのなら、これが正常なのか分からないし、他人の努力を卑怯に横取りしたように感じる
https://calyxos.org/#Devices の端末リストは、以前の http://web.archive.org/web/20230605161332/https://calyxos.or... より少し増えているが、OpenWRT、HyperWRT、DD-WRT、Tomato のようなものとは比較にならない
だから GrapheneOS や CalyxOS は信用しておらず、Wi-Fi ルーターで複数のオープンソースファームウェアがさまざまな機器をサポートしていたのと似た流れを、携帯電話でも見たい
工場出荷時設定に戻した Xiaomi で、こうしたリストの一つを適用してみたところ、再起動後すぐに壊れた
ログイン直後に即クラッシュして使えず、最終的には直せたが、注意が必要だと学んだ
あるモデルでは必須の項目が、別のモデルではプリインストールアプリであることがある
なぜこれが必要なのか分からない
端末の設定から直接アプリを無効化できるのに、このツールがそれ以上に何をしてくれるのか不明
FAQ にはユーザープロファイルから追加で「削除」し、キャッシュやデータを削除するとあるが、それが正確に何を意味するのかよく分からない
root 化していない Amazon Fire タブレットを ADB で整理し、カスタマイズする似たような GUI ツールがある
https://xdaforums.com/t/windows-linux-tool-fire-toolbox-v33-...
なぜソースから完全にクリーンな Android をコンパイルして、携帯電話に直接インストールできないのか気になる
何がそれを妨げているのか
ただし、ブートローダーのアンロックが可能な携帯電話である必要があり、メーカーが多くの部分のソースを提供していないため、メーカーのまったく同じイメージは作れない
ハードウェアがサポートされていれば、LineageOS のようなコミュニティ保守のOSをインストールすることはできる
欠点は Google Pay のようなアプリが動作しなくなる可能性があることで、Google の SafetyNet 認証システムを通過する必要があるため
回避策もあるにはあるが、常に不安定なハックのように見えた
携帯電話市場は90年代のデスクトップ市場に似ている
PC ではないコンピュータでは、こうしたことは保証されない
簡単という意味ではないが、ソースコードはすべてある
Android 端末でプリインストールアプリを削除するには、直接であれ間接であれ ADB が唯一の選択肢
以前使っていた安い10インチの Mediacom タブレットも、どんなツールを使っても root 化できなかったが、不要なサービスや項目を削除するのは ADB で簡単になった
ただしかなり危険で、結局 Google サービスはもう動かせないが、メールを使うよう説得できなかった7〜8人と連絡するための Whatsapp は使え、F-Droid からダウンロードもできるので、自分には十分
https://shizuku.rikka.app/
https://github.com/samolego/Canta
Android デバイスの分かりにくいパッケージについて、それぞれが実際に何をしているのか、無効化・削除した場合にどんな影響があるのかを教えてくれる最新の一覧をどこで見つけられるのかが気になる
特に、一見無関係に見えるパッケージを1つ削除したら別のものが壊れる、といった パッケージ依存関係 を知りたい
[1] - https://github.com/Universal-Debloater-Alliance/universal-an...