使用Buildozer打包Kivy/KivyMD安卓应用时setup.py报错退出状态1
Fixing Buildozer Installation Error with AST-0.0.2 Package for Kivy/KivyMD Android App
我之前也碰到过类似的打包问题,从你的日志来看,核心错误是Buildozer尝试安装一个早已废弃的第三方AST-0.0.2包时失败——这个包的setup.py在现代Python环境下无法正常执行egg_info步骤。下面是一步步的解决方法:
1. 排查AST包的来源
首先检查你的buildozer.spec配置文件里的requirements字段:
- 如果你手动添加了
AST,直接删掉!Python标准库已经自带ast模块,完全不需要安装第三方的同名包。 - 如果不是手动添加的,那就是某个依赖间接引入的。在本地虚拟环境运行以下命令确认:
如果输出里有pip freeze | grep -i astAST==0.0.2,说明是依赖链里带进来的,接下来我们要强制排除它。
2. 强制排除废弃的AST包
修改buildozer.spec里的requirements,添加--exclude=AST规则,示例如下:
requirements = kivy, kivymd, --exclude=AST
另外提醒一句:datetime和sqlite3是Python标准库的一部分,不需要加到requirements里,把它们从配置中移除可以避免不必要的依赖冲突。
3. 清理Buildozer缓存并重新构建
Buildozer的缓存目录可能残留了之前的错误构建文件,导致问题重复出现。执行以下命令清理:
# 清理安卓构建缓存 buildozer android clean # 彻底删除.buildozer缓存目录(可选,但能解决绝大多数缓存相关问题) rm -rf .buildozer
之后重新执行打包命令:
buildozer android debug
4. 额外检查版本兼容性
从日志能看到,Buildozer在安卓构建环境中使用的是Python3.8,而你本地是Python3.7。虽然Kivy和KivyMD的稳定版通常兼容这两个版本,但如果排除AST后仍然有错误,建议确认你使用的Kivy/KivyMD版本是否适配Python3.8(优先推荐使用最新的稳定版)。
内容的提问来源于stack exchange,提问作者Guhan SenSam
相关产品推荐
相关产品推荐

