【RK3588 Android12】ADB调试环境配置

1. 概述

ADB (Android Debug Bridge) 是Android开发调试的核心工具,提供了设备与PC之间的通信桥梁。本文详细介绍RK3588 Android12平台的ADB配置、连接方式、权限获取及常见问题解决。

1.1 ADB功能

  • 文件传输(push/pull)
  • 应用安装/卸载
  • Shell命令执行
  • 日志查看(logcat)
  • 端口转发
  • 屏幕截图/录屏

1.2 连接方式

  • USB连接(最常用)
  • 网络连接(WiFi/以太网)
  • 串口连接(特殊场景)

2. USB ADB配置

2.1 PC端ADB工具安装

Ubuntu系统
复制代码
# 方法1:apt安装(推荐)
sudo apt update
sudo apt install android-tools-adb android-tools-fastboot

# 方法2:下载SDK Platform Tools
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip platform-tools-latest-linux.zip
sudo mv platform-tools /opt/
echo 'export PATH=$PATH:/opt/platform-tools' >> ~/.bashrc
source ~/.bashrc

# 验证安装
adb version
Windows系统
复制代码
# 下载并安装
# https://developer.android.com/studio/releases/platform-tools

# 添加到系统PATH
# 控制面板 -> 系统 -> 高级系统设置 -> 环境变量
# 添加:C:\platform-tools

2.2 设备端USB配置

设备树配置
复制代码
// kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-xxx.dts
&usbdrd3_0 {
    status = "okay";
};

&usbdrd_dwc3_0 {
    status = "okay";
    dr_mode = "peripheral";  // 或 "otg"
};

&u2phy0 {
    status = "okay";
};

&u2phy0_otg {
    status = "okay";
};
init.rc配置
复制代码
# device/rockchip/rk3588/init.rk3588.rc
on boot
    # 启用ADB
    setprop persist.sys.usb.config adb
    
on property:sys.usb.config=adb
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 2207
    write /sys/class/android_usb/android0/idProduct 0006
    write /sys/class/android_usb/android0/functions adb
    write /sys/class/android_usb/android0/enable 1
    start adbd

2.3 USB权限配置(Linux)

复制代码
# 创建udev规则
sudo vim /etc/udev/rules.d/51-android.rules

# 添加RK设备规则
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0006", SYMLINK+="android_adb"

# 重新加载规则
sudo udevadm control --reload-rules
sudo udevadm trigger

# 添加用户到plugdev组
sudo usermod -aG plugdev $USER

2.4 连接测试

复制代码
# 连接设备后查看
adb devices

# 正常输出
List of devices attached
1234567890ABCDEF    device

# 如果显示unauthorized
# 设备端会弹出授权对话框,点击"允许"

3. 网络ADB配置

3.1 WiFi ADB

方法1:通过USB先连接
复制代码
# 1. USB连接设备
adb devices

# 2. 获取设备IP
adb shell ip addr show wlan0 | grep inet

# 3. 启用网络ADB(端口5555)
adb tcpip 5555

# 4. 断开USB,通过网络连接
adb connect 192.168.1.100:5555

# 5. 验证连接
adb devices
方法2:设备端直接启用
复制代码
# 串口或终端执行
setprop service.adb.tcp.port 5555
stop adbd
start adbd

# 查看监听端口
netstat -tuln | grep 5555

3.2 以太网ADB

复制代码
# 获取以太网IP
adb shell ip addr show eth0 | grep inet

# 连接
adb connect 192.168.1.100:5555

3.3 开机自动启用网络ADB

复制代码
# device/rockchip/rk3588/init.rk3588.rc
on boot
    # 启用网络ADB
    setprop service.adb.tcp.port 5555
    setprop persist.adb.tcp.port 5555
    
on property:persist.adb.tcp.port=*
    restart adbd

4. Root权限获取

4.1 userdebug版本(默认可root)

复制代码
# 查看版本类型
adb shell getprop ro.build.type
# 输出:userdebug

# 直接获取root
adb root

# 重新挂载system为可写
adb remount

# 验证
adb shell
# 提示符变为 #

4.2 user版本启用root

修改编译配置
复制代码
# device/rockchip/rk3588/BoardConfig.mk
# 注释掉user版本限制
# BOARD_BUILD_TYPE := user

