问题描述
在一个嵌入式非图形界面的 Android 设备上,需要在没有屏幕和仅通过 UART 控制台的情况下启用并启动 Android Debug Bridge
(adb)。目标是能够使用 adb 进行调试。
问题核心在于如何不依赖开发者设置来直接从串口 Shell 启动 adb 服务或访问 adb 命令。
解决方案
方案1: 通过系统服务启动adb
请注意以下操作可能涉及修改 Android 系统,建议备份相关文件以备不时之需。
在某些设备上,即使没有Developer Options
开启,仍然可以通过系统的服务框架启动 adb 服务。
进入系统服务管理器或 shell 并使用如下命令尝试启动
adbd
:
shell
start adbd如果上述命令失败或者无反应,请在
/system/etc/init
目录下查找相关 init 脚本文件,例如ueventd.rc
、init.rc
等,并手动启用或运行adbd
服务。可能需要确保
/data/local/tmp
目录以读写权限存在:
shell
mkdir -p /data/local/tmp
mount -o rw,remount /system如果 adb 即使在系统启动时未自动启动,可以尝试手动启动:
shell
./adbd
方案2: 通过开发者模式启用并镜像显示屏内容
虽然原始问题没有解决方法,但可以通过上述方法开启开发者模式,并使用
scrcpy
软件在电脑上显示手机屏幕进行进一步调试。按照如下步骤在串口 Shell 中操作:
运行系统服务相关的命令来启动开发者选项设置界面。
shell
am start -n com.android.settings/.DevelopmentSettings使用方向键选择“USB debugging”,再按空格进行确认。具体按键如题中所提到的:
- KEYCODE_DPAD_DOWN (不断下移光标)
最后一行 KEYCODE_SPACE + KEYCODE_DPAD_RIGHT + KEYCODE_SPACE
如果此时
adb
没有自动启动,可以尝试手动运行:
shell
adb start-server
方案3: 通过修改系统配置文件
在
/init.<your_board>.rc
文件中查找并启用相关的服务:
shell
service adbd /system/bin/adbd
on root
enable bg_start如果需要,可以通过更新 initramfs 或者内核镜像中的相应脚本来确保此项改变持久化。
通过以上方案,用户应能够更灵活地在嵌入式 Android 设备上启用 adb 命令,并进行调试工作。如果遇到具体问题可以在官方开发者文档或社区寻求更多帮助。