Python KivyMD应用打包APK后安卓端启动即崩溃求助
KivyMD应用打包APK后安卓加载崩溃排查方案
问题详情
Python KivyMD代码经Google Colab打包为APK后,安卓设备上应用加载完成立即崩溃,无法定位问题,已受此问题困扰4个月。
相关代码片段
from kivymd.app import MDApp from kivymd.toast import toast from kivymd.uix.button import MDFlatButton from kivymd.uix.datatables import MDDataTable from kivymd.uix.dialog import MDDialog from kivy.lang import Builder from datetime import date, datetime from kivy.metrics import dp import sqlite3 if platform == "android": from android.permissions import request_permissions, Permission request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE]) class CarApp(MDApp):
Buildozer依赖配置
requirements = python3,kivy==2.1.0,kivymd==1.1.1,Pillow,Kivy-Garden,numpy
排查与修复步骤
- 修复未定义变量错误:代码中直接使用
platform但未导入模块,安卓环境下会触发NameError导致崩溃,需在代码开头添加import platform。 - 调整权限请求时机:不要在模块全局作用域执行权限请求,将权限逻辑移至
CarApp的on_start方法中,避免应用初始化阶段出错:class CarApp(MDApp): def on_start(self): if platform == "android": from android.permissions import request_permissions, Permission request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE]) - 添加日志定位问题:引入日志模块记录关键流程,打包后通过安卓日志工具查看崩溃细节:
打包完成后,连接设备执行import logging logging.basicConfig(level=logging.INFO) class CarApp(MDApp): def build(self): logging.info("应用开始构建") # 后续构建逻辑adb logcat | grep python查看Python相关日志,获取崩溃具体原因。 - 检查依赖兼容性:KivyMD 1.1.1与Kivy 2.1.0可能存在兼容问题,可尝试升级KivyMD至适配版本,或移除未使用的
Kivy-Garden依赖测试打包效果。 - 修正SQLite存储路径:安卓环境下不能使用默认路径存储SQLite数据库,需使用应用私有存储路径:
import os from kivy.app import App db_path = os.path.join(App.get_running_app().user_data_dir, "car_db.db") conn = sqlite3.connect(db_path)
内容的提问来源于stack exchange,提问作者komolafe oluwaseun
相关产品推荐
相关产品推荐

