前言
Android 系統同樣擁有 /system/etc/hosts 檔案,可用於封鎖廣告、加速特定網域解析或測試開發環境。但修改前務必了解 Root 權限、換行符格式 等關鍵細節,否則易導致系統異常。
關鍵前置知識
- 檔案路徑:
/system/etc/hosts
- 換行符規範: 必須為 Unix 格式
LF (0x0A),不可為 Windows 的 CRLF (0x0D 0x0A)。可用 Notepad++ 檢視「顯示所有字元」確認行尾為 LF。
- Root 權限: 方法一、三需 Root;方法二(電腦端修改)需 Root 才能掛載
/system 為可寫。
方法一:手機端直接修改(需重啟)
- 取得 Root 權限(Magisk / SuperSU / KernelSU 等)。
- 安裝支援 Root 掛載的檔案管理器(如 Root Explorer、ES 檔案瀏覽器 舊版)。
- 將
/system 掛載為可讀寫 (R/W)。
- 編輯
/system/etc/hosts,新增/修改對應關係,例如:
127.0.0.1 ad.example.com
- 存檔,重新啟動手機生效。
方法二:電腦端修改後推回(免重啟,需 ADB + Root)
- 手機開啟 USB 偵錯,電腦安裝 ADB 工具。
- 終端機執行:
adb root && adb remount(需支援 root 的 adbd)
adb pull /system/etc/hosts ~/hosts_backup 備份。
- 電腦端用支援 Unix 換行的編輯器(VS Code、Notepad++、Sublime)修改
hosts。
adb push ~/hosts_backup /system/etc/hosts 推回。
- 無需重啟,即時生效(部分情況需清除 DNS 快取:
adb shell ndc resolver clearnetdns wlan0)。
方法三:使用專用 App(需 Root + Xposed/Root 權限)
- Hosts 助手 (Hosts Go / Hosts Editor):介面友善,支援備份/還原/開關。
- SmartHosts:可自動更新線上維護的 hosts 清單(如 StevenBlack/hosts)。
此類 App 實質呼叫 su 執行掛載與寫入,原理同方法一,但操作更直覺。
常見問題排查
- 修改後不生效: 檢查換行符、確認
/system 確已掛載 R/W、嘗試重啟或清除 DNS 快取。
- 開機卡 Logo: hosts 語法錯誤或編碼錯誤導致 init 解析失敗,需進 Recovery 掛載 system 修復或刷回備份。
- 系統分區空間不足: 刪除 hosts 內註解行或無用條目騰出空間。
iOS 裝置補充
iOS 需越獄後才能修改 /etc/hosts,非本文討論範圍。