Ubuntu环境下使用Buildozer打包Kivy应用为APK失败如何解决?
Buildozer打包Kivy应用失败原因及解决方案
失败原因排查
当前报错属于python-for-android工具链执行中断,结合给出的代码和运行环境,常见原因如下:
- kv文件未纳入打包配置:main.py中加载了
simpleForm.kv文件,但默认buildozer配置不会自动识别kv后缀的资源文件,导致打包时资源缺失触发编译中断 - WSL跨分区路径问题:项目存放在
/mnt/c(Windows NTFS分区挂载目录)下,WSL对该分区的文件权限、软链接支持存在缺陷,极易导致编译过程报错 - 依赖版本不兼容:配置的
kivymd==0.104.2.dev0开发版本与Kivy 2.0.0、NDK r19c的兼容性没有保障,易触发依赖编译失败 - 系统前置依赖缺失:Ubuntu环境未安装完整的编译依赖包,导致工具链执行中断
对应解决步骤
1. 修正buildozer.spec配置
- 找到配置文件中的
source.include_exts字段,添加kv后缀,修改后参考:source.include_exts = py,png,jpg,kv,atlas - 临时移除不稳定的开发版依赖测试,将
requirements字段修改为:
基础打包成功后再逐步添加kivymd等其他依赖requirements = python3,kivy==2.0.0,pillow
2. 解决WSL路径问题
将整个项目文件夹移动到WSL本地文件系统目录下执行操作,例如:
mv /mnt/c/TEMPKIVY ~/kivy_test/ cd ~/kivy_test/
3. 安装完整系统依赖
执行以下命令安装编译所需的全部前置依赖:
sudo apt update sudo apt install -y openjdk-8-jdk git zlib1g-dev build-essential libssl-dev libffi-dev python3-dev autoconf automake libtool pkg-config # 配置默认JDK为1.8版本 sudo update-alternatives --config java sudo update-alternatives --config javac
4. 清理缓存重新打包
删除原有编译缓存,重新执行打包命令:
rm -rf .buildozer buildozer -v android debug
5. 更精准的错误排查
如果以上操作仍然失败,修改buildozer.spec中log_level = 2后重新打包,查看完整日志定位具体错误点。
注意:main.py中设置的
Window.size = (800,230)仅在桌面端生效,安卓端会自动适配设备屏幕,不会影响打包结果。
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

