Buildozer 构建 apk,但不适用于 android

问题描述

我有 buildozer 的问题,我尝试了一个简单的应用程序,只是为了测试带有 kivymd 的 apk 是否工作。在 pc 上工作正常,但是当我编译 apk 并在 android 上运行时在启动时崩溃。

python 的代码是这样的:

from kivymd.app import MDApp

from kivy.app import Builder

KV = """
MDFloatLayout:
    id: asd

    MDRectangleFlatButton:
        id: boh
        text: 'prova'
        pos_hint: {'center_x': .5,'center_y': .5}
        on_release:
            root.ids['se'].text = 'asd'

    MDLabel:
        id: se
        size_hint_x: .2
        pos_hint: {'center_x': .5,'center_y': .3}
        text: 'seee'
"""

class Asd(MDApp):
    def build(self):
        return Builder.load_string(KV)

Asd().run()

命令:buildozer android debug deploy run logcat:

03-13 19:46:51.669  6941  7051 I python  : Initialized python
03-13 19:46:51.669  6941  7051 I python  : AND: Init threads
03-13 19:46:51.670  6941  7051 I python  : testing python print redirection
03-13 19:46:51.672  6941  7051 I python  : Android path ['.','/data/user/0/org.test.myapp/files/app/_python_bundle/stdlib.zip','/data/user/0/org.test.myapp/files/app/_python_bundle/modules','/data/user/0/org.test.myapp/files/app/_python_bundle/site-packages']
03-13 19:46:51.673  6941  7051 I python  : os.environ is environ({'PATH': '/sbin:/system/sbin:/system/bin:/system/xbin:/vendor/bin:/vendor/xbin','DOWNLOAD_CACHE': '/data/cache','ANDROID_BOOTLOGO': '1','ANDROID_ROOT': '/system','ANDROID_ASSETS': '/system/app','ANDROID_DATA': '/data','ANDROID_STORAGE': '/storage','EXTERNAL_STORAGE': '/sdcard','ASEC_MOUNTPOINT': '/mnt/asec','BOOTCLASSPATH': '/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/legacy-test.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/framework/org.apache.http.legacy.boot.jar:/system/framework/smartbondingservice.jar:/system/framework/sprengine.jar:/system/framework/android.hidl.base-V1.0-java.jar:/system/framework/android.hidl.manager-V1.0-java.jar:/system/framework/timakeystore.jar:/system/framework/fipstimakeystore.jar:/system/framework/ucmopensslenginehelper.jar:/system/framework/esecomm.jar:/system/framework/SemAudioThumbnail.jar:/system/framework/knoxsdk.jar:/system/framework/sec_edm.jar:/system/framework/sagearpolicymanager.jar:/system/framework/sec_sdp_sdk.jar:/system/framework/sec_sdp_hidden_sdk.jar:/system/framework/knoxvpnuidtag.jar','SYSTEMSERVERCLASSPATH': '/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/samsung-services.jar:/system/framework/hqm.jar:/system/framework/dmf.jar:/system/framework/ssrm.jar','MC_AUTH_TOKEN_PATH': '/efs','KNOX_STORAGE': '/data/knox/ext_sdcard','ENC_EMULATED_STORAGE_TARGET': '/storage/enc_emulated','ANDROID_SOCKET_zygote': '8','ANDROID_ENTRYPOINT': 'main.pyc','ANDROID_ARGUMENT': '/data/user/0/org.test.myapp/files/app','ANDROID_APP_PATH': '/data/user/0/org.test.myapp/files/app','ANDROID_PRIVATE': '/data/user/0/org.test.myapp/files','ANDROID_UNPACK': '/data/user/0/org.test.myapp/files/app','PYTHONHOME': '/data/user/0/org.test.myapp/files/app','PYTHONPATH': '/data/user/0/org.test.myapp/files/app:/data/user/0/org.test.myapp/files/app/lib','PYTHONOPTIMIZE': '2','P4A_BOOTSTRAP': 'SDL2','PYTHON_NAME': 'python','P4A_IS_WINDOWED': 'True','P4A_ORIENTATION': 'sensor','P4A_NUMERIC_VERSION': 'None','P4A_MINSDK': '21','LC_CTYPE': 'C.UTF-8'})
03-13 19:46:51.673  6941  7051 I python  : Android kivy bootstrap done. __name__ is __main__
03-13 19:46:51.673  6941  7051 I python  : AND: Ran string
03-13 19:46:51.673  6941  7051 I python  : Run user program,change dir and execute entrypoint
03-13 19:46:51.845  2825  6724 I display : [PrimaryDisplay] [DYNAMIC_RECOMP] HWC_2_GLES by low FPS(3)
03-13 19:46:51.887  4786 13216 D BatteryService: !@BatteryListener : batteryPropertiesChanged!
03-13 19:46:51.888  4786 13216 D BatteryService: level:42,scale:100,status:2,health:2,present:true,voltage: 3859,temperature: 269,technology: Li-ion,AC powered:false,USB powered:true,POGO powered:false,Wireless powered:false,icon:17303840,invalid charger:0,maxChargingCurrent:0,maxChargingVoltage:0,chargeCounter:0
03-13 19:46:51.888  4786 13216 D BatteryService: online:4,current avg:152,charge type:1,power sharing:false,high voltage charger:false,capacity:280000,batterySWSelfDischarging:false,misc_event:0,current_event:0,current_now:215
03-13 19:46:51.888  4786  4786 D BatteryService: Sending ACTION_BATTERY_CHANGED.
03-13 19:46:51.891  4786  4786 D SamsungPhoneWindowManager: ACTION_BATTERY_CHANGED - Level :: 42,battStatus :: 2
03-13 19:46:51.891  4786  4786 I MotionRecognitionService: Plugged
03-13 19:46:51.891  4786  4786 D MotionRecognitionService:   mCableConnection= 1
03-13 19:46:51.891  4786  4786 D MotionRecognitionService: setPowerConnected : mGripEnabled = false
03-13 19:46:51.892  4786  4810 D UsbDeviceManager: handleMessage -> MSG_UPDATE_CHARGING_STATE = 1
03-13 19:46:51.893  5130  5130 D KeyguardUpdateMonitor: received broadcast android.intent.action.BATTERY_CHANGED
03-13 19:46:51.894  5130  5130 D BatteryController: onReceive-ACTION_BATTERY_CHANGED : mLevel=42,mBatteryStatus=2
03-13 19:46:51.898  5130  5130 D PowerUI : priorPlugType = 2 mPlugType =  2
03-13 19:46:51.898  5130  5130 D PowerUI.Notification: Charging estimate time is not supported and connected cable is not a fast/slow charger,so return!
03-13 19:46:51.934  4445  4751 D DnsProxyListener: DNSDBG::dns addrinfo af 0
03-13 19:46:51.938  5680  7055 W craf    : [{0}] Failed to resolve name. status={1}
03-13 19:46:51.949  6941  7051 I python  : [WARNING] [Config      ] Older configuration version detected (0 instead of 23)
03-13 19:46:51.950  6941  7051 I python  : [WARNING] [Config      ] Upgrading configuration in progress.
03-13 19:46:51.958  6941  7051 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/org.test.myapp/files/app/.kivy/logs/kivy_21-03-13_0.txt
03-13 19:46:51.959  6941  7051 I python  : [INFO   ] [Kivy        ] v2.1.0.dev0
03-13 19:46:51.960  6941  7051 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/org.test.myapp/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
03-13 19:46:51.961  6941  7051 I python  : [INFO   ] [Python      ] v3.8.5 (default,Mar 12 2021,22:52:36) 
03-13 19:46:51.961  6941  7051 I python  : [Clang 8.0.2 (https://android.googlesource.com/toolchain/clang 40173bab62ec7462
03-13 19:46:51.962  6941  7051 I python  : [INFO   ] [Python      ] Interpreter at ""
03-13 19:46:51.963  6941  7051 I python  : [INFO   ] [Logger      ] Purge log fired. Processing...
03-13 19:46:51.965  6941  7051 I python  : [INFO   ] [Logger      ] Purge finished!
03-13 19:46:51.969  6941  7051 I python  : [INFO   ] [KivyMD      ] 0.104.2.dev0,git-Unknown,2021-03-12 (installed at "/data/user/0/org.test.myapp/files/app/_python_bundle/site-packages/kivymd/__init__.pyc")
03-13 19:46:51.976  6941  7051 I python  : [INFO   ] [Factory     ] 189 symbols loaded
03-13 19:46:52.772  4786 13216 I RemotePrintSpooler: [user: 0] unbindLocked()
03-13 19:46:52.777  4786  5199 I ActivityManager: KPU : put [android.process.media] : 7005 K
03-13 19:46:52.778  4786  5199 I ActivityManager: Killing 6269:android.process.media/u0a43 (adj 906): DHA:empty #27
03-13 19:46:52.804  5440  9903 D ForegroundUtils: could not check pending caller
03-13 19:46:52.953  5130  5290 D NetworkController.MobileSignalController(0/-2): onSignalStrengthsChanged signalStrength=SignalStrength: 7 99 -7 -200 -7 -200 -1 0 2147483647 2147483647 2147483647 2147483647 0 2147483647 0x2 P gsm|lte level=2
03-13 19:46:52.953  5130  5290 D NetworkController.MobileSignalController(0/-2): getMobileIconGroup(): 0
03-13 19:46:52.955  5130  5130 E SignalClusterView: setSlotFocusVisible : subId -2
03-13 19:46:52.955  5130  5130 E SignalClusterView: setSlotFocusVisible : subId -2
03-13 19:46:52.980  2825  2993 I display : [PrimaryDisplay] [DYNAMIC_RECOMP] first frame after HWC_2_GLES
03-13 19:46:52.980  2825  2993 I display : [PrimaryDisplay] [DYNAMIC_RECOMP] GLES_2_HWC by high FPS(5)
03-13 19:46:53.247  2825  6724 I display : [PrimaryDisplay] [DYNAMIC_RECOMP] HWC_2_GLES by low FPS(0)
03-13 19:46:53.930  8674  8741 D ScanRecord: Not a Multi Manu data
03-13 19:46:53.930  8674  8741 I chatty  : uid=1002(bluetooth) BT Service Call identical 8 lines
03-13 19:46:53.930  8674  8741 D ScanRecord: Not a Multi Manu data
03-13 19:46:53.931  6941  7051 I python  : [INFO   ] [Image       ] Providers: img_tex,img_dds,img_sdl2 (img_pil,img_ffpyplayer ignored)
03-13 19:46:53.976  8674  8741 D ScanRecord: Not a Multi Manu data
03-13 19:46:53.976  8674  8741 I chatty  : uid=1002(bluetooth) BT Service Call identical 8 lines
03-13 19:46:53.976  8674  8741 D ScanRecord: Not a Multi Manu data
03-13 19:46:54.027  6941  7051 I python  : [INFO   ] [Text        ] Provider: sdl2
03-13 19:46:54.458  4786  4873 D SensorService: [SO] 0.253 0.147 9.797
03-13 19:46:54.489  4786  5288 E Watchdog: !@Sync 338 [2021-03-13 19:46:54.489]
03-13 19:46:54.613  4786 13216 D SamsungAlarmManager: Cancel Alarm calling from uid:10028 pid :5680 / op:PendingIntent{62ca468: PendingIntentRecord{5ffcce6 com.google.android.gms startService}}
03-13 19:46:54.773  5784  5784 D io_stats: !@ 179,0 r 277211 10362393 w 179499 8084512 d 12382 4968364 f 60689 60594 iot 309510 292573 th 51200 0 0 pt 0 inp 0 0 10192.038
03-13 19:46:54.778  6941  7051 I python  : [INFO   ] [Window      ] Provider: sdl2
03-13 19:46:54.807  6941  7051 E libEGL  : validate_display:243 error 3008 (EGL_BAD_DISPLAY)
03-13 19:46:54.808  6941  7051 V SDL     : setOrientation() orientation=-1 width=800 height=600 resizable=true hint=
03-13 19:46:54.811  6941  7051 D mali_winsys: EGLint new_window_surface(egl_winsys_display *,void *,EGLSurface,EGLConfig,egl_winsys_surface **,egl_color_buffer_format *,EGLBoolean) returns 0x3000,[720x1432]-format:1
03-13 19:46:54.815  6941  7051 I python  : [INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
03-13 19:46:54.818  6941  7051 I python  : [INFO   ] [GL          ] Backend used <sdl2>
03-13 19:46:54.819  6941  7051 I python  : [INFO   ] [GL          ] OpenGL version <b'OpenGL ES 3.2 v1.r22p0-01rel0.1c3fafb6967aa7b4a29d549a102bdb12'>
03-13 19:46:54.820  6941  7051 I python  : [INFO   ] [GL          ] OpenGL vendor <b'ARM'>
03-13 19:46:54.821  6941  7051 I python  : [INFO   ] [GL          ] OpenGL renderer <b'Mali-T830'>
03-13 19:46:54.821  4786 13216 V WindowManager: Relayout Window{544411d u0 org.test.myapp/org.kivy.android.PythonActivity}: viewVisibility=0 req=720x1480 WM.LayoutParams{(0,0)(fillxfill) sim=#20 ty=1 fl=#1810980 pfl=0x1020000 fmt=-3 wanim=0x1030001 vsysui=0x510 sysuil=true needsMenuKey=2 colorMode=0 naviIconColor=0}
03-13 19:46:54.822  6941  7051 I python  : [INFO   ] [GL          ] OpenGL parsed version: 3,2
03-13 19:46:54.823  6941  7051 I python  : [INFO   ] [GL          ] Texture max size <8192>
03-13 19:46:54.824  6941  7051 I python  : [INFO   ] [GL          ] Texture max units <16>
03-13 19:46:54.829  4786 13216 D PowerManagerService: [api] acquire WakeLock flags=0x2000000a tag=WindowManager uid=1000 pid=4786 ws=WorkSource{10202} pkg=android
03-13 19:46:54.838  6941  6941 D ViewRootImpl@be05b2d[PythonActivity]: Relayout returned: old=[0,0][720,1480] new=[0,1480] result=0x1 surface={valid=true 3605884928} changed=false
03-13 19:46:54.840  4786 13216 D SamsungAlarmManager: Cancel Alarm calling from uid:10028 pid :6239 / op:PendingIntent{b89e081: PendingIntentRecord{a1be757 com.google.android.gms startService}}
03-13 19:46:54.854  4786  5199 V WindowManager: Relayout Window{544411d u0 org.test.myapp/org.kivy.android.PythonActivity}: viewVisibility=0 req=720x1480 WM.LayoutParams{(0,0)(fillxfill) sim=#20 ty=1 fl=#1810900 pfl=0x1020000 fmt=-3 wanim=0x1030001 vsysui=0x510 sysuil=true needsMenuKey=2 colorMode=0 naviIconColor=0}
03-13 19:46:54.860  4786  5199 D PowerManagerService: [api] release WakeLock SCREEN_BRIGHT_WAKE_LOCK        'WindowManager' ON_AFTER_RELEASE ACQ=-31ms (uid=1000 pid=4786 ws=WorkSource{10202}) (0x0)
03-13 19:46:54.860  4786  5199 D PowerManagerService: [api] applyWakeLockFlagsOnReleaseLocked : userActivityNoUpdateLocked is called : SCREEN_BRIGHT_WAKE_LOCK        'WindowManager' ON_AFTER_RELEASE (uid=1000 pid=4786 ws=WorkSource{10202})
03-13 19:46:54.865  6941  6941 D ViewRootImpl@be05b2d[PythonActivity]: Relayout returned: old=[0,1480] result=0x1 surface={valid=true 3605884928} changed=false
03-13 19:46:54.874  6941  7051 D libGLESv2: STS_GLApi : DTS,ODTC are not allowed for Package : org.test.myapp
03-13 19:46:54.876  6941  7051 I python  : [INFO   ] [Window      ] auto add sdl2 input provider
03-13 19:46:54.878  6941  7051 I python  : [INFO   ] [Window      ] virtual keyboard not allowed,single mode,not docked
03-13 19:46:55.123  6941  7051 I python  : [INFO   ] [GL          ] NPOT texture support is available
03-13 19:46:55.515  6941  7051 I python  :  Traceback (most recent call last):
03-13 19:46:55.516  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/app/main.py",line 28,in <module>
03-13 19:46:55.517  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/app.py",line 954,in run
03-13 19:46:55.518  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/app.py",line 924,in _run_prepare
03-13 19:46:55.518  6075  6125 I ReschedulableTimer: [#CMH#] ReschedulableTimer started 
03-13 19:46:55.518  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/app/main.py",line 26,in build
03-13 19:46:55.519  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/lang/builder.py",line 405,in load_string
03-13 19:46:55.520  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/factory.py",line 154,in __getattr__
03-13 19:46:55.521  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivymd/uix/__init__.py",line 6,in <module>
03-13 19:46:55.522  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivymd/uix/behaviors/__init__.py",line 10,in <module>
03-13 19:46:55.522  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivymd/uix/behaviors/backgroundcolor_behavior.py",line 25,in <module>
03-13 19:46:55.523  6941  7051 I python  :    File "/home/lauri/Py/prove/asd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivymd/uix/behaviors/elevation.py",line 364,in <module>
03-13 19:46:55.524  6941  7051 I python  :  ModuleNotFoundError: No module named 'PIL'
03-13 19:46:55.524  6941  7051 I python  : Python for android ended.
03-13 19:46:55.785  4786  4900 W InputDispatcher: channel ~ Consumer closed input channel or an error occurred.  events=0x9
03-13 19:46:55.785  4786  4900 E InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
03-13 19:46:55.785  4786  5199 I WindowManager: WIN DEATH: Window{544411d u0 org.test.myapp/org.kivy.android.PythonActivity}
03-13 19:46:55.785  4786  5199 W InputDispatcher: Attempted to unregister already unregistered input channel
03-13 19:46:55.785  4786  6064 I ActivityManager: Process org.test.myapp (pid 6941) has died: fore TOP (49,1177)
03-13 19:46:55.786  4786  5199 I WindowManager: Destroying surface Surface(name=org.test.myapp/org.kivy.android.PythonActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2501 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:985 com.android.server.wm.WindowState.removeImmediately:2407 com.android.server.wm.WindowState.removeIfPossible:2615 com.android.server.wm.WindowState.-wrap1:0 com.android.server.wm.WindowState$DeathRecipient.binderDied:3154 android.os.BinderProxy.sendDeathNotice:841 <bottom of call stack> 
03-13 19:46:55.786  4433  4433 I Zygote  : Process 6941 exited cleanly (255)
03-13 19:46:55.786  4786  6064 W ActivityManager: Force removing ActivityRecord{4aca3e0 u0 org.test.myapp/org.kivy.android.PythonActivity t497}: app died,no saved state
03-13 19:46:55.786  2842  2938 I SurfaceFlinger: id=137 Removed org.test.myapp/org.kivy.android.PythonActivity#0 (2/6)
03-13 19:46:55.786  5115  5115 D InputEventReceiver: channel 'ClientState{89cab8d uid 10202 pid 6941 theme 99} (client)' ~ Disposing input event receiver.
03-13 19:46:55.786  5115  5115 D InputEventReceiver: channel 'ClientState{89cab8d uid 10202 pid 6941 theme 99} (client)' ~NativeInputEventReceiver.
03-13 19:46:55.786  2842  2938 I SurfaceFlinger: id=137 Removed org.test.myapp/org.kivy.android.PythonActivity#0 (-2/6)
03-13 19:46:55.787  2842  2842 I SurfaceFlinger: removeLayer is called from message
03-13 19:46:55.787  2842  2842 E SurfaceFlinger: removeLayer called with a layer whose parent has been removed
03-13 19:46:55.787  2842  2842 I SurfaceFlinger: removeLayer is called from message
03-13 19:46:55.787  2842  2842 E SurfaceFlinger: removeLayer called with a layer whose parent has been removed
03-13 19:46:55.787  2829  2829 I Sensors : AccelerometerSensor:setDelayAcc: handle 0,delay 66667000 ns,old_delay 20000000 ns
03-13 19:46:55.787  5440  9903 D ForegroundUtils: could not check pending caller
03-13 19:46:55.788  4786 10360 D SensorService: Calling activate off
03-13 19:46:55.791  4786  5199 D InputDispatcher: Focus left window: 6941
03-13 19:46:55.793  2842  2842 I SurfaceFlinger: removeLayer is called from message
03-13 19:46:55.794  2842  2842 I SurfaceFlinger: id=137 Removed org.test.myapp/org.kivy.android.PythonActivity#0 (-2/6)
03-13 19:46:55.795  4786  6064 D InputDispatcher: Focused application released
03-13 19:46:55.795  4786  6064 W MultiScreenManagerService: moveTaskBackToDisplayIfNeeded(): root activity or app is null,task=TaskRecord{e21526d0 #497 A=org.test.myapp U=0 StackId=1 sz=0},rootActivity=null
03-13 19:46:55.796  4786  4786 D CodecSolution: MultiWindowEventListener::onMultiWindowFocusChanged(0)
03-13 19:46:55.796  4786  4786 D MdnieScenarioControlService: Listener Real Multi Window State : true
03-13 19:46:55.796  4786  4786 D CS_HdrController: MultiWindowEventListener::onFocusStackChanged(0)
03-13 19:46:55.799  2842  2842 I Layer   : id=137 onRemoved org.test.myapp/org.kivy.android.PythonActivity#0 
03-13 19:46:55.801  2842  2842 I Layer   : id=139 onRemoved Background for - SurfaceView - org.test.myapp/org.kivy.android.PythonActivity@abb699d@0#0 
03-13 19:46:55.801  2842  2842 I Layer   : id=138 onRemoved SurfaceView - org.test.myapp/org.kivy.android.PythonActivity@abb699d@0#0

我认为问题是: 03-13 19:46:55.524 6941 7051 I python:ModuleNotFoundError:没有名为“PIL”的模块

但我不知道如何解决 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...