Buildozer打包TensorFlow Lite+Kivy安卓项目时pyjnius补丁应用失败报错
问题根因
这个报错是补丁适配冲突导致:你使用的python-for-android构建工具自带的pyjnius补丁,和当前拉取的pyjnius版本代码不匹配。你运行的项目是较早的开源项目,提供的buildozer配置没有锁定依赖版本,新版pyjnius的jnius/jnius_jvm_android.pxi、jnius/env.py两个文件的内容、行号都和补丁预期的旧版本不一致,patch命令无法匹配到对应代码段,因此抛出补丁应用失败的错误。
解决方法
- 方案1:锁定依赖版本(最稳妥)
打开项目根目录的buildozer.spec文件,找到依赖配置段,指定对应组件的兼容版本:- 锁定python-for-android版本为
2022.12.20 - 锁定pyjnius版本为
1.4.1,Kivy版本锁定为2.1.0
修改完成后执行rm -rf .buildozer删除旧构建缓存,再重新执行打包命令即可。
- 锁定python-for-android版本为
- 方案2:移除冲突补丁(临时适配)
找到报错中提到的补丁文件.buildozer/android/platform/python-for-android/pythonforandroid/recipes/pyjnius/sdl2_jnienv_getter.patch,直接删除该补丁文件,之后重新执行构建。如果后续运行出现JNI接口调用报错,再手动把补丁的修改内容合并到对应pyjnius源码文件中即可。 - 方案3:使用项目原始构建环境
查看项目提交历史中可成功构建的记录,按照对应记录里的依赖版本号逐一配置到buildozer.spec中,即可完全适配原项目的构建逻辑。
内容的提问来源于stack exchange,提问作者RavenKape
相关产品推荐
相关产品推荐

