PAYATHON 2026

Flet Android 构建后自定义 splash screen 和应用图标为何不显示?

排障赵师傅

Flet 支持自定义 Android 应用图标和启动画面(splash screen)。如果仍显示默认 Flet logo,先检查图片的文件名和所在目录。构建工具按约定的文件名读取图片,仅将 logo.png 放进 assets,不会自动替换默认 logo。

普通 PNG 可以使用,仍显示默认 logo 并不能说明图片格式有问题。

正确的文件名是什么?

将图片直接放在应用的 assets 目录下,按用途命名:

用途通用文件名Android 专用文件名
应用图标icon.pngicon_android.png
启动画面 logosplash.pngsplash_android.png
深色模式启动 logosplash_dark.pngsplash_dark_android.png

Android 专用文件优先于对应的通用文件。检查目录中是否还留着旧的 icon_android.png 或 splash_android.png,它们可能会覆盖新图片。

没有单独的启动图时,Flet 可以使用 icon.png;找不到自定义资源时,则会使用默认 Flet 图标。具体规则见官方的图标配置和启动画面配置。

如何组织目录和配置?

如果项目的 Python 代码放在 src 中,目录结构可以是:

my_app/
├── pyproject.toml
└── src/
    ├── main.py
    └── assets/
        ├── icon.png
        └── splash.png

在现有的 pyproject.toml 中设置应用目录:

[tool.flet.app]
path = "src"

如果已有 [tool.flet.app],修改其中的 path 即可,不要重复声明同一个表。

Flet 会相对于应用目录查找资源,所以这个示例中的 assets 放在 src 下。如果 main.py 和 assets 都在项目根目录,可将 path 设为 "."。目录解析规则见官方的应用路径说明。

启动画面的背景色可以单独配置:

[tool.flet.splash]
color = "#ffffff"
dark_color = "#222222"

需要深色模式专用 logo 时,再添加 splash_dark.png。构建工具会按文件名识别图片,无须在上述配置中逐个填写图片路径。

如何重新构建并验证?

在包含 pyproject.toml 的项目根目录运行:

flet --version
flet build apk

安装这次构建生成的 APK,再从 Android 桌面启动应用。修改图片后,需要重新构建并安装;页面热更新不会替换已经打包的原生图标和启动资源。

Python 页面中的图片控件只负责界面显示。在页面里显示 logo.png,不会同时改变 Android 启动图或桌面图标。

如果仍显示默认 logo,按以下顺序检查:

  1. 文件名是否完全一致,例如 icon.png,注意大小写差异和隐藏的双重扩展名。
  2. 图片是否直接放在实际应用目录下的 assets 中,确认没有放进另一个同名文件夹。
  3. 是否存在优先级更高的 Android 专用图片。
  4. 构建命令是否包含 --no-android-splash,或配置中的 [tool.flet.splash] 是否设置了 android = false。
  5. 手机安装的是否确实是新 APK,点击的是否是该应用的桌面入口。

需要查看构建细节时,可以运行:

flet build apk --verbose

命令选项以本机 flet build apk --help 为准,也可对照官方的flet build 文档。

PNG 有哪些需要注意的地方?

应用图标建议使用清晰的正方形 PNG,例如 1024 × 1024。这个尺寸仅作推荐,并非所有图片都必须采用。独立 logo 适合使用透明背景。图片需要真正导出为 PNG,只修改扩展名并不会转换格式。

Android 12 及以上系统的启动画面限制了 logo 的显示区域,图片边缘可能被裁剪。设计启动图时,应将 logo 和重要内容放在中央,留出空白,不宜按整屏海报排版。尺寸、留白和裁剪主要影响显示效果,单凭这些因素无法解释为何仍出现默认 Flet logo。相关行为见官方的启动图尺寸与构图说明。

问题中没有提供 Flet 版本,以上示例依据当前官方文档。如果本机使用较早版本,请对照相应版本的文档确认是否支持这些配置。

备注:内容仅供参考。