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

将Kivy App打包为APK失败,请求协助解决NDK配置问题

Kivy应用打包APK失败:多环境构建问题解决方案

核心问题梳理

在GitHub Actions、Google Colab、WSL中打包Kivy APK时遇到两类关键报错:

  • GitHub Actions:找不到gfortran可执行文件(r26b新版NDK已移除gcc/gfortran工具链)
  • Google Colab/WSL:提示需设置LEGACY_NDK环境变量,指向支持gcc/gfortran的NDK r21e版本

以下是针对性解决步骤:


通用前置配置

Kivy打包(尤其是依赖Fortran的库如numpy/scipy)必须依赖NDK r21e(最后一个支持gcc/gfortran的官方版本),新版NDK(如r26b)仅支持clang,无法满足需求。先确保已安装NDK r21e,且路径无空格、特殊字符。


WSL & Google Colab 环境解决步骤

  1. 清理旧配置冲突

    • 执行buildozer android clean清空旧构建缓存
    • 删除之前设置的无效NDK路径环境变量:unset LEGACY_NDK
  2. 正确设置环境变量

    • 找到NDK r21e的绝对路径(如WSL中/home/yourname/android-ndk-r21e,Colab中/content/android-ndk-r21e)
    • 执行命令让环境变量永久生效(临时生效可直接用export):
      echo 'export LEGACY_NDK=/path/to/android-ndk-r21e' >> ~/.bashrc
      source ~/.bashrc
      
    • 验证:执行echo $LEGACY_NDK确认路径输出正确
  3. 修改buildozer.spec配置

    • 找到以下配置项,替换为r21e相关设置:
      # 指定NDK版本
      ndk = r21e
      # 或直接指定路径
      ndk.path = /path/to/android-ndk-r21e
      # r21e对应的最高API级别为29
      android.ndk_api = 29
      

GitHub Actions 环境解决步骤

  1. 修正NDK版本与路径

    • 在build.yml中移除r26b的下载步骤,替换为NDK r21e的下载(Linux版本,适配Actions runner):
      - name: Download NDK r21e
        run: |
          wget https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
          unzip android-ndk-r21e-linux-x86_64.zip -d $HOME/android
      
  2. 设置LEGACY_NDK环境变量

    • 在构建前添加环境变量注入步骤:
      - name: Configure LEGACY_NDK
        run: echo "LEGACY_NDK=$HOME/android/android-ndk-r21e" >> $GITHUB_ENV
      
  3. 同步buildozer.spec配置

    • 同WSL配置,确保spec中指定NDK为r21e,避免路径混用(Actions runner为Linux,所有路径用/格式)

额外排查要点

  • 升级buildozer到最新版:pip install --upgrade buildozer,旧版本对NDK r21e的兼容性较差
  • 检查应用依赖:如果未使用Fortran相关库,可尝试在spec中禁用gfortran检查,但不推荐
  • 确认NDK权限:WSL/Colab中执行chmod -R 755 /path/to/android-ndk-r21e确保工具链可执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:48:15