android - Buildozer 构建 apk,但不适用于 android
问题描述
我有 buildozer 的问题,我尝试了一个简单的应用程序来测试 apk 是否与 kivymd 一起工作。在 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 运行 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,0][720,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,0][720,1480] new=[0,0][720,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: No module named 'PIL'
但我不知道如何解决谢谢
解决方案
推荐阅读
- spring - 升级到 Spring Boot 2.3.8.RELEASE 后出现 java.lang.NoClassDefFoundError:brave/internal/HexCodec
- javascript - 从具有唯一 ID 的 Firebase 中删除文档
- java - 为什么下面的代码有问题,我的应用程序总是崩溃
- bootstrap-4 - 手机上的引导模式宽度打开到小(宽度)
- java - 如何用 Java 为我的 2D 游戏制作一扇门?
- javascript - 检测网站或代码库上使用的功能
- node.js - NodeJS pg不更新表
- sql - 将 XML 发票数据导入 SQL 表
- typescript - 用打字稿中的字段初始化函数?
- ios - UIView 蒙版三角形