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

使用Buildozer构建的Android APK申请权限后崩溃问题求助

解决Kivy/KivyMD打包APK后权限申请崩溃(Unknown provider警告)

问题场景

应用基于Kivy 2.0.0、KivyMD 1.1.1开发,在Debian 11虚拟机的Python虚拟环境中打包为APK后,申请权限时突然崩溃,仅输出警告:

[WARNING] [Base] Unknown <android> provider.

spec文件依赖配置如下:

requirements = python3,kivy==2.0.0,kivymd==1.1.1,matplotlib,requests,urllib3,pillow,https://github.com/kivy-garden/graph/archive/master.zip,contourpy, cycler, fonttools, importlib-resources, kiwisolver, numpy, packaging,pyparsing, python-dateutil,chardet

解决方案

  • 补全权限配置并规范申请逻辑
    确认buildozer.spec中已声明应用所需的Android权限,例如存储权限:

    android.permissions = WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE
    

    权限申请代码需使用Kivy官方推荐的pyjnius调用Android原生API,避免自定义provider导致冲突。

  • 升级Kivy及KivyMD版本
    Kivy 2.0.0存在Android provider处理的已知兼容性问题,建议升级到2.1.0及以上版本,同时同步升级KivyMD到适配版本(如1.2.0+),修改spec的requirements行:

    requirements = python3,kivy>=2.1.0,kivymd>=1.2.0,matplotlib,requests,urllib3,pillow,...
    
  • 清理编译缓存后重新打包
    虚拟机环境下的编译缓存可能引发依赖冲突,执行以下命令清理后重新构建:

    buildozer android clean
    buildozer android debug deploy run
    
  • 排查第三方garden组件兼容性
    你引入的kivy-garden/graph master分支版本可能未适配Android provider机制,尝试替换为稳定发布版,或暂时移除该组件测试是否解决崩溃,确认问题后再针对性适配。

  • 检查自定义AndroidManifest配置
    如果使用了自定义AndroidManifest.xml,确保其中没有未定义的<provider>标签,避免与Kivy自动生成的manifest内容冲突。若无需自定义manifest,可删除buildozer.spec中android.add_manifest相关配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:37:21