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

使用Buildozer打包Kivy/Python代码为Android应用后图片无法显示问题求助

问题根因
  • 硬编码Windows本地绝对路径:你代码里写的C盘路径仅在你的Windows设备上有效,Android系统不存在该目录结构,打包后应用根本找不到对应文件。
  • 资源未纳入打包配置:仅把图片传到Ubuntu编译目录无效,Buildozer打包时默认只会包含配置中指定的资源文件,未在spec文件声明的文件不会被打进APK包内。
  • 路径适配逻辑缺失:不同操作系统(Windows、Linux、Android)的文件路径规则完全不同,必须用工具动态获取应用运行目录,不能写死固定路径。
修复步骤
  1. 先统一整理项目目录结构,把所有图片资源放到项目根目录下的独立文件夹中,示例结构如下:
项目根目录/
├── main.py
├── 页面kv文件
├── buildozer.spec
└── assets/
    └── pics/
        └── Meds/
            └── Dekalbprotocols (1)-193.jpg
  1. 修改代码路径逻辑,不要写死绝对路径,用os.path动态拼接资源路径:
    如果你是在Python代码中配置路径,示例如下:
import os
from kivy.app import App

class MyApp(App):
    def build(self):
        # 动态拼接相对路径,适配不同系统
        self.img_path = os.path.join("assets", "pics", "Meds", "Dekalbprotocols (1)-193.jpg")
        # 后续kv文件可直接调用该属性

如果是直接在KV文件中配置,可直接写相对路径(注意和kv文件存放位置的相对关系):

Image:
    source: "assets/pics/Meds/Dekalbprotocols (1)-193.jpg"
    allow_stretch: False
    keep_ratio: False
    size_hint: 1, 1
GridLayout
    cols: 2
    size_hint: 1, .1
    spacing: 180
    Button:
        text: "Home"
        size_hint_y: .3
        on_press: root.manager.current = "HomePage"
        background_color: 0,0,0,1
    Button:
        text: "Back"
        size_hint_y: .3
        pos_hint: {"right": 1}
        on_press: root.manager.current = "MedsPage"
        background_color: 0,0,0,1
  1. 修改buildozer.spec配置文件,把资源文件纳入打包范围:
  • 找到source.include_exts配置项,确保包含你用到的图片格式,示例:
source.include_exts = py,png,jpg,kv,atlas
  • 找到source.include_dirs配置项,添加你存放资源的assets目录:
source.include_dirs = assets
  1. 重新执行打包命令buildozer android debug即可。

内容的提问来源于stack exchange,提问作者NoTakeOnlyThrow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:27:04