簡體   English   中英

應用程序在 buildozer android 調試中崩潰 - 沒有名為“kivy._event”的模塊

[英]App crashed in buildozer android debug - no module named 'kivy._event"

我構建了一個 KivyMD 應用程序,在 pycharm 中工作。 當我在 linux 的 buildozer 中為 android 編譯時,它啟動然后崩潰。 這是說明沒有名為 kivy._event 的模塊的日志。 我注意到屏幕管理器引用的 kivy/uix 文件夾中有一個 _event.pxd。 希望有人可以提供幫助。 非常感謝。

08-26 20:53:09.196  3942  4337 I python  : Initializing Python for Android
08-26 20:53:09.196  3942  4337 I python  : Setting additional env vars from p4a_env_vars.txt
08-26 20:53:09.196  3942  4337 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
08-26 20:53:09.196  3942  4337 I python  : /data/user/0/org.xxxxxxxxx.appname/files/app
08-26 20:53:09.196  3942  4337 I python  : Preparing to initialize python
08-26 20:53:09.196  3942  4337 I python  : _python_bundle dir exists
08-26 20:53:09.196  3942  4337 I python  : calculated paths to be...
08-26 20:53:09.197  3942  4337 I python  : /data/user/0/org.xxxxxxxxx.appname/files/app/_python_bundle/stdlib.zip:/data/user/0/org.xxxxxxxxx.appname/files/app/_python_bundle/modules
08-26 20:53:09.197  3942  4337 I python  : set wchar paths...
08-26 20:53:09.227  3942  4337 I python  : Initialized python
08-26 20:53:09.227  3942  4337 I python  : AND: Init threads
08-26 20:53:09.227  3942  4337 I python  : testing python print redirection
08-26 20:53:09.228  3942  4337 I python  : Android path ['.', '/data/user/0/org.xxxxxxxxx.appname/files/app/_python_bundle/stdlib.zip', '/data/user/0/org.xxxxxxxxx.appname/files/app/_python_bundle/modules', '/data/user/0/org.xxxxxxxxx.appname/files/app/_python_bundle/site-packages']
08-26 20:53:09.228  3942  4337 I python  : os.environ is environ({'PATH': '/sbin:/system/sbin:/product/bin:/apex/com.android.runtime/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'ANDROID_RUNTIME_ROOT': '/apex/com.android.runtime', 'ANDROID_TZDATA_ROOT': '/apex/com.android.tzdata', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/apex/com.android.runtime/javalib/core-oj.jar:/apex/com.android.runtime/javalib/core-libart.jar:/apex/com.android.runtime/javalib/okhttp.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/android.test.base.jar:/system/framework/featurelayer-widget.jar:/system/framework/hwEmui.jar:/system/framework/hwPartBasicplatform.jar:/system/framework/telephony-separated.jar:/system/framework/hwTelephony-common.jar:/system/framework/hwPartTelephony.jar:/system/framework/hwPartTelephonyVSim.jar:/system/framework/hwPartTelephonyCust.jar:/system/framework/hwPartTelephonyFullnetworkOpt.jar:/system/framework/hwPartTelephonyTimezoneOpt.jar:/system/framework/hwPartTelephonyOpt.jar:/system/framework/hwPartSecurity.jar:/system/framework/hwPartSecurityFaceId.jar:/system/framework/hwIms-common.jar:/system/framework/hwPartMedia.jar:/system/framework/hwPartConnectivity.jar:/system/framework/hwPartPowerOffice.jar:/system/framework/hwPartDeviceVirtualization.jar:/system/framework/hwPartAirSharing.jar:/system/framework/hwPartDefaultDFR.jar:/system/framework/hwPartDFR.jar:/system/framework/hwPartMagicWindow.jar:/system/framework/hwPartIaware.jar:/system/framework/hwPartMdm.jar:/system/framework/hwPartVr.jar:/system/framework/hwframework.jar:/system/framework/com.huawei.nfc.jar:/system/framework/org.ifaa.android.manager.jar:/system/framework/hwperf.jar:/system/framework/hwcustEmui.jar:/system/framework/hwcustframework.jar:/system/framework/servicehost.jar:/system/framework/hwcustIms-common.jar:/system/framework/hwcustTelephony-common.jar:/system/framework/hwIAwareAL.jar:/system/framework/zframework.z.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar', 'DEX2OATBOOTCLASSPATH': '/apex/com.android.runtime/javalib/core-oj.jar:/apex/com.android.runtime/javalib/core-libart.jar:/apex/com.android.runtime/javalib/okhttp.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/android.test.base.jar:/system/framework/featurelayer-widget.jar:/system/framework/hwEmui.jar:/system/framework/hwPartBasicplatform.jar:/system/framework/telephony-separated.jar:/system/framework/hwTelephony-common.jar:/system/framework/hwPartTelephony.jar:/system/framework/hwPartTelephonyVSim.jar:/system/framework/hwPartTelephonyCust.jar:/system/framework/hwPartTelephonyFullnetworkOpt.jar:/system/framework/hwPartTelephonyTimezoneOpt.jar:/system/framework/hwPartTelephonyOpt.jar:/system/framework/hwPartSecurity.jar:/system/framework/hwPartSecurityFaceId.jar:/system/framework/hwIms-common.jar:/system/framework/hwPartMedia.jar:/system/framework/hwPartConnectivity.jar:/system/framework/hwPartPowerOffice.jar:/system/framework/hwPartDeviceVirtualization.jar:/system/framework/hwPartAirSharing.jar:/system/framework/hwPartDefaultDFR.jar:/system/framework/hwPartDFR.jar:/system/framework/hwPartMagicWindow.jar:/system/framework/hwPartIaware.jar:/system/framework/hwPartMdm.jar:/system/framework/hwPartVr.jar:/system/framework/hwframework.jar:/system/framework/com.huawei.nfc.jar:/system/framework/org.ifaa.android.manager.jar:/system/framework/hwperf.jar:/system/framework/hwcustEmui.jar:/
08-26 20:53:09.228  3942  4337 I python  : Android kivy bootstrap done. __name__ is __main__
08-26 20:53:09.228  3942  4337 I python  : AND: Ran string
08-26 20:53:09.228  3942  4337 I python  : Run user program, change dir and execute entrypoint
08-26 20:53:09.298  3942  4337 I python  : [WARNING] [Config      ] Older configuration version detected (0 instead of 21)
08-26 20:53:09.298  3942  4337 I python  : [WARNING] [Config      ] Upgrading configuration in progress.
08-26 20:53:09.304  3942  4337 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/org.xxxxxxxxx.appname/files/app/.kivy/logs/kivy_22-08-26_0.txt
08-26 20:53:09.305  3942  4337 I python  : [INFO   ] [Kivy        ] v2.0.0
08-26 20:53:09.305  3942  4337 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/org.xxxxxxxxx.appname/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
08-26 20:53:09.305  3942  4337 I python  : [INFO   ] [Python      ] v3.9.9 (main, Aug 25 2022, 20:26:03) 
08-26 20:53:09.305  3942  4337 I python  : [Clang 12.0.8 (https://android.googlesource.com/toolchain/llvm-project c935d99d
08-26 20:53:09.305  3942  4337 I python  : [INFO   ] [Python      ] Interpreter at ""
08-26 20:53:09.305  3942  4337 I python  : [INFO   ] [Logger      ] Purge log fired. Analysing...
08-26 20:53:09.305  3942  4337 I python  : [INFO   ] [Logger      ] Purge finished!
08-26 20:53:09.306  3942  4337 I python  :  Traceback (most recent call last):
08-26 20:53:09.306  3942  4337 I python  :    File "/home/xxxxxxxxx/Appname/.buildozer/android/app/main.py", line 1, in <module>
08-26 20:53:09.306  3942  4337 I python  :    File "/home/xxxxxxxxx/Appname/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/Appname/armeabi-v7a/kivy/uix/screenmanager.py", line 195, in <module>
08-26 20:53:09.306  3942  4337 I python  :    File "/home/xxxxxxxxx/Appname/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/Appname/armeabi-v7a/kivy/event.py", line 8, in <module>
08-26 20:53:09.307  3942  4337 I python  :  ModuleNotFoundError: No module named 'kivy._event'
08-26 20:53:09.307  3942  4337 I python  : Python for android ended.

buildozer.spec

# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy==2.1.0,kivymd,sdl2_ttf==2.0.15,pillow,requests,gtts,urllib3,chardet,idna,ffpyplayer
# change the major version of python used by the app
osx.python_version = 3

# Kivy version to use
osx.kivy_version = 1.9.1
# (int) Target Android API, should be as high as possible.
android.api = 31
# (int) Minimum API your APK will support.
#android.minapi = 21

# (int) Android SDK version to use
#android.sdk = 20

# (str) Android NDK version to use
#android.ndk = 19b
android.ndk = 23b

_event.pxd 文件在 uix

# This is a "jumping" module, required for python-for-android project
# Because we are putting all the module into the same .so, there can be name
# conflict. We have one conflict with pygame.event and kivy.event => Both are
# python extension and have the same "initevent" symbol. So right now, just
# rename this one.
__all__ = ('EventDispatcher', 'ObjectWithUid', 'Observable')

import kivy._event
__doc__ = kivy._event.__doc__
EventDispatcher = kivy._event.EventDispatcher
ObjectWithUid = kivy._event.ObjectWithUid
Observable = kivy._event.Observable

我研究並嘗試了一些東西。 最后我能夠克服這一點。 大多數帖子說構建有一些問題。 我建議您刪除 Ubuntu 中 App 文件夾中的 .buildozer 文件夾。 重新安裝 kivy、cython 和所有依賴項。

https://buildozer.readthedocs.io/en/stable/installation.html

其次,在 buildozer.spec 文件中的要求。 我在 Github 中指定了 kivymd 主鏈接。 你可以試試這兩個。

requirements = kivy==2.1.0, kivymd==1.0.2, sdl2_ttf == 2.0.15, pillow

或者

requirements = kivy==2.1.0, https://github.com/kivymd/KivyMD/archive/master.zip, sdl2_ttf == 2.0.15, pillow

如果您仍然有modulenotfounderror,我建議您在kivy 或kivymd 文件夾中找到py 文件,將代碼復制到與您的main.py 相同的文件夾中另一個不同名稱的新py 文件中,將class 導入您的main.py。 我懷疑在構建過程中存在一些 py 文件未正確添加的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM