Flet Android 构建后自定义 splash screen 和应用图标为何不显示?
Flet 支持自定义 Android 应用图标和启动画面(splash screen)。如果仍显示默认 Flet logo,先检查图片的文件名和所在目录。构建工具按约定的文件名读取图片,仅将 logo.png 放进 assets,不会自动替换默认 logo。
普通 PNG 可以使用,仍显示默认 logo 并不能说明图片格式有问题。
正确的文件名是什么?
将图片直接放在应用的 assets 目录下,按用途命名:
| 用途 | 通用文件名 | Android 专用文件名 |
|---|---|---|
| 应用图标 | icon.png | icon_android.png |
| 启动画面 logo | splash.png | splash_android.png |
| 深色模式启动 logo | splash_dark.png | splash_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,按以下顺序检查:
- 文件名是否完全一致,例如
icon.png,注意大小写差异和隐藏的双重扩展名。 - 图片是否直接放在实际应用目录下的
assets中,确认没有放进另一个同名文件夹。 - 是否存在优先级更高的 Android 专用图片。
- 构建命令是否包含
--no-android-splash,或配置中的[tool.flet.splash]是否设置了android = false。 - 手机安装的是否确实是新 APK,点击的是否是该应用的桌面入口。
需要查看构建细节时,可以运行:
flet build apk --verbose
命令选项以本机 flet build apk --help 为准,也可对照官方的flet build 文档。
PNG 有哪些需要注意的地方?
应用图标建议使用清晰的正方形 PNG,例如 1024 × 1024。这个尺寸仅作推荐,并非所有图片都必须采用。独立 logo 适合使用透明背景。图片需要真正导出为 PNG,只修改扩展名并不会转换格式。
Android 12 及以上系统的启动画面限制了 logo 的显示区域,图片边缘可能被裁剪。设计启动图时,应将 logo 和重要内容放在中央,留出空白,不宜按整屏海报排版。尺寸、留白和裁剪主要影响显示效果,单凭这些因素无法解释为何仍出现默认 Flet logo。相关行为见官方的启动图尺寸与构图说明。
问题中没有提供 Flet 版本,以上示例依据当前官方文档。如果本机使用较早版本,请对照相应版本的文档确认是否支持这些配置。
备注:内容仅供参考。
