MacOS下Python3.10用Buildozer编译Android调试版pyjnius long报错修复
修复pyjnius编译时long类型报错的有效方案
方案1:升级pyjnius到兼容版本
官方已确认pyjnius 1.6.1支持Python 3.13,自然修复了Python 3中long类型废弃的问题,这是最直接的解决方式:
- 打开
buildozer.spec,找到requirements配置项,将原指定的pyjnius旧版本替换为pyjnius>=1.6.1 - 清理Buildozer缓存,避免旧依赖文件干扰:
buildozer android clean - 重新编译Android调试版:
buildozer android debug
方案2:为旧版pyjnius添加有效补丁(仅当无法升级时使用)
如果因项目限制必须使用旧版pyjnius,需确保补丁被Buildozer正确应用(之前自定义补丁无效大概率是未配置自动应用):
- 定位到
pyjnius_utils.pxi中所有使用long的代码行,将long替换为int(Python 3已合并int和long类型) - 在项目根目录创建
patches文件夹,生成符合diff规范的补丁文件(比如命名为pyjnius_long_fix.patch),示例内容:--- a/pyjnius_utils.pxi +++ b/pyjnius_utils.pxi @@ -123,7 +123,7 @@ cdef class JavaMethod: cdef str __name__ cdef str __signature__ - cdef long __hash__ + cdef int __hash__ cdef jobject __method__ cdef JVM jvm - 修改
buildozer.spec,添加补丁配置:[app] # 保留原有配置,新增以下行 patches = patches/pyjnius_long_fix.patch - 清理缓存后重新编译:
buildozer android clean buildozer android debug
方案3:排查环境依赖冲突
确保Buildozer使用的环境与配置一致,避免依赖拉取异常:
- 确认当前终端使用的Python版本为3.10.17:
python3 --version - 若使用虚拟环境,先激活对应环境再执行编译命令
- 检查
buildozer.spec中python.version是否设置为3.10:[app] python.version = 3.10
内容的提问来源于stack exchange,提问作者user938363
相关产品推荐
相关产品推荐

