You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android设备上Kivy应用触发SIGSEGV(Fatal signal 11)崩溃求助

Kivy应用在Android启动黑屏后崩溃(SIGSEGV在vbo.so)

问题描述

每次打开Kivy应用时,界面卡在黑屏状态随后崩溃,Android平台下的崩溃日志及构建配置如下:

崩溃日志

2023-04-17 19:45:10.737 21265-21307 libc                    org.test.myapp                       A  Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x40 in tid 21307 (SDLThread), pid 21265 (SDLActivity)
2023-04-17 19:45:10.927 21318-21318 DEBUG                   pid-21318                            A  pid: 21265, tid: 21307, name: SDLThread  >>> org.test.myapp <<<
2023-04-17 19:45:11.068 21318-21318 DEBUG                   pid-21318                            A        #04 pc 0000000000009b88  /data/data/org.test.myapp/files/app/_python_bundle/site-packages/kivy/graphics/vbo.so
2023-04-17 19:45:11.981  1768-21325 ActivityTaskManager     system_server                        W    Force finishing activity org.test.myapp/org.kivy.android.PythonActivity
2023-04-17 19:45:12.015  4741-6664  ProcessMonitor          com.miui.securitycenter.remote       I  onForegroundInfoChanged: ForegroundInfo{mForegroundPackageName='com.miui.home', mForegroundUid=10050, mForegroundPid=2739, mLastForegroundPackageName='org.test.myapp', mLastForegroundUid=10349, mLastForegroundPid=21265, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
2023-04-17 19:45:12.192  1768-5827  ActivityManager         system_server                        I  Process org.test.myapp (pid 21265) has died: cch CRE 
2023-04-17 19:45:12.195  1768-5827  ProcessManager          system_server                        D  skip restart org.test.myapp because this device is a lowmemory device!

构建配置(buildozer.spec)

source.include_exts = py,png,jpg,kv,atlas,db,txt

requirements = python3, kivy==2.1.0, kivymd, sql, pillow

解决方案

从日志看,崩溃发生在Kivy的VBO(顶点缓冲对象)底层库vbo.so,属于图形渲染层面的段错误,可尝试以下方案:

  • 强制指定图形渲染后端
    在应用入口main.py最开头添加配置,切换渲染后端:

    from kivy.config import Config
    # 尝试使用GL后端
    Config.set('graphics', 'backend', 'gl')
    # 若无效,可尝试切换为sdl2
    # Config.set('graphics', 'backend', 'sdl2')
    
  • 调整Kivy版本
    Kivy 2.1.0在部分Android设备上存在兼容性问题,可尝试降级到2.0.0或升级到2.2.0及以上稳定版,修改buildozer.spec中的requirements:

    requirements = python3, kivy==2.2.0, kivymd, sql, pillow
    
  • 排查自定义图形代码
    若应用中存在自定义图形绘制逻辑(比如直接操作Kivy Graphics模块的VBO、顶点数据),检查是否存在数组越界、未初始化对象等问题,确保图形指令的正确性。

  • 清理构建缓存并重新编译
    Buildozer的缓存可能残留旧的错误文件,删除缓存后重新构建:

    rm -rf .buildozer
    buildozer android debug deploy run
    
  • 低内存设备优化
    日志显示设备为低内存设备,可通过以下方式降低内存占用:

    • 压缩启动时加载的图片资源,使用适配设备的分辨率
    • 延迟加载非必要的UI组件和资源
    • 开启Kivy内存优化配置:
      from kivy.config import Config
      Config.set('graphics', 'disable_multitouch', '1')
      Config.set('kivy', 'log_level', 'warning')
      

内容的提问来源于stack exchange,提问作者NotMicah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:15:22