真无线ADB调试开启
Lastmod: 2023-06-17

在没有线的情况下,捣鼓了小半天,尝试调通ADB。

凭着以下信念。

1、ADB应该很有用,不能放弃。

2、手指点点点来打开开发者模式彩蛋和反复弹窗允许调试,是没必要的,一定有更直接的命令行模式绕过繁琐步骤。

3、我觉得可以。

这里的手机,默认指Android手机。

常规的ADB调试

手机:开发者模式-允许调试,连接数据线。

电脑:adb devices

手机:确认允许

电脑:adb shell

常规的无线ADB调试(不要求Android版本)

手机:开发者模式-允许调试,连接数据线。

电脑:adb devices

手机:确认允许

电脑:adb tcpip 5555 #端口任意;举例5555。

手机:拔线

电脑:adb connect [your_phone_ip]:5555

电脑:adb shell

高版本的无线配对ADB调试(Android >= 11)

手机:开发者模式-允许调试、允许无线调试。界面显示出IP与端口PORT

电脑:adb connect [IP]:[PORT]

*真·无线ADB调试(不要求Android版本/不要求GUI界面授权)

前置条件,获得一个手机的shell,ROOT权限。

我遇到的场景里,有telnet到手机的shell。

也可以在ROOT的手机端安装termux等模拟终端的APP。

开始。

手机端或电脑端使用ADB生成一个证书:

adb keygen myadbkey

获得一对myadbkey私钥与myadbkey.pub公钥。

将私钥放在电脑端的家目录下的.android/路径,形如:

#Linux:
/home/jojo/.android/myadbkey
#Windows:
C:\Users\jojo\.android\myadbkey

公钥则放在手机端的/data/misc/adb/目录,并务必重命名为adb_keys,设置恰当的用户组与权限。

cp myadbkey.pub /data/misc/adb/adb_keys

tee /data/misc/adb/adb_keys <<EOF
QAAAALUfkvpj6VpBLZR5eFHb06TIEPZ8AW6a/rMt83qjb7c7NE/2rXyQBV0fM7ma8J9kaQ8r+4V2mdLSOYNpNamMkSaI20GHju+4vA4HotjRQsIkn4hsVgBAqNpcbpvJG/LpAPPOdnmUhEikyciSTjin2TMUOlsSv5NqYzSs1LKc+2DlPqKYJBJLrjG3KUwWXa2IJlIjT8eSs2I1auWHY+x0qxmTCWPf0mJ7BSnVJDyDqd97LtiO3JtrGQk2sWmJ3xzJrkiiItTZkR76NVJ/w8pM6NhLtH6Tj/YH1iUXCzy/++uNcYeCtV/GMx8of1asEGR2sduP5tAQif2IWW1eOFEudTcBFZLAWMJtKqnvMaUnRXFAsgdeLAaTPvtsZ1YNJNCQkxvQU+qjq06sOytkDmLfKUnTiiTtMMDa4r9gy0GTsbQewXNRxFcgNc49Mop4pX5tRRr6tSyHsdOJqa77ta8cMol6qiwQOSKJY0JWOZJ5lXLMd936QE5drj/Opa70sS/8mhA6aDWo48+ieg5rGUp4fr2taD/tDy/hcnbjfYkVh03MwC5dJtnF2EuN7llpK5EQph8zcI1UVWWsbfl0WAAXaHjGrT1Tckiwu3kojDfmgSWFw7RYH5oxMhPLeBbRtoManaaU9BEwVFQsPCiHyB+Eg7Z96Vwq1zE24cRVVPxsmUnrxurVuQEAAQA= jyufu@ma22ko.local
EOF
chown system:shell /data/misc/adb/adb_keys
chmod 640 /data/misc/adb/adb_keys

手机端接着,运行adbd守护进程。

stop adbd
#可以使用netstat -anltp|grep adb命令,确认adbd进程关闭情况,进程仍存活就去开发者模式把允许调试取消,然后重启,再进行下一步。
setprop persist.adb.tcp.port 5555 #这里设置了5555端口
start adbd
#也可以直接adbd命令,adbd则会在前台运行并输出信息。

电脑端,双手合十,连接。

adb connect [your_phone_ip]:5555

adb devices
#可以看到device的标识,代表成功。
#List of devices attached
#192.168.68.135:5555     device

ADB的一些新奇玩法,还不知道,找找,以后要说说。

FAQ

1、/system/bin/sh: adbd: inaccessible or not found?

自己找真实路径,据有限样本观察,Android是配备了adb、adbd二进制的。

find / -name adbd 2>/dev/null

2、failed to authenticate to [IP]:5555?

再次确认公私钥证书有无放错位置,以及读写权限问题。

可以大胆把.android/、/data/misc/adb/adb_keys目录里的证书都删除。按如上步骤放好生成的证书。

电脑端重启adb服务。

adb stop-server
adb start-server

3、电脑端的ADB工具?

SDK 平台工具下载 https://developer.android.com/studio/releases/platform-tools?hl=zh-cn

目前最新33.03,Win11提示有个dll缺失,建议下载33.02版,https://dl.google.com/android/repository/platform-tools_r33.0.2-windows.zip?hl=zh-cn

Linux系统的adb命令,在ROOT权限下执行。不然提示no auth。

参考链接

android - Set adb vendor keys - Stack Overflow

Android ADB devices unauthorized - Stack Overflow

KMC Staff Blog:Androidのadbのメモ(7) Androidデバイス側でadbを動かす (kmckk.com)