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

使用Buildozer构建Kivy APK时遇两类错误求助

嘿,这两个问题我打包Kivy APK的时候都踩过坑,给你分享下我当时解决的办法:

解决Buildozer打包Kivy APK的两类常见问题

一、先确认Java环境配置彻底生效

你切换到OpenJDK8后解决了java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema错误,但得确保Buildozer真的在使用这个版本:

  • 先检查系统默认Java版本:运行java -version和javac -version,确认输出都是OpenJDK 1.8.x系列。
  • 如果系统装了多个Java版本,用update-alternatives --config java和update-alternatives --config javac手动切换到OpenJDK8。
  • 嫌麻烦的话,直接在buildozer.spec里强制指定Java路径:
    android.ndk_java_home = /usr/lib/jvm/java-8-openjdk-amd64
    
    (路径根据你实际的OpenJDK安装位置调整)

二、解决SDL2_image解压时的符号链接错误

这个错误几乎都是Windows环境(原生或WSL1)导致的,因为Windows文件系统对Linux符号链接支持有限。给你几个可行的解决思路:

方法1:替换为修复过的SDL2_image版本(最省事)

旧版SDL2_image-2.0.4确实存在符号链接问题,直接在buildozer.spec里指定更新的版本:

  • 找到android.add_aars这一行,替换成:
    android.add_aars = https://github.com/libsdl-org/SDL_image/releases/download/release-2.6.3/SDL2_image-2.6.3.aar
    
  • 同时注释掉或删除配置里和SDL2_image相关的android.add_jars、android.libs_src项,避免版本冲突。

方法2:升级到支持符号链接的环境

如果你用的是WSL1,赶紧升级到WSL2:

  1. 以管理员身份打开PowerShell,运行:
    wsl --set-version <你的WSL发行版名称> 2
    
    比如wsl --set-version Ubuntu 2
  2. 在WSL中创建/etc/wsl.conf文件(没有的话直接新建),添加以下内容:
    [automount]
    options = "metadata,umask=0022,fmask=0133"
    [interop]
    enabled = true
    appendWindowsPath = true
    [user]
    default = <你的WSL用户名>
    
  3. 重启WSL:wsl --shutdown,再重新打开即可。

方法3:手动修改SDL2_image压缩包(备选)

如果不想换版本,就手动处理符号链接:

  1. 下载SDL2_image-2.0.4.tar.gz,解压后找到所有符号链接文件,把它们替换成实际的文件副本(复制符号链接指向的原文件,替换掉符号链接)。
  2. 将修改后的文件夹重新打包成tar.gz,然后在buildozer.spec里修改android.libs_src_sdl_image指向这个自定义压缩包的地址。

三、Python版本的额外确认

你已经尝试了Python3.7和3.8,记得在buildozer.spec里明确指定版本,避免Buildozer自动选择出错:

android.python_version = 3.7

另外,打包前一定要删除Buildozer的缓存目录~/.buildozer,旧缓存很容易导致各种奇怪问题,然后重新运行buildozer android debug即可。

内容的提问来源于stack exchange,提问作者Ciro García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:32:53