前言

总结了在 Ubuntu 系统上使用 Buildozer 构建 Kivy 项目为 Android 应用过程中遇到的问题以及相应的解决办法。

错误

1. Buildozer 构建环境配置

问题描述: 在 Buildozer 的 Android 构建过程中,需要安装并配置 Android SDK 和 NDK 以及其他依赖项,如 Java JDK 等。系统初始配置导致了部分依赖项缺失或版本不兼容的问题。

解决方法

  • 安装必备依赖项:确保系统具备必要的依赖项,如 openjdklibffi-devcurl 等。命令如下:
    sudo apt update
    sudo apt install openjdk-17-jdk build-essential libffi-dev zlib1g-dev
    
  • 设置 Android SDK 和 NDK 路径:Buildozer 自动配置 SDK 和 NDK,但确保 buildozer.spec 中的路径正确。

2. SDL2 子模块克隆失败

问题描述: 在克隆 SDL2 的某些依赖库时,访问 skia.googlesource.com 子模块失败,导致 SDL2 构建过程出现中断。

解决方法

  • 使用 VPN 或网络代理:由于该网址可能被区域性限制,使用 VPN 能够绕过网络限制。
  • 更换镜像源:手动将 skcms 库替换为 GitHub 镜像源:
    cd /home/rongzuoliang/gptrt/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/sdl2/jni/SDL2_image/external/libjxl/third_party/
    rm -rf skcms
    git clone https://github.com/your-mirror/skcms.git
    
    然后重新启动构建过程。

3. Gradle 版本与 Java 版本不兼容

问题描述: Buildozer 在使用 gradle 构建时,提示所需的 com.android.tools.build:gradle 版本不支持当前的 Java 版本。Java 11 版本不满足 Gradle 插件 8.1.1 的要求,必须升级到 Java 17。

解决方法

  • 安装 Java 17

    sudo apt install openjdk-17-jdk
    
  • 设置 Java 17 为默认 Java 版本

    sudo update-alternatives --config java
    

    在选项中选择 Java 17。

  • 验证 Java 版本

    java -version
    

    确保输出显示的是 Java 17。


4. 清理缓存和重试构建

问题描述: 在多次更改环境后,构建过程可能会因为缓存中的旧设置而失败。

解决方法: 使用 Buildozer 的清理命令删除之前的构建缓存,确保新的配置能够生效。

buildozer android clean
buildozer android debug

总结

通过逐步解决依赖项安装、网络连接、Java 版本兼容性和构建缓存问题,最终成功完成了 Android 应用的构建。此过程涉及到的关键步骤包括正确配置依赖项、确保网络连通性以及调整 Java 和 Gradle 的版本兼容性。