原生Linux Mint下Buildozer编译Kivy项目遇sh.CommandNotFound错误
解决Buildozer打包Kivy项目时
sh.CommandNotFound: ./download.sh错误及原生Linux使用指南 一、sh.CommandNotFound: ./download.sh错误解决方案
该错误源于SDL2_image构建脚本无法找到download.sh文件,多为源码克隆不完整或权限异常导致,按以下步骤修复:
清理缓存并强制重新拉取依赖
buildozer android clean rm -rf .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/bootstrap_builds/sdl2执行后重新运行
buildozer android debug,让Buildozer重新下载完整的SDL2组件。手动修复文件权限与源码
如果清理后仍报错,进入指定目录检查:cd /home/jacob/Desktop/Projects/BT_Relay_App/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/bootstrap_builds/sdl2/jni/SDL2_image/external- 若
download.sh不存在,重新克隆SDL2_image源码:rm -rf SDL2_image git clone https://github.com/libsdl-org/SDL_image.git SDL2_image - 给脚本添加执行权限:
chmod +x SDL2_image/external/download.sh
- 若
修正Buildozer配置文件
打开项目根目录的buildozer.spec,调整以下配置:android.bootstrap = sdl2 requirements = python3,kivy,pandas # 移除os、time、threading,这些是Python内置库,无需添加到requirements
二、原生Linux环境下Buildozer使用教程
1. 安装系统依赖
sudo apt update sudo apt install -y git build-essential python3-pip python3-dev openjdk-11-jdk unzip zip pip3 install kivy buildozer
2. 初始化项目配置
进入Kivy项目目录,执行初始化命令生成配置文件:
buildozer init
编辑生成的buildozer.spec,重点配置以下项:
title:应用名称package.name:应用包名(格式如com.yourname.yourapp)requirements:仅列出第三方依赖库(如python3,kivy,pandas)android.api:指定Android API级别(建议30及以上)android.ndk_api:与android.api匹配,如21或更高
3. 执行构建
首次构建会自动下载Android SDK、NDK等依赖,耗时较长,请确保网络稳定:
buildozer android debug
构建完成后,APK文件会生成在bin/目录下。
4. 常见问题处理
- 依赖下载失败:删除项目目录下的
.buildozer文件夹,重新执行构建命令。 - 权限异常:避免用
sudo执行Buildozer,确保当前用户对项目目录有读写权限。 - Cython版本冲突:安装指定版本的Cython,如
pip3 install cython==0.29.33。
内容的提问来源于stack exchange,提问作者Jacob Kelley
相关产品推荐
相关产品推荐

