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

Kivy应用Buildozer构建时NDK版本冲突问题求解

解决Kivy Buildozer NDK版本不匹配问题

核心矛盾

你的依赖包含scipy和numpy,这类科学计算库需要gfortran编译支持,但Android NDK r21e之后的版本(如官方推荐的23b)移除了gcc/gfortran工具链,改用clang。而当前python-for-android要求NDK最低版本为23,直接用r21e会触发版本过低的错误,不用又缺失gfortran编译环境。

解决方案:同时配置主NDK和LEGACY_NDK

需要同时指定两个NDK:一个满足python-for-android的最低版本要求(23+),另一个提供gfortran编译支持(r21e),具体步骤如下:

1. 下载对应NDK版本

  • 下载NDK r23b(或官方推荐的23及以上版本),解压到本地目录,比如~/android-ndk-r23b
  • 下载NDK r21e,解压到本地目录,比如~/android-ndk-r21e

2. 修改buildozer.spec配置

打开buildozer.spec文件,找到Android相关配置项,取消注释并设置主NDK信息:

android.ndk = r23b
android.ndk_path = ~/android-ndk-r23b

3. 设置LEGACY_NDK环境变量

在执行构建命令前,通过终端设置环境变量指向r21e的路径:

export LEGACY_NDK=~/android-ndk-r21e

Windows系统则使用:

set LEGACY_NDK=C:\path\to\android-ndk-r21e

4. 清理缓存并重新构建

先清除旧的构建缓存:

buildozer android clean

再执行构建命令:

buildozer android debug

替代方案:使用兼容的预编译依赖版本

如果配置双NDK过于繁琐,可以尝试指定适配NDK 23+的旧版本科学计算库,修改requirements配置:

requirements = python3,kivy,pillow,plyer,scipy==1.7.3,numpy==1.21.6

这类版本通常已经适配了新版NDK的编译环境,无需额外gfortran支持。

配置生效验证

构建日志中出现以下内容,说明双NDK配置生效:

[INFO]: Found NDK version 23b
[INFO]: Using LEGACY_NDK at ~/android-ndk-r21e for gfortran support

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:36:16