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

Kivy Buildozer打包APK报错:base.dm未找到+图标权限拒绝

Kivy打包APK启动崩溃及图标权限问题解决

环境信息

  • Python: 3.12.5
  • OS: Arch Linux
  • Buildozer: 1.5.0
  • Kivy: 2.3.0

问题描述

打包Kivy应用为APK后启动崩溃,报错找不到base.dm文件(代码中未引用该文件);同时出现Kivy图标访问被拒绝的错误(图标已放置在指定目录)。已尝试更换Buildozer版本、执行buildozer android clean、更换Kivy版本、切换Android API版本等操作,问题仍未解决。

相关文件

  • buildozer.spec内容地址:https://pastebin.com/deiWJibD
  • 错误日志地址:https://pastebin.com/K6M5cjA4

代码导入部分

import threading
import logging
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.popup import Popup
from kivy.uix.switch import Switch
from kivy.clock import Clock
from kivy.graphics import Rectangle
from android.permissions import Permission, request_permissions, check_permission
from jnius import autoclass
import hashlib
from android.content import Intent
from android.net import Uri

解决方案

针对base.dm文件缺失问题

  1. 检查asset配置
    确认buildozer.spec中android.add_assets没有误配置不存在的文件路径,或第三方库是否自动引入了base.dm但路径错误。可暂时注释掉非必要的add_assets项,重新打包测试。
  2. 彻底清理构建缓存
    除执行buildozer android clean外,手动删除项目根目录下的.buildozer文件夹,清除旧缓存和依赖后,重新执行buildozer android debug。
  3. 降级Python版本
    Python 3.12兼容性尚不完善,尝试降级到Python 3.11,再重新构建。

针对图标访问被拒绝问题

  1. 校验图标路径与权限
    确保buildozer.spec中android.icon的路径正确(如图标在根目录则配置为android.icon = icon.png),同时执行chmod 644 你的图标文件名.png赋予文件可读权限。
  2. 更换标准图标
    使用符合Android规范的图标(如512x512像素的PNG格式),避免使用损坏或非标准尺寸的文件。
  3. 添加存储权限
    在buildozer.spec的android.permissions中添加READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE,重新打包后测试。

额外排查

  • 查看错误日志中base.dm的调用栈,定位触发加载的模块,针对性排查依赖问题。
  • 用buildozer android debug --verbose构建,获取更详细的日志信息,定位问题节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:45:12