我遇到了一个奇怪的问题。我的应用程序与Windows上的kivymd工具栏MDTopAppBar
(也用pyinstaller编译后)和Ubuntu完美配合。但是,当我尝试在最简单的应用程序中添加这个元素并使用buildozer创建.apk时,我的应用程序在启动后立即崩溃。
的例子main.py
from kivy.config import Config
Config.set('graphics', 'resizable', 0)
Config.set("graphics", "width", 360)
Config.set("graphics", "height", 740)
from kivymd.app import MDApp
from kivy.lang import Builder
class MesApp(MDApp):
def build(self):
return Builder.load_file('main.kv')
if __name__ == '__main__':
MesApp().run()
main.kv
<Screen>:
MDBoxLayout:
orientation: 'vertical'
padding: dp(5), dp(5)
MDTopAppBar:
title: 'Some toolbar'
MDLabel:
text: 'Some text'
pos_hint: {"center_x": 0.9}
要求来自buildozer.spec:
requirements = kivy==2.1.0, kivymd==1.1.1, sdl2_ttf == 2.0.15, pillow
如果我们从main中删除两行MDTopAppBar
。Kv这个应用程序工作正常。下面是一些关于崩溃的日志:
...
11-09 20:01:25.672 15328 15466 I python : [INFO ] [Base ] Start application main loop
11-09 20:01:25.674 15328 15466 I python : [INFO ] [GL ] NPOT texture support is available
--------- beginning of crash
11-09 20:01:25.715 15328 15466 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x40 in tid 15466 (SDLThread), pid 15328 (stone.mytestapp)
# org.testone.mytestapp terminated
搜索这个错误没有帮助。我的代码有问题吗?还是关于推土机和这个特定的元素MDTopAppBar
?我只是不了解构建过程是如何工作的,以及那里发生了什么。
操作系统:Ubuntu 22.04.1 LTS
Python: 3.10.6
设备:Google Pixel 4a, Android 11
buildozer: 1.4.0。根据官方文档安装。
对于那些面临这个问题的人,kivymd github repo上有一个关于这个问题的问题,这个问题是由最新opengl版本和sdl版本的变化引起的。目前最好的方法是在编译apk时在需求中使用kivymd==1.0.2,它应该可以正常工作。