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

使用Buildozer打包Kivy项目为APK时Pyjnius编译失败求助

解决Buildozer打包APK时的Pyjnius编译错误

1. 修复jnius/jnius.c文件缺失问题

  • 清理Buildozer缓存与旧构建文件,在Colab终端执行:
    buildozer android clean
    rm -rf .buildozer
    
  • 在buildozer.spec的requirements字段中强制指定兼容版本的pyjnius:
    requirements = python3,kivy==2.1.0,pyjnius==1.4.0,pytube
    
  • 更新Colab中的Buildozer版本:
    pip install --upgrade buildozer
    

2. 解决Py_REFCNT表达式无法赋值问题

该错误源于Python版本与pyjnius版本不兼容,Python 3.10+中Py_REFCNT改为宏定义,无法直接赋值,按以下步骤处理:

  • 在buildozer.spec中指定适配的Python版本:
    android.python_version = 3.9
    
  • 匹配对应NDK版本,避免编译冲突:
    android.ndk = 25b
    
  • 若仍报错,可手动修改.buildozer/android/platform/build-arm64-v8a/build/other_builds/pyjnius/armeabi-v7a__ndk_target_21/jnius/jnius.c文件,将所有Py_REFCNT(obj) = ...的代码替换为:
    Py_SET_REFCNT(obj, ...);
    

3. Colab环境前置配置

在执行构建前,先安装必要的系统依赖:

sudo apt-get update
sudo apt-get install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev

4. 关键配置示例(buildozer.spec)

确保核心配置项如下:

[app]
title = YouTube Downloader
package.name = ytdownloader
package.domain = org.test
source.dir = .
version = 0.1

requirements = python3,kivy==2.1.0,pyjnius==1.4.0,pytube
android.api = 33
android.ndk = 25b
android.python_version = 3.9
android.permissions = INTERNET,WRITE_EXTERNAL_STORAGE

5. 重新执行构建

完成上述配置后,重新运行构建命令:

buildozer android debug

内容的提问来源于stack exchange,提问作者Ajay Banstola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:54:53