WSL环境下Buildozer无法识别手机设备问题求助
WSL 环境 Buildozer 运行异常排查方案
1. 修复 Gradle 守护进程兼容问题
针对日志中出现的Gradle Daemon不兼容报错,按以下步骤处理:
- 进入项目目录执行
./gradlew --stop终止所有现存的Gradle守护进程 - 执行
rm -rf ~/.gradle/daemon/删除历史守护进程缓存文件,避免版本冲突残留 - 在项目的
buildozer.spec配置文件中指定和虚拟机完全一致的Gradle版本,示例配置:android.gradle_version = 7.4.2
2. 解决 ADB 端口跨环境冲突问题
日志中出现的5037端口是ADB服务端口,WSL与Windows宿主共用ADB时极易出现冲突,按以下步骤修复:
- WSL侧与Windows侧的ADB版本必须完全一致,分别在WSL终端执行
adb version、Windows CMD执行adb version核对版本号,版本不同时直接统一更新到最新版即可 - 执行
adb kill-server关闭WSL侧的ADB服务 - 执行以下命令将WSL的ADB请求转发到Windows宿主的ADB服务:
export ADB_SERVER_SOCKET=tcp:$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):5037 - 执行
adb devices确认可以正常识别已连接的测试设备,无权限报错或空列表
3. 排查设备无响应问题
- 检查测试设备是否开启了USB调试、USB安装权限,部分国产设备还需额外开启「USB调试(安全设置)」允许通过USB安装、启动应用
- 找到Buildozer编译生成的APK文件(默认存放在项目根目录的
bin文件夹下),手动传输到设备安装运行,排查是否存在APK编译错误、安装失败、启动闪退问题 - 执行
adb logcat -s python *:S抓取应用启动日志,定位具体报错原因
4. 环境差异校验
- 不要将项目放在WSL的
/mnt/c/等Windows共享目录下编译运行,共享目录的文件系统权限、读写特性差异会导致编译异常,先将项目移动到WSL原生的ext4目录(如~/projects/)下再操作 - 核对WSL和虚拟机的依赖版本完全一致,分别执行
buildozer --version、java -version、python3 --version核对,建议JDK版本统一使用11
内容的提问来源于stack exchange,提问作者AloneWalker
相关产品推荐
相关产品推荐

