Clash 一開啟就閃退?啟動崩潰的排查與修復方法
從設定檔語法、核心相容性、快取損毀及系統權限四方面排查啟動崩潰,並說明安全清除資料與重新匯入設定檔的順序。
先分辨:介面閃退、核心停止,還是 VPN 啟動失敗
「Clash 一開啟就閃退」可能是三種不同問題:應用程式介面退出、代理核心停止,或系統 VPN 工作階段未建立。先確認在哪個步驟退出,再決定是否需要修改設定檔。網頁無法開啟、節點逾時或訂閱更新失敗,本身都不能證明應用程式已崩潰。
| 觀察到的狀況 | 優先檢查項目 | 第一步操作 |
|---|---|---|
| 點選圖示後回到主畫面,連設定頁都無法開啟 | 應用程式資料、安裝套件架構、系統相容性 | 強制停止後重新開啟,記下系統提示 |
| 介面可以開啟,啟動服務後卻立即停止 | 設定檔解析、核心功能、資源檔案 | 查看啟動記錄中的第一則錯誤 |
| 點選連線後失敗,但介面仍可操作 | VPN 授權、其他 VPN、永遠開啟的 VPN 設定 | 先中斷其他使用 VPN 通道的應用程式 |
| 螢幕關閉後中斷,重新開啟又能連線 | 電池最佳化、背景限制、記憶體回收 | 檢查背景執行權限,先不要清除設定檔 |
建議先記下四項資訊:手機型號與系統版本、用戶端名稱與版本、核心名稱與版本,以及觸發問題的操作。尤其要留意問題是否發生在「更新訂閱後」、「升級用戶端後」或「啟用 TUN 後」。這些時間點比反覆重新安裝更有助於排查。
第一步:保留設定檔,再嘗試低風險復原
只要還能開啟應用程式,請先匯出本機設定檔和覆寫內容。訂閱連結應另存於可信任的私人位置;連結通常含有存取憑證,請勿放進公開截圖。確認仍能存取設定檔來源後,再考慮清除資料。
- 結束其他 VPN 應用程式。包括使用本機 VPN 過濾流量的防火牆、廣告攔截器和封包擷取工具,避免測試時搶用系統 VPN 通道。
- 強制停止用戶端。Android 可依序前往「設定」→「應用程式」→「查看所有應用程式」→目標用戶端→「強制停止」;不同廠牌的選單名稱可能略有差異。
- 重新開啟一次。若能進入設定,請暫時關閉用戶端提供的啟動後自動連線選項,先確認介面是否穩定。
- 必要時重新啟動手機。重新啟動後先不要開啟其他 VPN,只啟動目標用戶端,減少其他服務的干擾。
第二步:檢查 YAML 語法與訂閱回傳內容
如果問題是在更新訂閱或修改規則後立刻出現,請先檢查設定檔解析。符合規範的用戶端通常會回報設定檔錯誤,但部分用戶端處理異常設定檔時也可能直接退出。別只看最後一則「服務已停止」,應往前找出首次出現的解析錯誤。
從記錄中的關鍵字定位問題
yaml、unmarshal、line:優先檢查縮排、資料型別和錯誤訊息附近的行。真正的錯誤也可能出現在提示行的上一行。proxy not found或策略引用錯誤:檢查規則引用的策略組是否存在,並確認名稱、大小寫及空格完全一致。unsupported、unknown:確認記錄指出的是通訊協定、規則類型還是欄位,再檢查核心相容性。- 下載內容以
<html開頭:可能取得的是登入頁面、錯誤頁面或存取驗證頁面,而非設定檔。
YAML 階層縮排應使用空格,避免混用定位字元。名稱或字串含冒號、井字號等特殊字元時,必要時請用引號括住。訂閱連結能在瀏覽器中開啟,不代表回傳內容一定是 Clash 設定檔;部分訂閱格式只包含編碼後的節點清單,需由提供者提供相應格式的連結。
使用最小設定檔隔離問題
如果用戶端支援匯入本機 YAML,可以建立暫用設定檔進行測試,別直接覆寫唯一的原始設定檔。以下範例僅用於檢查基本解析和核心啟動,不包含代理節點,也無法提供代理轉送功能。手機用戶端可能還會另外產生 VPN、DNS 或 TUN 設定,仍須遵循該用戶端的匯入要求。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxies: []
proxy-groups: []
rules:
- MATCH,DIRECT
7890 是此範例的本機混合代理監聽連接埠,不是遠端節點連接埠;手機用戶端也可能會覆寫這項設定。若最小設定檔能啟動、原設定檔卻無法啟動,請逐項還原策略組、規則集和覆寫內容。每還原一類就測試一次,避免一次加入多項而失去排查線索。
若設定檔由訂閱產生,請盡量透過用戶端支援的覆寫入口修正,或請設定檔提供者修正來源檔。直接修改下載後的設定檔,下一次更新時可能又會被覆寫。
第三步:確認用戶端核心與設定檔功能相容
Clash 是專案與設定檔生態中常見的名稱,不代表所有同名用戶端都採用相同核心。Clash Meta 分支後來以 mihomo 名稱持續發展,支援範圍與原版 Clash 並不完全相同。外觀相似的兩款用戶端,也可能支援不同的通訊協定、規則欄位和 TUN 實作。
更新設定檔後才崩潰,先檢查新增功能
例如,設定檔新增某類通訊協定、rule-providers 欄位的擴充選項或特定 DNS 設定後,舊版核心未必支援。未知欄位有時會被忽略,有時則會導致驗證失敗;不能直接認定「沒有報錯就代表已生效」。請以該核心對應版本的文件和實際記錄為準。
- 在用戶端的「關於」或核心資訊頁記下應用程式版本和核心版本,兩者不要混為一談。
- 查看錯誤訊息指出的欄位或通訊協定,並對照核心說明確認是否支援。
- 如需升級,請選擇該用戶端正式發布的穩定版本,並先保留設定檔副本。
- 升級後先用最小設定檔啟動,再匯入完整訂閱,最後還原本機覆寫。
Android 安裝套件架構也要相符
常見的 arm64-v8a 與 armeabi-v7a 屬於不同架構;模擬器也可能使用 x86_64。架構不相容通常會在安裝時出現錯誤,但缺少相符的原生程式庫也可能在啟動時才造成問題。別只因處理器支援 64 位元,就認定系統支援所有 64 位元應用程式;請依用戶端發布說明和裝置系統選擇安裝套件。
若問題明確始於一次應用程式升級,請保留記錄並查閱該專案的已知問題。降級並非通用解法:新版寫入的資料格式可能與舊版不相容,舊版套件也未必能直接覆蓋安裝。避免反覆覆蓋安裝不同來源的用戶端。
第四步:依序處理快取、資源和應用程式資料
快取損毀、規則集下載中斷或本機資料庫異常,都可能導致啟動時反覆失敗。請從影響範圍最小的操作開始。在 Android 上,可前往「設定」→「應用程式」→目標用戶端→「儲存空間和快取」→「清除快取」,完成後重新啟動。
還能進入介面時,優先重建有問題的資源
- 若記錄指出特定規則提供者,只更新或暫時停用對應的
rule-providers,別一次刪除所有訂閱。 - 若記錄明確指出地理資料庫讀取失敗,請使用用戶端提供的資源更新入口,確認下載完成後再啟動。
- 若出現空間不足或檔案寫入失敗,請先檢查系統剩餘儲存空間,避免更新時再次產生不完整檔案。
清除系統快取不一定會刪除用戶端儲存的資料庫或設定檔資源,這取決於應用程式的檔案存放位置。若清除快取後問題完全沒有變化,請回頭判讀記錄,而非反覆執行相同操作。
確實需要清除資料時,分階段還原
- 確認訂閱連結、本機規則和必要設定都已備份,且能重新取得。
- 執行「清除儲存空間」或解除安裝後重新安裝;Android 解除安裝通常也會刪除本機應用程式資料。
- 首次開啟後,先確認空白狀態下介面運作穩定,不要立即還原整份舊備份。
- 一次只匯入一份設定檔並測試啟動;成功後再還原覆寫內容和其他訂閱。
完整還原舊備份後問題原樣重現,通常表示觸發問題的條件也一併還原了。此時應檢查備份中的設定檔、資源引用或應用程式設定,而非繼續把原因歸咎於安裝失敗。
第五步:檢查 VPN 權限、TUN 與背景限制
Android 手機通常透過系統 VPN 服務接管裝置流量。一般使用這項功能不需要 root;但用戶端的 TUN 設定與桌面版並不完全相同,不宜照搬桌面版的網路介面名稱、路由參數或權限修復指令。
連線時立即失敗,檢查 VPN 工作階段衝突
Android 常見路徑為「設定」→「網路和網際網路」→「VPN」。檢查其他應用程式是否開啟「永遠開啟的 VPN」,以及「封鎖未使用 VPN 的連線」是否影響目前測試。部分系統可能將這個選單放在「連線與共享」底下。測試前先記下原本設定,完成後依自己的安全需求還原。
重新授權時,應由目標用戶端觸發系統 VPN 連線要求,再確認系統對話框中的應用程式名稱。工作資料、裝置管理政策或由公司管理的手機可能會限制 VPN 使用;這類限制需要由裝置管理員處理,單純重新安裝用戶端通常無效。
螢幕關閉後中斷,不等於啟動時閃退
若應用程式在前景運作正常,只有螢幕關閉後才中斷,請檢查「設定」→「應用程式」→目標用戶端→「電池」中的背景執行選項。部分廠牌另有自動啟動或背景保護設定。放寬限制可能會增加耗電,請先確認應用程式確實在背景遭到終止,再視需要調整。
若記錄只出現節點連線逾時、DNS 查詢失敗,而介面和服務仍在執行,請改查網路與 DNS。更改 DNS 伺服器無法修正 YAML 解析錯誤;更換節點也無法修復應用程式原生程式庫崩潰。
iOS 一開啟就退出:分別檢查應用程式與網路延伸功能
iOS 用戶端通常透過 Network Extension 建立 VPN 通道,安裝方式與 Android APK 不同,也不能假設所有 iOS 用戶端都完整支援 mihomo 設定檔。若介面能開啟但連線立即停止,請查看用戶端的連線記錄;若點選圖示就退出,則優先檢查應用程式本身、系統相容性和安裝來源狀態。
- 先重新啟動裝置,並透過原安裝管道檢查是否有可用更新;若透過 TestFlight 安裝,也要確認測試版本是否已過期。
- 前往「設定」→「一般」→「VPN 與裝置管理」檢查現有 VPN 項目,別任意刪除公司或學校管理的描述檔。
- 前往「設定」→「隱私權與安全性」→「分析與改進功能」→「分析資料」,依故障時間尋找對應應用程式或延伸功能的記錄。是否有記錄取決於系統和診斷設定。
分析資料中的 JetsamEvent 可能與記憶體不足時終止處理程序有關,但不代表已確認發生程式碼崩潰。若只在載入大型規則集後退出,可先減少規則提供者數量進行對照測試,再將記錄提供給用戶端維護者判斷。
iOS 的「卸載 App」通常會保留文件與資料,「刪除 App」則會移除本機資料,兩者用途不同。前者可能保留原有故障狀態,後者則需要先匯出設定檔。若沒有可用的還原來源,請勿直接刪除應用程式。
仍然閃退:提供可重現的資訊,勿公開訂閱憑證
回報問題時,請用一句話描述觸發過程,例如「冷啟動後可以進入設定,選擇某個設定檔並點選連線後,介面在同一個步驟退出」。再附上系統版本、應用程式版本、核心版本、最近一次正常運作的時間,以及最小設定檔是否能成功啟動。維護者需要的是可重現的條件,而不只是一張主畫面截圖。
Android 選用:使用 ADB 取得崩潰記錄
熟悉電腦除錯的使用者,可在自己的可信任電腦安裝 Android 平台工具,開啟 USB 偵錯並完成授權後執行以下指令。先重現一次閃退,再匯出記錄;完成後關閉 USB 偵錯。不熟悉 ADB 時,請優先使用應用程式內的記錄匯出功能。
adb devices
adb logcat -b crash -d > clash-crash.txt
崩潰緩衝區不一定包含獨立代理核心的完整錯誤資訊,因此仍應保留用戶端啟動記錄。分享前請移除訂閱 URL、權杖、節點密碼、伺服器位址和個人路徑,只保留錯誤前後的相關內容。請勿將完整設定檔貼到公開討論區。