【记录】强行开启 ADB 的无线调试功能

Last updated on December 25, 2024 pm

某无法 root 的X之光手机阉割了无线调试功能,因此只能曲线救国,尝试通过其他方法开启无线调试功能。

准备工作

安装 Shizuku

  • 开启 USB 调试,并允许仅充电时调试
1
2
3
4
5
6
7
adb devices
.\adb.exe install -t '.\termux.apk'
.\adb.exe install -t '.\shizuku.apk'
.\adb.exe install -t '.\packageviewer.apk'

adb shell
sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
  • 关闭 termuxShizuku 的电池优化,并在自启动里手动管理允许所有启动方式
  • Shizuku-在终端应用中使用Shizuku 中导出 rish 文件到 termux
  • termux 中运行下列命令
1
2
3
4
5
6
7
8
9
pkg up 
pkg install nmap android-tools
termux-setup-storage
termux-wake-lock

sed -i 's/ID="PKG"/ID="com.termux"/' rish
chmod +x rish
mv rish ~/../usr/bin/
mv rish_shizuku.dex ~/../usr/bin/
  • termux 中运行 rish 进入adb shell
1
pm grant com.termux android.permission.WRITE_SECURE_SETTINGS

开启无线调试

1
2
3
4
getprop service.adb.tcp.port
# 为空说明没有开启无线调试
setprop service.adb.tcp.port 35555
# 开启无线调试到 tcp 35555 端口
  • 此时并没有生效,去开发者里关闭ADB并重新打开
  • 然后会发现 Shizuku 的 ADB 掉了,但是没有关系
  • 重新到 Shizuku 界面会发现多了一个通过无线调试启动的选项
  • 点击启动,然后允许调试即可恢复 Shizuku 的 ADB

后台保活

  • 需要安卓版本为 12 12L 13 之一
  • 将下面的脚本保存为 AcBat.sh,放到 Download 目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!sh

# 定义颜色
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[34m'
NC='\033[0m' # No Color

# 检测 Android 版本
get_android_version() {
local version=$(getprop ro.build.version.release)
echo $version
}

# 检测是否有 GMS
has_gms() {
if '[ -d "/system/priv-app/GoogleServicesFramework" ] || [ -d "/system/app/GoogleServicesFramework" ]'; then
return 0
else
return 1
fi
}

# 激活函数
activate() {
echo -e "${GREEN}激活中...${NC}"
local android_version=$(get_android_version)

if [[ "$android_version" == "12L" ]] || [[ "$android_version" == "13" ]]; then
settings put global settings_enable_monitor_phantom_procs false
elif [[ "$android_version" == "12" ]]; then
if has_gms; then
device_config set_sync_disabled_for_tests persistent
device_config put activity_manager max_phantom_processes 2147483647
else
device_config put activity_manager max_phantom_processes 2147483647
fi
else
echo -e "${RED}不支持的 Android 版本: $android_version${NC}"
return
fi

sleep 1 # 等待设置生效
echo -e "${GREEN}激活成功。${NC}"
}

# 取消激活函数
deactivate() {
echo -e "${RED}取消激活中...${NC}"
local android_version=$(get_android_version)

if [[ "$android_version" == "12L" ]] || [[ "$android_version" == "13" ]]; then
settings delete global settings_enable_monitor_phantom_procs
elif [[ "$android_version" == "12" ]]; then
device_config delete activity_manager max_phantom_processes
device_config delete activity_manager set_sync_disabled_for_tests
else
echo -e "${RED}不支持的 Android 版本: $android_version${NC}"
return
fi

sleep 1 # 等待设置生效
echo -e "${RED}取消激活成功。${NC}"
}

# 查看当前值函数
view_values() {
local android_version=$(get_android_version)

echo -e "${BLUE}Android 版本: $android_version${NC}"

if [[ "$android_version" == "12L" ]] || [[ "$android_version" == "13" ]]; then
echo -e "${BLUE}settings_enable_monitor_phantom_procs 值:${NC}"
settings get global settings_enable_monitor_phantom_procs
elif [[ "$android_version" == "12" ]]; then
echo -e "${BLUE}max_phantom_processes 值:${NC}"
device_config get activity_manager max_phantom_processes
echo -e "${BLUE}set_sync_disabled_for_tests 值:${NC}"
device_config get activity_manager set_sync_disabled_for_tests
else
echo -e "${RED}不支持的 Android 版本: $android_version${NC}"
fi
}

view_values
activate
view_values
  • 打开 termux
1
2
3
4
5
6
adb connect localhost:35555
# 此时跳出允许调试,勾上始终允许,但此命令本身会失败
adb connect localhost:35555
# 再次执行,即可成功
adb shell sh sdcard/Download/AcBat.sh
# 即可起到和rish相同的效果

【记录】强行开启 ADB 的无线调试功能
https://hexo.limour.top/force-enable-adb-wireless-debugging
Author
Limour
Posted on
December 25, 2024
Updated on
December 25, 2024
Licensed under