# 或修改为userdebug
BOARD_BUILD_TYPE := userdebug
修改init.rc
复制代码
# system/core/rootdir/init.rc
on property:ro.debuggable=1
    # 允许root
    write /proc/sys/kernel/sysrq 1

4.3 临时获取root(已root设备)

复制代码
# 方法1:su命令
adb shell
su

# 方法2:直接root shell
adb shell su -c "command"

# 方法3:adb root(需要ro.debuggable=1)
adb root

5. Remount系统分区

5.1 传统方法

复制代码
# 1. 获取root权限
adb root

# 2. 重新挂载
adb remount

# 3. 验证
adb shell mount | grep system
# 输出应包含 rw(可读写)

5.2 Android 10+动态分区

复制代码
# 1. 禁用dm-verity
adb root
adb disable-verity
adb reboot

# 2. 重新挂载
adb root
adb remount

# 3. 手动挂载(如果remount失败)
adb shell
mount -o rw,remount /system
mount -o rw,remount /vendor

5.3 修改只读属性

复制代码
# 临时修改
adb shell
setenforce 0  # 关闭SELinux
mount -o rw,remount /

# 永久修改(编译时)
# device/rockchip/rk3588/fstab.rk3588
/dev/block/by-name/system  /system  ext4  ro,barrier=1  wait,avb
# 改为
/dev/block/by-name/system  /system  ext4  rw,barrier=1  wait,avb

6. ADB常用命令

6.1 设备管理

复制代码
# 列出设备
adb devices -l

# 指定设备操作(多设备时)
adb -s 1234567890ABCDEF shell

# 等待设备连接
adb wait-for-device

# 重启设备
adb reboot
adb reboot bootloader  # 进入fastboot
adb reboot recovery    # 进入recovery

6.2 文件操作

复制代码
# 推送文件到设备
adb push local_file /sdcard/
adb push app.apk /data/local/tmp/

# 从设备拉取文件
adb pull /sdcard/file.txt ./
adb pull /system/build.prop ./

# 同步目录
adb push -p local_dir/ /sdcard/remote_dir/

6.3 应用管理

复制代码
# 安装APK
adb install app.apk
adb install -r app.apk  # 覆盖安装
adb install -g app.apk  # 授予所有权限

# 卸载应用
adb uninstall com.example.app
adb uninstall -k com.example.app  # 保留数据

# 列出应用
adb shell pm list packages
adb shell pm list packages -3  # 第三方应用
adb shell pm list packages -s  # 系统应用

# 清除应用数据
adb shell pm clear com.example.app

6.4 日志查看

复制代码
# 实时日志
adb logcat

# 过滤日志
adb logcat -s TAG
adb logcat *:E  # 只显示错误
adb logcat | grep "keyword"

# 保存日志
adb logcat -d > logcat.txt

# 清除日志
adb logcat -c

# 内核日志
adb shell dmesg
adb shell cat /proc/kmsg

6.5 Shell命令

复制代码
# 进入shell
adb shell

# 执行单条命令
adb shell ls -l /system/app

# 查看属性
adb shell getprop
adb shell getprop ro.build.version.release

# 设置属性
adb shell setprop debug.test 1

# 截图
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png

# 录屏
adb shell screenrecord /sdcard/demo.mp4
# Ctrl+C停止录制
adb pull /sdcard/demo.mp4

7. 调试技巧

7.1 端口转发

复制代码
# 转发设备端口到PC
adb forward tcp:8080 tcp:8080

# 反向转发(PC端口到设备)
adb reverse tcp:8080 tcp:8080

# 列出转发
adb forward --list

# 移除转发
adb forward --remove tcp:8080
adb forward --remove-all

7.2 无线调试优化

复制代码
# 保持WiFi常开
adb shell settings put global wifi_sleep_policy 2

# 禁用WiFi省电模式
adb shell settings put global wifi_power_save 0

# 固定IP(避免IP变化)
# 在路由器中绑定MAC地址

7.3 多设备管理脚本

复制代码
#!/bin/bash
# adb_multi.sh

# 列出所有设备
devices=$(adb devices | grep -v "List" | awk '{print $1}')

# 对每个设备执行命令
for device in $devices; do
    echo "=== Device: $device ==="
    adb -s $device shell getprop ro.product.model
    adb -s $device shell getprop ro.build.version.release
done

8. 常见问题

8.1 设备未识别

现象adb devices 无输出或显示 unauthorized

排查步骤

复制代码
# 1. 检查USB连接
lsusb | grep 2207

