在Android上运行Kivy应用时遭遇ImportError问题求助
解决Kivy在Android上的_PyGen_Send符号缺失问题
核心原因
这个错误本质是编译Kivy的Python版本与运行时Python版本不匹配:_PyGen_Send是Python 3.10+的生成器相关符号,若Kivy的二进制包(如_event.so)是用更低版本Python编译的,或是Python for Android打包时使用的Python版本与本地开发的3.10.10不一致,就会出现符号找不到的情况。
具体修复步骤
用Python for Android(P4A)重新编译适配Python 3.10的Kivy包
不要使用预编译的Kivy wheel,直接通过P4A的recipes编译:python -m pythonforandroid recipes kivy --version 2.2.0 --python 3.10确保打包时指定的Python版本和本地开发的3.10.10完全一致,P4A会自动匹配编译环境。
明确buildozer的Python版本配置
在buildozer.spec文件中指定对应Python版本:android.python_version = 3.10同时升级P4A和buildozer到最新版本,避免版本兼容问题:
pip install --upgrade python-for-android buildozer清理旧编译缓存
旧缓存可能残留不同版本的编译产物,引发冲突:buildozer android clean rm -rf .buildozer/之后重新执行打包命令:
buildozer android debug deploy run验证架构兼容性
确认Android设备架构(arm64-v8a/armeabi-v7a)与打包时指定的架构一致,避免因架构不兼容导致符号加载失败。在buildozer.spec中设置:android.arch = arm64-v8a
内容的提问来源于stack exchange,提问作者imelmat
相关产品推荐
相关产品推荐

