Buildozer打包Android应用加载图片失败启动崩溃如何解决
问题原因
两个核心问题导致安卓端加载资源崩溃:
- 所有路径写法里斜杠两侧加了多余空格:不管是kv文件里的
img / bg1.jpg还是buildozer.spec里的img / *,斜杠两边的空格在Windows、Ubuntu桌面端运行时会被路径解析逻辑容错,但安卓端文件系统路径匹配是严格校验的,会把带空格的img识别为独立目录名,根本无法匹配你实际创建的img文件夹。 - 部分版本Buildozer打包后,应用运行时的工作目录和main.py所在目录不重合,硬编码相对路径会出现搜索路径偏移。
修复操作
- 修正所有路径的多余空格
打开kv文件,把图片加载配置改为无空格的正确路径:
打开buildozer.spec,找到资源包含配置项,删除斜杠、逗号旁的多余空格,修改为:source: 'img/bg1.jpg'source.include_patterns = img/*,audio/*,fonts/* - 配置Kivy资源搜索路径,适配安卓端运行环境
在main.py的最开头加入以下代码,把main.py所在的应用根目录加入Kivy的资源搜索列表,避免工作目录偏移导致的资源找不到问题:
如果需要在Python代码中加载资源,不要硬编码相对路径,用路径拼接方式生成准确路径:import os from kivy.resources import resource_add_path resource_add_path(os.path.dirname(os.path.abspath(__file__)))bg_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'img', 'bg1.jpg') - 清理旧构建缓存后重新打包
旧的错误构建缓存会导致修改配置后不生效,在项目根目录执行以下命令清理后重新打包即可:buildozer android clean buildozer android debug deploy run
排查兜底方案:如果上述操作后还是报错,可以在main.py启动入口加入目录遍历日志,连接设备后通过logcat查看打包后的实际文件结构,确认资源是否被正确打入包内:
import os app_root = os.path.dirname(os.path.abspath(__file__)) for path, dir_list, file_list in os.walk(app_root): print(f"[APP DIR] {path}: {file_list}")
内容的提问来源于stack exchange,提问作者gtnscebba
相关产品推荐
相关产品推荐

