Kivy+Buildozer打包PY为APK报OpenCV缺失config.py错误
问题原因
你本地虚拟环境中找到的config.py是Ubuntu x86架构下的OpenCV配置文件,buildozer打包时默认不会将PyPI源安装的桌面版OpenCV的安卓兼容组件、对应架构的配置文件打包进APK。安卓设备运行时OpenCV加载器无法在APK内部找到适配安卓架构的config.py文件,就会抛出该导入错误,和你本地PC端的文件是否存在没有关系。
修复步骤
- 先卸载本地虚拟环境中所有桌面版OpenCV包,避免打包时错误引用x86架构的二进制文件:
pip uninstall -y opencv-python opencv-contrib-python - 修改项目根目录下的
buildozer.spec配置:- 找到
requirements配置项,替换为以下内容,确保依赖版本和你的开发环境对齐:
该配置会触发python-for-android拉取适配安卓架构的OpenCV编译版本,自动生成对应安卓环境的requirements = python3==3.10, kivy==2.1.0, numpy, opencv-contrib-python==4.6.0.66config.py并配置正确的库路径。 - 找到
android.permissions配置项,添加相机调用必需的权限:android.permissions = CAMERA, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE - 找到
android.archs配置项,设置为通用架构兼容绝大多数测试设备:android.archs = arm64-v8a, armeabi-v7a
- 找到
- 清理之前的打包缓存,避免旧的错误构建残留影响新包:
buildozer android clean - 卸载安卓测试设备上之前安装的闪退旧版APK,重新执行打包命令:
打包过程保持网络通畅,构建完成后将新生成的APK安装到设备即可正常运行。buildozer -v android debug
避坑提示
- 不要手动将本地Ubuntu环境下找到的
config.py复制到项目目录强行打包,该文件内BINARIES_PATHS配置的是你本地PC的库存放路径,安卓系统中不存在对应目录,强行打入会触发后续so库加载失败的错误。 - 4.6.0.66版本的OpenCV contrib安卓包已默认集成ArUco模块,不需要额外添加模块依赖。
- 如果重新打包后仍有权限相关报错,确认你的Kivy相机调用逻辑适配了安卓运行时权限申请逻辑,不要直接硬调相机接口。
内容的提问来源于stack exchange,提问作者Adrian Cardenas
相关产品推荐
相关产品推荐