# 2. 检查udev规则
cat /etc/udev/rules.d/51-android.rules

# 3. 重启adb服务
adb kill-server
adb start-server

# 4. 检查设备端adbd
adb shell ps -A | grep adbd

# 5. 查看USB配置
adb shell getprop sys.usb.config

解决方法

复制代码
# 设备端重启adbd
adb shell
stop adbd
start adbd

# 或通过属性触发
setprop sys.usb.config adb

8.2 无法remount

现象adb remount 失败,提示 Read-only file system

解决方法

复制代码
# 1. 禁用dm-verity
adb root
adb disable-verity
adb reboot

# 2. 重新尝试
adb root
adb remount

# 3. 手动挂载
adb shell
mount -o rw,remount /system
mount -o rw,remount /vendor

8.3 网络ADB断开

现象:WiFi ADB频繁断开

解决方法

复制代码
# 1. 禁用WiFi休眠
adb shell settings put global wifi_sleep_policy 2

# 2. 保持唤醒
adb shell settings put global stay_on_while_plugged_in 7

# 3. 使用有线网络
# 以太网比WiFi更稳定

# 4. 脚本自动重连
#!/bin/bash
while true; do
    adb connect 192.168.1.100:5555
    sleep 60
done

8.4 权限不足

现象 :执行命令提示 Permission denied

解决方法

复制代码
# 1. 获取root权限
adb root

# 2. 关闭SELinux
adb shell setenforce 0

# 3. 修改文件权限
adb shell chmod 777 /path/to/file

# 4. 修改文件所有者
adb shell chown root:root /path/to/file

8.5 端口被占用

现象adb start-server 失败,提示端口占用

解决方法

复制代码
# 1. 查找占用进程
lsof -i :5037
netstat -tuln | grep 5037

# 2. 杀死进程
kill -9 <PID>

# 3. 重启adb
adb kill-server
adb start-server

# 4. 更换端口
export ANDROID_ADB_SERVER_PORT=5038
adb -P 5038 start-server

9. 安全配置

9.1 生产环境禁用ADB

复制代码
# device/rockchip/rk3588/init.rk3588.rc
on boot
    # 禁用ADB
    setprop persist.sys.usb.config mtp
    stop adbd

9.2 限制ADB访问

复制代码
# 只允许特定PC连接
# 1. 生成adb密钥
adb keygen ~/.android/adbkey

# 2. 将公钥推送到设备
adb push ~/.android/adbkey.pub /data/misc/adb/adb_keys

# 3. 重启adbd
adb shell stop adbd
adb shell start adbd

9.3 网络ADB安全

复制代码
# 1. 使用防火墙限制IP
iptables -A INPUT -p tcp --dport 5555 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 5555 -j DROP

# 2. 使用VPN
# 通过VPN连接设备,避免公网暴露

# 3. 定期更换端口
setprop service.adb.tcp.port 5556

10. 总结

ADB是Android开发的必备工具,掌握其配置和使用技巧能大幅提升开发效率。关键要点:

  1. USB连接:配置udev规则,确保设备识别
  2. 网络连接:适合无USB场景,注意安全性
  3. Root权限:userdebug版本可直接root
  4. Remount:Android 10+需要disable-verity
  5. 常用命令:熟练掌握文件、应用、日志操作
  6. 安全配置:生产环境务必禁用ADB

参考资料

  1. Android Debug Bridge (adb)
  2. RK3588 USB配置指南
  3. Android ADB源码
相关推荐
_F_y5 小时前
数据库基础
数据库·adb
fatiaozhang95277 小时前
创维E900V22C/E900V22D_晶晨S905L3A(B)_带adb root_支持外置系统_主页设置正常_支持IPV6_完美线刷包
adb·创维e900v22c·创维e900v22d·晶晨s905l3ab
尽兴-8 小时前
深入理解MySQL EXPLAIN工具与索引优化最佳实践
mysql·adb·dba·索引·explain·索引优化
a程序小傲17 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
舰长11519 小时前
linux安装mysql8.0.43 最新版本
adb
大霞上仙1 天前
adb 远程连接设备
adb
舰长1151 天前
win安装mysql8.0最新版本
adb
YIN_尹1 天前
【MySQL】数据类型(下)
android·mysql·adb
hunjinYang1 天前
MySQL:一条SQL查询语句是如何执行的?
sql·mysql·adb