方法1:免配对开机自启 5555 端口(卸载 Root 也不受影响)
对于安卓开发者和玩机爱好者来说,无线 ADB(Wireless Debugging)是一项必不可少的功能。然而,Android 11+ 官方推出的无线调试体验在日常使用中有着不少痛点:
- 端口随机化:每次关闭再开启无线调试,或者手机重启后,连接端口都会随机变化,导致电脑端连接命令极其繁琐 [1 2]。
- 繁琐的配对码:首次连接必须点击“使用配对码配对”,手动输入 6 位数配对码,步骤冗长 [1 2]。
- 系统崩溃 Bug:在部分深度定制的系统(如联发科芯片的小米/HyperOS)上,启动配对广播时极易触发 mDNS 内部服务错误(
err=0),从而导致手机直接发生软重启(黑屏加载)。
今天,我们将分享一套终极无线调试解决方案。
你只需要利用一次临时的 Root 权限,就可以在系统底层打通一条绿色的“永久信任通道”。配置完成后,即使你彻底卸载 Magisk 还原回纯净无 Root 状态,该通道依然永久保留。每次开机,手机都会在后台静默开启固定的 5555 端口,电脑端一键即可完成无缝免配对的秒连!
核心原理解析:为什么卸载 Root 不受影响?
这套方案之所以能在卸载 Magisk(完全去掉 Root)后依然完美运行,得益于 Android 底层的两个设计:
- 公钥免配对认证(
adb_keys):
Android 系统之所以能信任你的电脑,是因为电脑的 ADB 公钥被保存在了手机的/data/misc/adb/adb_keys白名单文件中。只要我们有 Root 权限时手动将电脑公钥写入该文件,电脑就会被手机“永久信任”。 - 持久化配置属性(
persist.adb.tcp.port):
Android 系统提供了一个名为persist.adb.tcp.port的全局属性。任何带有persist.前缀的属性,都会被系统加密写入到手机的/data/property/persistent_properties目录中。 - 分区分离机制:
Magisk 的安装与完全卸载,主要涉及系统引导分区(/boot或/init_boot)。而我们上述写入白名单和系统配置的目录都在/data数据分区。卸载 Magisk 还原系统并不会清理/data分区,因此我们配置的一切都会完美保留。
🛠️ 终极配置实操步骤
请准备好手机(目前处于 Root 状态)电脑以及一条 USB 数据线。root参考第五章:Magisk Root 刷机全攻略
第一阶段:获取电脑公钥并注入手机(免配对核心)
- 定位电脑公钥文件:
在 Windows 电脑上,你的 ADB 公钥位于:
C:\Users\<你的Windows用户名>\.android\adbkey.pub - 将公钥推送到手机临时目录:
在电脑的 PowerShell(或 CMD)中,利用 USB 调试将公钥推送到手机的虚拟 SD 卡中:# 请将 yyszo 替换为您电脑的实际用户名,9xgiheqwjbbmxovo 替换为您的实际手机序列号 adb -s 9xgiheqwjbbmxovo push C:\Users\yyszo\.android\adbkey.pub /sdcard/adbkey.pub - 进入手机 shell 并注入白名单:
为了防止 Windows 命令行和手机 Shell 之间的重定向符号>>发生解析冲突 [1.2.8],最稳妥的做法是直接进入交互式命令行执行:
此时你会进入手机 Shell 环境。接下来依次输入:adb -s 9xgiheqwjbbmxovo shell# 1. 切换至 Root 权限(请在手机屏幕上允许 Magisk 的超级用户请求) su # 2. 将临时公钥追加写入系统信任数据库 cat /sdcard/adbkey.pub >> /data/misc/adb/adb_keys # 3. 修复密钥文件的权限与所有者组,防止后续无 Root 时无法读取, 规范密钥文件的权限与所有者组,并修复 SELinux 标签 chmod 640 /data/misc/adb/adb_keys chown system:shell /data/misc/adb/adb_keys chcon u:object_r:adb_keys_file:s0 /data/misc/adb/adb_keys # 4. 清理手机里的临时公钥文件 rm -f /sdcard/adbkey.pub # 5. 连续输入两次 exit 退出 shell exit exit
这命令root卸载后就不行了,考虑不用
# 5.重新写入开机自启脚本,自动同意adb 连接(只留这一条安全无害的命令)
echo '#!/system/bin/sh
resetprop ro.adb.secure 0' > /data/adb/post-fs-data.d/disable_adb_secure.sh# 确保有执行权限
chmod +x /data/adb/post-fs-data.d/disable_adb_secure.sh
第二阶段:配置永久 TCP 5555 端口(自启核心)
手机和电脑通过 USB 连接好,在电脑的 PowerShell 中执行以下命令:
- 写入系统底层的永久属性:
adb -s 9xgiheqwjbbmxovo shell su -c "setprop persist.adb.tcp.port 5555" - 检查是否成功写入:
(如果终端返回了adb -s 9xgiheqwjbbmxovo shell getprop persist.adb.tcp.port5555,说明系统已经成功将该参数持久化记录到/data中。) - 应用该属性(关键):
不需要使用任何可能导致 USB 调试突然中断的stop/start终端命令。
你只需要拿起手机,进入 “系统设置 -> 开发者选项”:- 将“USB 调试”开关关闭,然后再重新开启。
(这个“关 -> 开”的操作会让系统重新加载persist.adb.tcp.port属性,并在后台自动开启 5555 端口。)
- 将“USB 调试”开关关闭,然后再重新开启。
第三阶段:拔线测试无线连接
现在,你可以彻底拔掉 USB 数据线了。在电脑端直接输入你的手机局域网 IP 进行连接:
# 1. 直接连接
adb connect 192.168.31.240:5555
# 2. 查看连接状态
adb devices
此时终端会直接显示 connected to 192.168.31.240:5555,并在列表中显示状态为 device!不需要任何配对码,更没有闪退和重启。
第四阶段:完全卸载 Root 体验“真·免Root无线调试”
当你测试无线连接完全正常后,你就可以前往手机上的 Magisk App:
- 打开 Magisk App,点击最下方的 “卸载 Magisk”。
- 选择 “完全卸载”(或“还原原厂镜像”)。
- 等待手机自动重启完成。
重启后,你的手机系统已经恢复为完全没有 Magisk没有常规 Root 残留的纯净原厂状态。
注意:若重启Magisk 还在(自动安装),无法卸载,直接fastboot 刷入原厂boot.img或者下载最新完整包安装。
此时,你只需要确保手机的 “USB 调试” 开关保持开启(注意:不是那个有 Bug 的“无线调试”开关,就是最基础的那个 USB 调试)。
系统内部的 adbd 服务由于读取到了我们之前写入的永久属性,会在后台自动将 5555 端口与 USB 调试进行双重绑定 [1.2.1]。
任何时候,你的电脑只要输入:
adb connect <手机IP>:5555
无需任何操作,瞬间秒连!
第五阶段:ADB 检查手机是否 Root
方法一:测试 su 提权并查看身份(最推荐最准确)
这个方法能直接测试手机的 Root 权限是否能被正常调用。请在终端执行:
adb shell "su -c id"
(注:如果连接了多台设备,请记得加上 -s <设备IP或序列号>,例如 adb -s 192.168.31.109:5555 shell "su -c id")
- 已成功 Root 的结果:
终端会输出包含uid=0(root)的信息,例如:
这说明uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0su命令执行成功,且当前已经成功拿到了系统的最高权限(uid=0就是 root 身份)。 - 未 Root(或 Root 权限被拒绝)的结果:
终端会报错提示:
或者在手机屏幕弹出的授权申请中你点击了“拒绝”,终端会提示/system/bin/sh: su: inaccessible or not foundPermission denied(权限被拒绝)。
方法二:检查 su 文件是否存在(检查 Root 痕迹)
这个方法用于查看系统里有没有放置 Root 提权文件:
adb shell which su
- 已成功 Root 的结果:
终端会输出su文件在手机里的具体路径,常见的路径有:/system/bin/su/system/xbin/su/data/adb/magisk/su
- 未 Root 的结果:
终端无任何输出(返回空白行)。
方法三:测试 ADB 守护进程原生 Root(开发/测试版系统常见)
如果你使用的是官方的开发版(Userdebug)系统,或者是某些专门的测试系统,可以直接尝试让整个 ADB 进程以 Root 身份运行:
adb root
- 支持 ADB Root 的结果:
终端会提示:restarting adbd as root。
此时你再输入adb shell进入手机,提示符会直接变成#,不需要再手动输入su,你发出的任何 ADB 指令都默认拥有最高 Root 权限。 - 不支持(普通零售版系统)的结果:
终端会提示:adbd cannot run as root in production builds(生产版本中 adbd 无法以 root 运行)。
🔒 终极方案的安全建议
虽然通过该方案可以获得极致的无线调试体验,但由于 5555 端口在手机开机后处于常开状态,请遵循以下安全防范建议:
- 切勿在公共 Wi-Fi 网络下暴露调试:
在商场机场等公共 Wi-Fi 网络中,局域网内的攻击者可能会通过扫描 5555 端口来尝试连接。 - 不要随意允许未知的授权申请:
如果局域网内有其他不认识的设备尝试发起连接,虽然它们因为没有私钥会被直接拒绝,但你的手机屏幕上依然会弹出标准的“是否允许 USB 调试”的询问弹窗。一旦看到不属于你电脑的未知请求,请一律点击拒绝。
方法2:root解决,然后卸载root
20260623失效,发现没这个文件
一发现问题
抓取日志定位崩溃原因:
adb -s 9xgiheqwjbbmxovo logcat -v threadtime | findstr /i "adbd crash reboot AdbDebugging"
日志关键行:
E AdbDebuggingManager: Expected keyStore but got tag=adbKey
E AdbDebuggingManager: Failed to register pairing service(err=0)
E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: AdbDebuggingManager
at AdbDebuggingManager$PairingThread.run(AdbDebuggingManager.java:247)
根本原因: Android 12 迁移了 TLS 配对证书存储格式,MIUI 没有正确处理旧格式 adbKey 到新格式 keyStore 的迁移,每次配对都往 /data/misc/keystore/ 写入一条损坏记录,积累约5天后 PairingThread 初始化崩溃 → system_server 崩溃 → 手机强制重启。
二获取 root(参考:第五章:Magisk Root 刷机全攻略)
前提:BL 已解锁
1. 下载 Magisk
去 https://github.com/topjohnwu/Magisk/releases/latest 下载 Magisk-v28.1.apk 安装到手机。
2. 修补 boot.img
从当前系统线刷包(cannon_images_V14.0.6.0.SJECNXM_xxx)解压出 boot.img,传到手机:
adb -s 9xgiheqwjbbmxovo push D:\miui\not95g\boot.img /sdcard/boot.img
打开 Magisk App → 安装 → 选择并修补一个文件 → 选 boot.img → 开始,生成 magisk_patched_xxx.img,传回电脑:
adb -s 9xgiheqwjbbmxovo pull /sdcard/Download/magisk_patched_xxx.img D:\miui\not95g\
3. 刷入(手机进 fastboot 模式:关机 + 音量下 + 电源键)
fastboot flash boot "D:\miui\not95g\magisk_patched_xxx.img"
fastboot reboot
联发科平台 vbmeta.img 不是标准 AVB 格式,跳过不刷,直接刷 boot 即可正常开机。
三root 后清除损坏证书文件
adb -s 9xgiheqwjbbmxovo shell su -c "rm -rf /data/misc/adb/*"
adb -s 9xgiheqwjbbmxovo shell su -c "rm -rf /data/misc/keystore/user_0/USRPKEY_adb*"
adb -s 9xgiheqwjbbmxovo shell reboot
重启后配对码功能恢复正常,不再重启。
四卸载 Magisk 还原干净
Magisk App → 右上角齿轮⚙️ → 卸载 Magisk → 还原原厂镜像 → 确认
手机自动重启,boot.img 还原为原始状态,root 彻底清除,系统恢复出厂干净状态。
五复发处理(约每5天一次)
问题会周期性复发,复发时重复二三四步骤即可。
或者保留 Magisk root,在 myaccessibility App 里加定期自动清理,彻底根治:
// 每2天自动执行一次
Runtime.getRuntime().exec(arrayOf("su" "-c"
"rm -rf /data/misc/adb/* && rm -rf /data/misc/keystore/user_0/USRPKEY_adb*"))
方法3:(失效)
一、核心结论
你这个问题是 MIUI 14.0.6.0 底层 BUG: 只要点 使用配对码配对设备 → 系统进程崩溃 → 手机强制重启 无法通过开关设置修复,只能绕开配对码
你执行的命令 已经永久修复,原理:
- 用 USB 线 强制开启 5555 无线端口
- 彻底跳过配对码弹窗
- 以后 永远不用点配对,直接连接
- 全程不触发重启机制
二、完整可复制教程(别人也能用)
准备工作
- 手机开启:USB 调试 + 无线调试
- 手机用 USB 线连接电脑
- 电脑打开 PowerShell
三、直接复制这 6 条命令(按顺序)
# 1. 关闭无线调试
adb shell settings put global adb_wifi_enabled 0
# 2. 关闭全局ADB
adb shell settings put global adb_enabled 0
# 3. 清除旧授权(修复冲突)
adb shell rm -rf /data/system/adb_keys
adb shell rm -rf /data/local/tmp/*
# 4. 重新开启ADB
adb shell settings put global adb_enabled 1
# 5. 强制固定无线端口 5555(关键!跳过配对)
adb tcpip 5555
# 6. 无线连接(拔掉USB也能用)
adb connect 192.168.31.240:5555
四、成功标志
出现这两句 = 100% 成功
restarting in TCP mode port: 5555
connected to 192.168.31.240:5555
五、以后使用方法(永远不重启)
1. 拔掉 USB 线
2. 以后每次只用这 1 条命令
adb connect 192.168.31.240:5555
3. 绝对不要做
❌ 永远不要点:使用配对码配对设备 一点就重启,这是系统 BUG
六、为什么这命令能解决?(原理)
-
settings put global adb_wifi_enabled 0关闭系统无线调试,切断崩溃触发点 -
rm -rf /data/system/adb_keys删除损坏的授权文件,这是重启根源 -
最重要:adb tcpip 5555 直接通过有线 强制开启无线调试 不经过配对流程 → 不弹窗 → 不崩溃 → 不重启
七、手机重启后怎么办?
只需要重新输一次:
adb connect 192.168.31.240:5555
不用插线 不用配对 不弹窗 不重启
你现在的状态
✅ 无线调试正常 ✅ 不用配对码 ✅ 不弹窗 ✅ 不重启 ✅ 拔掉线能用 ✅ 永久稳定
需要我给你做一个 1 句话极简使用说明 吗?你以后照着用就行。
评论区(0 条)
发表评论⏳ 加载编辑器…