
Flyme 官方 root 開啟 ADB TCP 方案2026/7/3問題Flyme 官方 root 的su運行在u:r:shell:s0上下文無法直接控制 adbdctl.restart adbd— 需要 init 上下文shell 無權(quán)stop/start adbd— adbd 是 oneshot 服務(wù)shell 拉不起來直接寫/dev/socket/adbd— 內(nèi)部傳輸接口不接受用戶命令A(yù)DB 協(xié)議幀 — 連接即斷EOF解決方案sys.usb.config 切換法APP → su → 腳本 ├── setprop service.adb.tcp.port 5555 ├── setprop sys.usb.config none ← init 監(jiān)聽到變化 ├── sleep 1 └── setprop sys.usb.config adb ← init 再次監(jiān)聽到 ↓ init 執(zhí)行 on property 觸發(fā)器 ├── stop adbd └── start adbd ← init 有權(quán)限 ↓ 新 adbd 讀到端口 → TCP 5555 開放 ?關(guān)鍵原理sys.usb.config是 Android 系統(tǒng)屬性init 進程會監(jiān)聽它的變化。當值變?yōu)閍db時init.rc 中定義的觸發(fā)器被執(zhí)行on property:sys.usb.configadb property:sys.usb.configfs0 start adbd因為init 自己執(zhí)行start adbd不受 SELinux 上下文限制adbd 正常啟動并讀取service.adb.tcp.port屬性。對比直接ctl.restart方法執(zhí)行者SELinux 上下文結(jié)果setprop ctl.restart adbdshellu:rs0拒絕sys.usb.configadb觸發(fā)器initu:r:init:s0允許 ?部署腳本/data/local/flyme_adb.sh#!/system/bin/shsetprop service.adb.tcp.port5555setprop sys.usb.config nonesleep1setprop sys.usb.config adb開機自啟 APP編譯 ADB Boot Helper APKBootReceiver 前臺服務(wù)安裝后打開一次授權(quán) su打開 APP → 授權(quán) su → ADB TCP 即刻開啟 ? 重啟后BootReceiver → 前臺服務(wù) → 15秒后執(zhí)行腳本 → TCP 自啟 ?驗證adb connect設(shè)備IP:5555 adb devices注意切換sys.usb.config會短暫斷開 USB 連接系統(tǒng)播放斷開聲屬于正常現(xiàn)象Flyme 官方 root 的授權(quán)記憶可能不覆蓋后臺 BroadcastReceiver依賴前臺服務(wù)保持生命周期