AndroidのDNS設定に苦しんでいた私がやめられた方法
よくある場面ですよね:アプリやブラウザの広告を消すために、個人用のDNSサーバーを設定しようと決意する。Androidの設定を開き、接続メニューの奥底まで潜り、「プライベートDNS」オプションを探し、ホストアドレスを入力する…and this every time you need to check if some site or app "broke" because of DNS. Androidではこの設定は本当に深い場所に隠されており、Googleが意図的に広告収益を守っているかのように見えます。
最近、开发者eyalm2000によるadnsという小さなユーティリティを見つけました。オープンソースのツールで、シンプルなことを一つだけやります:システムのDNSトグルをホーム画面や通知シェードに配置してくれるんです。
メリット
Androidの広告ブロッカーの 문제는、ほとんどがローカルVPNサービスまたはバックグラウンドサービスとして動作することです。これにより必然的にバッテリーを「消費」し、通知領域のスペースを占め,有时候会与真正的VPN客户端冲突。
adnsは違う动作方式。它不运行任何后台进程。本质上,它是Android 9から導入されたシステムのプライベートDNS設定用の軽量GUIです。このアプリは単にグローバルなシステム変数を切り替えるだけです。
誰が便利に使えるか:
- NextDNSユーザー(直接統合されているので、まさに楽園のようなもの)
- AdGuard DNS、Cloudflare、または自分のPi-hole/AdGuard Homeサーバーを使用している方
- サイトのテスト用にDNSをすばやく切り替えが必要な開発者
数クリックでクリーンなインターネット
このアプリの最も便利な点は、NextDNSとの統合です。アカウントを持っていれば、アプリ内で直接ログインし、必要なプロファイルを選択して、その場で設定を変更できます。別のサービスを使用している場合は、ホスト名を指定するだけです(例:dns.adguard.com)。
気に入った機能:
- クイック設定タイル。今いるアプリを最小化せずに、1秒でフィルタリングを無効にできます。
- バッテリー消費なし。アプリはほとんど(99%)スリープ状態で、ボタンを押した時だけ目覚めます。
- Material 3デザイン。Android Gingerbread時代のハックではなく、システムのネイティブの一部のように見えます。
使い方
Androidは設定をりんごの目のように守っているので、どのアプリもそのままではシステムのDNSを変更することはできません。adnsを動作させるには、パーミッションを付与する必要がありますWRITE_SECURE_SETTINGS。
2つの方法があります。コンソールを触れたくない人にとって一番簡単なのは、Shizukuを使用することです。この 앱はADBパーミッションを他のプログラムに橋渡しします。Shizukuがすでに設定되어 있으면、adnsインターフェースでボタンを1つ押すだけです。
2番目の方法はクラシックなADBです。手机上连接电脑并运行命令:
adb shell pm grant com.eyalm.adns android.permission.WRITE_SECURE_SETTINGS
之后,魔法就开始运作了。
技術的な側面
このプロジェクトはKotlinとJetpack Composeで書かれています。コードは驚くほどクリーンでコンパクトです。モバイル開発をしているなら、リポジトリを確認することをお勧めします—Androidシステム設定をモダンな方法で扱う良い例になっています。この appは軽量で、不必要なパーミッションを必要としません(DNSに必要なものを除く)。
試す価値はあるか
カスタムDNSを активно使用していて、設定メニューをナビゲートすることに疲れているなら—答えは断然YESです。小さなユーティリティが1つの特定の「痛み」をエレガントに解決する、そういうケースの一つです。
唯一見つけた欠点:インストールにはADBまたはShizukuでの一回限りのセットアップが必要です。でもそれはAndroidのセキュリティポリシーなので、開発者にはどう也没办法のことです。でも一度設定すれば—広告とは永久にお別れです。
APKはGitHubのReleasesセクションまたはIzzyOnDroidカタログからダウンロードできます。
関連プロジェクト