【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源码
相关推荐
今天又在写代码1 天前
数据智能分析平台部署
adb
今天又在写代码1 天前
数据智能分析平台部署服务器
android·服务器·adb
不愿透露姓名的大鹏1 天前
MySQL Binlog配置优化全攻略
运维·服务器·数据库·mysql·adb
禹中一只鱼1 天前
【ADB 关键命令与配置速查笔记】(自用复盘版)
笔记·adb
姚永强2 天前
dns实验
adb
RInk7oBjo2 天前
MySQL的编译安装
数据库·mysql·adb
W-琑2 天前
adb的基本操作及原理
adb
bearpping3 天前
MySQL压缩版安装详细图解
android·mysql·adb
2601_949815334 天前
MySQL输入密码后闪退?
数据库·mysql·adb
.柒宇.4 天前
MySQL高级之备份与还原
数据库·mysql·adb