首页 > 解决方案 > 当我在脚本中导入 Kivymd 时,使用 buildozer 构建的 Android 应用程序崩溃

问题描述

我的应用程序在带有 kivy 的 android 上运行良好,所以我想使用 KivyMD 做一些更好的事情。我开始编译时只添加了 buildozer 要求,以检查一切是否仍然正常,并且确实如此。但是,一旦我在脚本中从 kivyMD 导入某些内容,应用程序会在启动画面后立即崩溃。没有其他东西可以使脚本崩溃,因为它是一个非常基本的 hello world 应用程序。

这是脚本:


from kivymd.app import MDApp #import that makes everything crash

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()

这是我能够从 logcat 捕获的错误:

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)

我找到了一些这样的答案,我不知道如何将其应用于 kivy 项目。我没有在这篇文章中包含 buildozer.spec 文件,因为即使有 kivyMD 要求它也能正常工作。如果需要,我可以编辑和添加它。

标签: javapythonandroidkivybuildozer

解决方案


推荐阅读