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

Ubuntu 24.04下Kivy+Buildozer部署Android应用遇readline.h缺失错误

Ubuntu 24.04 LTS下用Buildozer部署Kivy应用到Android时readline.h缺失问题

我在Ubuntu 24.04 LTS系统中尝试用Kivy将一个"hola mundo"应用部署到Android平台,被readline.h头文件找不到的问题困扰了好几周。使用buildozer init命令生成标准buildozer.spec配置文件后,仅修改了requirements配置项:

requirements = python3==3.12.3, hostpython3==3.12.3,kivy==2.3.0

以下是日志的最后部分:

/home/pablo/PycharmProjects/androidDeploy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Modules/readline.c -o Modules/readline.o
> /home/pablo/PycharmProjects/androidDeploy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Modules/readline.c:39:12: fatal error: 'readline/readline.h' file not found
> include <readline/readline.h>
>            ^~~~~~~~~~~~~~~~~~~~~
> 1 error generated.
> make: *** [Makefile:3018: Modules/readline.o] Error 1


STDERR:

Command failed: ('/usr/bin/python3', '-m', 'pythonforandroid.toolchain', 'create', '--dist_name=myapp', '--bootstrap=sdl2', '--requirements=python3==3.12.3,hostpython3==3.12.3,kivy==2.3.0', '--arch=arm64-v8a', '--arch=armeabi-v7a', '--copy-libs', '--color=always', '--storage-dir=/home/pablo/PycharmProjects/androidDeploy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a', '--ndk-api=21', '--ignore-setup-py', '--debug')
Error code: 1
ENVIRONMENT:
SHELL = '/bin/bash'
SESSION_MANAGER = 'local/pablo-OptiPlex-3050:@/tmp/.ICE-unix/1622,unix/pablo-OptiPlex-3050:/tmp/.ICE-unix/1622'
QT_ACCESSIBILITY = '1'
COLORTERM = 'truecolor'
XDG_CONFIG_DIRS = '/etc/xdg/xdg-ubuntu:/etc/xdg'
XDG_MENU_PREFIX = 'gnome-'
GNOME_DESKTOP_SESSION_ID = 'this-is-deprecated'
GNOME_SHELL_SESSION_MODE = 'ubuntu'
SSH_AUTH_SOCK = '/run/user/1000/keyring/ssh'
MEMORY_PRESSURE_WRITE = 'c29tZSAyMDAwMDAgMjAwMDAwMAA='
XMODIFIERS = '@im=ibus'
DESKTOP_SESSION = 'ubuntu'
GTK_MODULES = 'gail:atk-bridge'
PWD = '/home/pablo/PycharmProjects/androidDeploy'
LOGNAME = 'pablo'
XDG_SESSION_DESKTOP = 'ubuntu'
XDG_SESSION_TYPE = 'wayland'
SYSTEMD_EXEC_PID = '1663'
XAUTHORITY = '/run/user/1000/.mutter-Xwaylandauth.OV0AR2'
HOME = '/home/pablo'
USERNAME = 'pablo'
IM_CONFIG_PHASE = '1'
LANG = 'en_US.UTF-8'
XDG_CURRENT_DESKTOP = 'ubuntu:GNOME'
MEMORY_PRESSURE_WATCH = '/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session.slice/org.gnome.Shell@wayland.service/memory.pressure'
VTE_VERSION = '7600'
WAYLAND_DISPLAY = 'wayland-0'
GNOME_TERMINAL_SCREEN = '/org/gnome/Terminal/screen/9329102b_46df_4d9d_b9de_7c08e5a177a1'
GNOME_SETUP_DISPLAY = ':1'
XDG_SESSION_CLASS = 'user'
TERM = 'xterm-256color'
USER = 'pablo'
GNOME_TERMINAL_SERVICE = ':1.121'
DISPLAY = ':0'
SHLVL = '1'
GSM_SKIP_SSH_AGENT_WORKAROUND = 'true'
QT_IM_MODULE = 'ibus'
XDG_RUNTIME_DIR = '/run/user/1000'
DEBUGINFOD_URLS = 'https://debuginfod.ubuntu.com '
XDG_DATA_DIRS = '/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop'
PATH = '/home/pablo/.buildozer/android/platform/apache-ant-1.9.4/bin:/home/pablo/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin'
GDMSESSION = 'ubuntu'
DBUS_SESSION_BUS_ADDRESS = 'unix:path=/run/user/1000/bus'
OLDPWD = '/home/pablo/PycharmProjects/androidDeploy/buildozer'
_ = '/usr/local/bin/buildozer'
PACKAGES_PATH = '/home/pablo/.buildozer/android/packages'
ANDROIDSDK = '/home/pablo/.buildozer/android/platform/android-sdk'
ANDROIDNDK = '/home/pablo/.buildozer/android/platform/android-ndk-r25b'
ANDROIDAPI = '31'
ANDROIDMINAPI = '21'

Buildozer failed to execute the last command
The error might be hidden in the log above this error
Please read the full log, and search for it before
raising an issue with buildozer itself.
In case of a bug report, please add a full log with log_level = 2

解决方向建议

  • 安装系统级readline开发库:执行sudo apt-get install libreadline-dev,补充主机环境的依赖文件。
  • 降级Python版本:将buildozer.spec中的requirements改为python3==3.11.8, hostpython3==3.11.8,kivy==2.3.0,Python 3.12在Buildozer生态中的兼容性尚未完全稳定。
  • 清理缓存后重建:执行buildozer android clean清除旧构建残留,再运行buildozer android debug重新构建。
  • 更换NDK版本:修改buildozer.spec中的android.ndk = 23c,使用更稳定的NDK r23c版本,等待Buildozer自动下载对应版本后重新构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:54:52