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

使用Buildozer构建的Kivy安卓App导入KivyMD后启动闪退如何解决?

KivyMD导入后安卓端启动闪退问题

我原本的App使用Kivy开发,安卓端运行正常,想要改用KivyMD优化界面。首先我在buildozer依赖中添加了KivyMD后编译测试,一切正常。但一旦在脚本中导入KivyMD相关内容,App就会在启动页结束后立刻闪退,我的脚本是非常基础的Hello World程序,不存在其他导致崩溃的逻辑。

测试脚本

from kivymd.app import MDApp # 该导入语句导致程序崩溃
from kivy.uix.screenmanager import Screen
from kivy.uix.label import Label
from kivy.lang import Builder
from kivy.app import App


class test(App):
    def build(self):
        return Label(text='Hello world')


test().run()

错误日志

08-02 09:33:56.465  2201  2201 E LoadedApk: Unable to instantiate appComponentFactory
08-02 09:33:56.465  2201  2201 E LoadedApk: java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/system/priv-app/MiuiSystemUI/lib/arm64, /system/lib64, /system/product/lib64, /system/lib64, /system/product/lib64]]
08-02 09:33:56.465  2201  2201 E LoadedApk:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:230)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at android.app.LoadedApk.createAppFactory(LoadedApk.java:258)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at android.app.LoadedApk.updateApplicationInfo(LoadedApk.java:372)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at android.app.ActivityThread.handleApplicationInfoChanged(ActivityThread.java:5799)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2036)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at android.os.Handler.dispatchMessage(Handler.java:107)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at android.os.Looper.loop(Looper.java:224)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at android.app.ActivityThread.main(ActivityThread.java:7590)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at java.lang.reflect.Method.invoke(Native Method)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
08-02 09:33:56.465  2201  2201 E LoadedApk:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
解决方案
  • 修正脚本写法:你导入了MDApp但仍继承Kivy原生的App类,这种混用本身就会导致运行异常,正确的KivyMD写法参考如下:
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel

class TestApp(MDApp):
    def build(self):
        return MDLabel(text='Hello world', halign='center')

TestApp().run()
  • 调整buildozer.spec配置:
    1. 确保依赖项版本匹配,完整依赖参考:requirements = python3, kivy==2.1.0, kivymd==1.1.1,不匹配的版本会出现兼容性问题
    2. 找到android.enable_androidx配置项,将默认的False修改为True,开启AndroidX支持即可解决找不到CoreComponentFactory类的报错
    3. 将android.api配置项设置为30及以上,过低的安卓API版本不支持AndroidX
  • 重新编译前先清理旧构建缓存:执行buildozer android clean,再执行buildozer android debug重新打包,避免旧缓存影响构建结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 09:33:00