You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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正确应用(之前自定义补丁无效大概率是未配置自动应用):

  1. 定位到pyjnius_utils.pxi中所有使用long的代码行,将long替换为int(Python 3已合并int和long类型)
  2. 在项目根目录创建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
    
  3. 修改buildozer.spec,添加补丁配置:
    [app]
    # 保留原有配置,新增以下行
    patches = patches/pyjnius_long_fix.patch
    
  4. 清理缓存后重新编译:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:11:01