Google Colab中Buildozer编译Kivy APK遇jnius错误求助
解决Kivy+Buildozer编译APK的jnius兼容错误
问题本质
你碰到的Py_REFCNT表达式不可赋值、PyUnicode_FromUnicode已弃用错误,是因为默认jnius版本未适配Colab环境中较新的Python 3.10+版本——这些旧Python C API在新版本里已被废弃或修改。
GitHub Actions在线编译方案
1. 准备项目文件
确保项目根目录包含:
- 配置好的
buildozer.spec(建议设置android.api = 33、android.ndk = 25b,并在requirements里添加jnius>=1.4.0) - Kivy核心代码(如
main.py)及相关资源文件
2. 添加GitHub Actions编译配置
在项目根目录新建.github/workflows/build-apk.yml,写入以下内容:
name: Build Kivy APK on: [push, workflow_dispatch] jobs: build: runs-on: ubuntu-latest steps: - name: 检出仓库代码 uses: actions/checkout@v4 - name: 配置Python环境 uses: actions/setup-python@v5 with: python-version: '3.9' # 选择兼容jnius的稳定版本 - name: 安装系统依赖 run: | 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 - name: 安装Buildozer与适配版jnius run: | pip install buildozer pip install "jnius>=1.4.0" - name: 编译APK run: buildozer android debug - name: 保存编译产物 uses: actions/upload-artifact@v4 with: name: kivy-apk path: bin/*.apk
3. 触发编译流程
- 将项目代码推送到GitHub仓库
- 进入仓库的
Actions页面,找到Build Kivy APK工作流,点击Run workflow手动触发编译 - 编译完成后,在工作流详情的
Artifacts区域下载生成的APK文件
额外适配技巧
- 如果仍有API报错,可在
buildozer.spec中添加android.ndk_api = 21,降低NDK API版本以兼容旧C接口 - GitHub Actions默认使用普通用户权限运行,天然规避Colab的root警告问题
内容的提问来源于stack exchange,提问作者hehe
相关产品推荐
相关产品推荐

