如何为KivyMD应用设置自定义启动屏并解决APK崩溃问题
解决方案:KivyMD 自定义启动屏(避免APK打包崩溃)
方法一:Buildozer原生启动屏配置(推荐,无崩溃风险)
这种方式直接通过Buildozer配置实现,无需在Kivy代码中编写启动屏逻辑,打包后稳定性更高。
- 准备启动屏素材:
- 制作一张红色背景+居中公司Logo的图片,命名为
splash.png,尺寸建议至少1080x1920以适配多数设备,格式为PNG/JPG,放在项目根目录。
- 制作一张红色背景+居中公司Logo的图片,命名为
- 修改
buildozer.spec配置:
找到对应配置项,修改或添加如下内容:# 启动屏基础设置 android.splash_screen = splash.png android.splash_screen_duration = 3000 # 显示时长,单位毫秒 # 若图片未包含红色背景,可单独设置背景色 # android.splash_screen_color = #FF0000
方法二:KivyMD代码实现启动屏(适配打包)
若必须通过代码实现,需遵循打包兼容逻辑,避免崩溃:
main.py 代码
from kivy.lang import Builder from kivymd.app import MDApp from kivy.uix.screenmanager import ScreenManager, Screen from kivy.clock import Clock class SplashScreen(Screen): def on_enter(self, *args): # 延迟跳转到主界面,模拟启动屏展示时长 Clock.schedule_once(self.switch_to_main, 3) def switch_to_main(self, dt): self.manager.current = "main" class MainScreen(Screen): pass class MyApp(MDApp): def build(self): sm = ScreenManager() sm.add_widget(SplashScreen(name="splash")) sm.add_widget(MainScreen(name="main")) return sm if __name__ == "__main__": MyApp().run()
design.kv 代码
<SplashScreen>: canvas: Color: rgb: 1, 0, 0 # 红色背景 Rectangle: pos: self.pos size: self.size Image: source: "logo.png" # 公司Logo路径,需放在项目根目录 size_hint: None, None size: 200, 200 # 自定义Logo尺寸 pos_hint: {"center_x": 0.5, "center_y": 0.5} <MainScreen>: MDLabel: text: "主界面" halign: "center"
打包关键注意事项
- 在
buildozer.spec中补充依赖与资源配置:requirements = python3,kivy==2.1.0,kivymd==1.1.1 android.add_assets = logo.png # 代码方式需将Logo加入打包资源 - Colab打包前清理旧缓存:
再执行打包命令:buildozer android cleanbuildozer android debug deploy run
崩溃排查要点
- 确认图片路径正确,且已加入打包资源列表
- 启动屏中禁止执行耗时操作(如网络请求),避免触发ANR崩溃
- 确保Kivy与KivyMD版本兼容,优先使用稳定版
内容的提问来源于stack exchange,提问作者Harsh Kukadiya
相关产品推荐
相关产品推荐

