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

Buildozer打包Android应用加载图片失败启动崩溃如何解决

问题原因

两个核心问题导致安卓端加载资源崩溃:

  1. 所有路径写法里斜杠两侧加了多余空格:不管是kv文件里的img / bg1.jpg还是buildozer.spec里的img / *,斜杠两边的空格在Windows、Ubuntu桌面端运行时会被路径解析逻辑容错,但安卓端文件系统路径匹配是严格校验的,会把带空格的img 识别为独立目录名,根本无法匹配你实际创建的img文件夹。
  2. 部分版本Buildozer打包后,应用运行时的工作目录和main.py所在目录不重合,硬编码相对路径会出现搜索路径偏移。

修复操作

  • 修正所有路径的多余空格
    打开kv文件,把图片加载配置改为无空格的正确路径:
    source: 'img/bg1.jpg'
    
    打开buildozer.spec,找到资源包含配置项,删除斜杠、逗号旁的多余空格,修改为:
    source.include_patterns = img/*,audio/*,fonts/*
    
  • 配置Kivy资源搜索路径,适配安卓端运行环境
    在main.py的最开头加入以下代码,把main.py所在的应用根目录加入Kivy的资源搜索列表,避免工作目录偏移导致的资源找不到问题:
    import os
    from kivy.resources import resource_add_path
    resource_add_path(os.path.dirname(os.path.abspath(__file__)))
    
    如果需要在Python代码中加载资源,不要硬编码相对路径,用路径拼接方式生成准确路径:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:27:23