使用Buildozer构建Kivy安卓Hello World应用时进程停滞
解决M1 Mac上Buildozer构建Kivy Android程序停滞问题
问题背景
在搭载M1 Pro芯片的macOS Ventura系统上,使用Buildozer构建极简Kivy Hello World程序时,执行buildozer -v android debug后进程停滞一小时无进展,终端最后停在执行pythonforandroid.toolchain命令的步骤,且前期出现dpkg: command not found提示。已尝试重置spec文件和.buildozer文件夹、指定kivy版本,均未解决问题。
程序代码
import kivy kivy.require("2.1.0") from kivy.uix.label import Label from kivy.app import App class HelloWorldApp(App): def build(self): return Label(text="Hello World") if __name__ == "__main__": HelloWorldApp().run()
终端关键输出片段
# Check configuration tokens # Ensure build layout # Check configuration tokens # Read available permissions from api-versions.xml # Preparing build # Check requirements for android # Run 'dpkg --version' # Cwd None /bin/sh: dpkg: command not found ... # Run '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pythonforandroid.toolchain aab -h --color=always --storage-dir="/Users/leonlee/Documents/Programming/Python/Kivy/hello_world/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a" --ndk-api=21 --ignore-setup-py --debug' # Cwd /Users/leonlee/Documents/Programming/Python/Kivy/hello_world/.buildozer/android/platform/python-for-android
解决方案
1. 安装缺失的dpkg工具
M1 Mac原生没有dpkg,通过Homebrew安装:
brew install dpkg
安装后重新执行构建命令,消除依赖检查环节的异常提示,避免流程阻塞。
2. 修改Buildozer配置适配ARM架构
在buildozer.spec文件中添加以下配置:
# 指定适配M1的目标架构 android.archs = arm64-v8a # 指定已安装的兼容NDK版本 android.ndk = android-ndk-r25b # 锁定Python-for-Android分支为稳定版 p4a.branch = master
3. 彻底清理缓存后重新构建
删除旧构建文件,重置配置后重新执行:
rm -rf .buildozer rm buildozer.spec buildozer init # 手动修改spec中的title、package.name、package.domain,以及添加上述适配配置 buildozer -v android debug
4. 增加日志 verbosity 定位阻塞点
如果仍停滞,执行以下命令生成详细日志,查看具体阻塞环节:
buildozer -v android debug 2>&1 | tee build_log.txt
查看build_log.txt的最新输出,针对性处理依赖下载或编译环节的问题。
5. 切换到Homebrew安装的Python环境
M1 Mac上优先使用Homebrew提供的Python,避免架构不兼容:
brew install python@3.10 # 重新安装Buildozer和指定版本Kivy pip3 install buildozer kivy==2.1.0
内容的提问来源于stack exchange,提问作者Leon Lee
相关产品推荐
相关产品推荐

