Windows端Ubuntu使用Buildozer编译的Kivy应用在三星手机无法运行
问题排查及解决方案
1 优先排查配置错误
- 权限缺失:你的配置中
android.permissions = INTERNET处于注释状态,你用到的yagmail、firebase_admin、kivmob都需要联网权限,没有权限会导致库初始化直接崩溃,取消该行注释即可。 - 架构不兼容:你当前配置指定编译架构为
armeabi-v7a(32位ARM),近年发布的三星手机基本仅支持64位架构arm64-v8a,将配置中的android.arch = armeabi-v7a改为android.arch = arm64-v8a重新编译即可。
2 常见逻辑兼容问题
- 文件路径错误:安卓应用的工作目录和桌面端不同,你如果在代码中写死了相对路径读取json、txt文件,安卓环境下会找不到文件触发异常闪退。需要通过Kivy提供的工具动态获取路径:
from kivy.utils import platform from kivy.app import App import os if platform == 'android': # 安卓环境下的资源路径/用户数据路径 res_dir = App.get_running_app().user_data_dir else: # 桌面端路径 res_dir = './' # 读取文件时拼接路径 config_path = os.path.join(res_dir, '你的配置文件.json')
- 依赖库兼容问题:firebase_admin、yagmail这类库默认适配桌面/服务端环境,安卓端运行可能缺少依赖或者初始化逻辑不兼容:
- 确认所有依赖都有python-for-android的编译支持,没有的话需要自行编写编译规则
- kivmob需要额外配置安卓广告相关的gradle依赖和权限,检查是否漏加对应配置
3 精准定位问题方法
开启手机的USB调试,连接到编译环境后,运行以下命令抓取应用运行时的Python报错日志:adb logcat -s python
运行APP即可看到具体的崩溃栈,直接定位到出错的代码行。
内容的提问来源于stack exchange,提问作者Karo
相关产品推荐
相关产品推荐

