使用Kivy构建的APK启动报错:mediapipe相关ImportError问题求助
问题原因
错误提示中的*EM_X86_64*表明你打包的MediaPipe库是x86_64架构的二进制文件,但你的Nokia 6搭载的是ARM架构处理器(骁龙430支持armeabi-v7a/arm64-v8a),Android系统无法加载与设备架构不匹配的动态链接库(.so文件),导致启动失败。其他Kivy应用正常是因为它们的依赖没有架构专属的二进制文件,或自动适配了设备架构。
解决方案
1. 修改Buildozer.spec配置,指定目标ARM架构
打开你的buildozer.spec文件,添加或修改以下配置项,确保只构建ARM架构的安装包:
# 指定Android目标架构,适配Nokia 6的arm架构 android.arch = armeabi-v7a, arm64-v8a
2. 清理旧构建缓存
删除项目目录下的.buildozer文件夹,避免残留之前x86架构的编译产物:
rm -rf .buildozer
3. 重新构建APK
使用buildozer的清理构建命令,确保重新针对ARM架构编译所有依赖:
buildozer android debug deploy run --android-clean
4. 额外适配建议
- 确保
buildozer.spec中的requirements写法准确,避免直接引入预编译的x86版本依赖:Requirements: python3,kivy,kivymd,mediapipe,numpy,opencv-python - 若仍有兼容性问题,可尝试指定MediaPipe的稳定兼容版本(如0.8.9.1,该版本对Android交叉编译支持较好):
Requirements: python3,kivy,kivymd,mediapipe==0.8.9.1,numpy,opencv-python
验证
重新构建完成后,将APK安装到Nokia 6上,启动应用即可正常加载MediaPipe库并运行手势识别功能。
内容的提问来源于stack exchange,提问作者Minhaaz
相关产品推荐
相关产品推荐

