通过ADB调试OrangePi
1、下载adb
Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
2、配置环境变量
解压安装后,把解压路径放到系统变量里去(Path),
环境变量如何配置,比如我的配置如下图:

4、电脑打开cmd窗口
输入 adb version :显示 adb 版本,说明安装成功

5.安装软件

1.adb root
adb root # 重启adbd为root模式
adb shell # 进入交互式shell
su -c "你的命令" # 通过su执行特权命令
获取预编译的 libgpiod 库 :可以在一些开源项目或社区提供的安卓库资源网站上查找是否有已经编译好的 libgpiod 库文件,如 soimy/libgpiod-android 或 RedLeavesSun/libgpiod-android 等。
导入安卓项目 :将下载的预编译库文件解压后,将其对应的.so 库文件复制到安卓项目的 libs 目录下,如app/src/main/jniLibs/armeabi-v7a/,并正确配置 Android.mk 或 CMakeLists.txt 文件中对该库的引用。
查看文件 CD接入文件夹 cd ..退回上一级文件夹



把文件从香橙派拷贝出来

通过adb logcat监控库加载过程,过滤dlopen相关错误
调试期间报如下错误
10-17 16:41:28.203 25132 25132 D wiringPi: piBoardId: BOARD=orangepi5
10-17 16:41:28.203 25132 25132 D wiringPi: wiringPiSetup: open /dev/mem: Permission denied
10-17 16:41:28.215 25132 25179 I scudo : Scudo ERROR: invalid chunk state when deallocating address 0x200006fda0a0e20
- 核心问题分析
错误日志显示两个关键问题:
/dev/mem 访问被拒绝(Permission denied)7
内存分配异常(Scudo ERROR)5
根本原因是 WiringPi 需要直接访问硬件内存空间,但普通用户无权限操作 /dev/mem 设备节点7。
adb shell # 连接设备
su # 切换root用户
chmod 666 /dev/mem # 临时开放读写权限
通过IP链接Orange Pi
// 给当前连接的设备指定一个监听的端口
adb tcpip 5555
// 使用手机IP地址进行无线连接
adb connect 192.168.1.xxx
//查看设备的连接情况
adb devices
若 adb devices 显示重复或离线设备,重启 ADB 服务
adb kill-server && adb start-server
/system/media/bootanimation.zip(旧版)
/system/product/media/bootanimation.zip(主流新设备)
/system/vendor/media/bootanimation.zip(部分厂商定制)
通过 ADB 或终端替换动画文件
方法一:使用 ADB(推荐,安全稳定)
在电脑上安装 Android SDK Platform-Tools
连接 Orange Pi CM4 到电脑(通过 USB OTG 或网络 ADB)
启用开发者选项 → 启用 ADB 调试
执行以下命令:
adb shell
su
mount -o rw,remount /system
rm /system/media/bootanimation.zip
exit
adb push your_bootanimation.zip /system/media/bootanimation.zip
adb shell chmod 644 /system/media/bootanimation.zip
adb reboot
方法二:直接在 Orange Pi 终端操作(需已 root)
su
mount -o rw,remount /system
cd /system/media
rm bootanimation.zip
将您的 bootanimation.zip 上传到设备(如通过 scp 或 U盘)
cp /sdcard/bootanimation.zip /system/media/
chmod 644 /system/media/bootanimation.zip
reboot

:logcat(抓取系统日志)、systrace(分析性能瓶颈)、adb shell dumpsys(查看服务运行状态)。
查看文件 cat /data/local/userinit.sh
1. 重启设备
adb reboot
2. 等待设备启动(约30秒)
3. 查看开机日志
adb logcat -d | grep "BootReceiver"
应该看到:
BootReceiver: 设备启动完成!
BootReceiver: 检测到静态IP配置: 192.168.1.100
BootReceiver: 启动EthernetConfigService...
BootReceiver: EthernetConfigService已通过StartForegroundService启动
1. 推送测试脚本
adb push TestBootService.sh /sdcard/
2. 执行测试
adb shell sh /sdcard/TestBootService.sh
3. 查看服务状态
adb shell ps | grep G60App
adb shell ip addr show eth0
重启设备后,使用以下命令查看日志
adb logcat | grep -i "EthernetConfigService"
、、、
EthernetConfigService.OnStartCommand: 服务启动
EthernetConfigService: 等待系统网络服务启动...
EthernetConfigService: 等待完成
EthernetConfigService: StaticIPConfigured = True
EthernetConfigService: 配置信息 - IP:192.168.31.88, Gateway:192.168.31.1
EthernetConfigService: 开始恢复网络配置 - Ethernet 192.168.31.88
EthernetConfigService: 开始恢复循环,最多3次尝试
EthernetConfigService: 第1次尝试
...
EthernetConfigService: IP配置恢复成功
、、、
2. 检查服务是否运行
adb shell dumpsys activity services | grep EthernetConfigService
- 手动测试服务
可以使用adb命令手动启动服务
adb shell am startservice -n com.companyname.g60app/crc64b21b9e78acb870f8.EthernetConfigService
电池优化:确保应用已添加到电池优化白名单,否则开机广播可能无法接收
权限:确保应用有所有必要的权限
日志:如果服务未启动,请查看完整logcat日志寻找错误信息
.NET MAUI 预览PDF的库
Vitvov.Maui.PDFView
浙公网安备 33010602011771号