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

如何解决Kivy应用在Android设备上启动即崩溃的问题

问题修复方案

核心错误原因及修复

  1. App类多重继承逻辑错误
    你定义的MoneyManagerApp同时继承了MDApp、ThemableBehavior、Screen三个类,MDApp本身已内置ThemableBehavior能力,额外继承Screen会导致初始化参数冲突,是启动崩溃的核心原因之一。
    修复:
# 原代码
class MoneyManagerApp(MDApp, ThemableBehavior, Screen):
# 修改为
class MoneyManagerApp(MDApp):
  1. 根控件返回逻辑缺失、KV文件未显式加载
    build方法为空没有返回根布局,且未显式加载KV文件,打包后安卓环境不会自动识别同目录KV文件,导致加载失败崩溃。
    修复:
class MoneyManagerApp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def build(self):
        # 此处替换为你的KV文件实际名称,比如命名为main.kv就填"main.kv"
        return Builder.load_file("main.kv")
  1. 固定窗口大小适配错误
    硬编码Window.size = (360, 640)仅适用于桌面端调试,安卓设备无固定窗口概念,会触发窗口管理异常崩溃。
    修复:
# 删掉原有的Window.size = (360, 640),替换为仅桌面端生效的逻辑
import platform
if platform.system() in ("Windows", "Darwin", "Linux"):
    Window.size = (360, 640)
  1. 冗余代码冲突
    你在Python代码全局定义了未使用的sm ScreenManager实例,和KV文件中定义的ScreenManager重复,可直接删除以下冗余代码:
sm = ScreenManager()
sm.add_widget(DashboardScreen(name='screen-dash'))
sm.add_widget(DigitalGoldScreen(name='screen-dgld'))
sm.add_widget(AddInvestmentScreen(name='screen-addinvestments'))

打包配置修复

Kivy 2.0.0和最新版KivyMD不兼容,需指定匹配的依赖版本:

  • 若使用Buildozer打包,在buildozer.spec的requirements行修改为:
requirements = python3,kivy==2.0.0,kivymd==0.104.2
  • 若使用p4a打包,命令中也需指定上述对应版本,禁止使用latest拉取最新版本。

调试方法

如果修复后仍存在崩溃,可通过ADB查看运行日志定位问题:

adb logcat -s python

可直接输出Python运行时的报错信息,快速定位剩余问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:18:02