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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:02:19