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

使用Buildozer将Python转为APK后崩溃,疑依赖配置有误

APK崩溃问题排查与修复(聚焦依赖配置)

一、依赖配置的坑点和修正方案

  • psutil适配问题:Android上psutil部分功能受限,打包时需指定兼容版本,直接把requirements里的psutil改成psutil>=5.8.0。同时要在buildozer.spec里添加必要权限,比如ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE,避免psutil读取系统信息失败。
  • speedtest包名错误:PyPI上的speedtest和常用的speedtest-cli不是同一包,你当前配置的speedtest大概率不对,换成speedtest-cli试试。如果仍崩溃,可改用兼容性更好的speedtest-cli2。
  • Kivy与KivyMD版本必须匹配:版本不匹配必然导致崩溃,比如Kivy用2.1.0的话,KivyMD对应0.104.2,直接在requirements里写死版本:kivy==2.1.0,kivymd==0.104.2。
  • 自定义模块打包遗漏:你代码里导入了get_size和get_size_bits两个自定义模块,需确保这两个文件和主脚本在同一目录,同时确认buildozer.spec里的source.include_exts包含.py,避免打包时遗漏导致运行时找不到模块崩溃。

二、Buildozer配置补全

  • 补全必要权限:在buildozer.spec的android.permissions里添加:
    android.permissions = INTERNET, ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE, READ_PHONE_STATE
    
    测速需要网络权限,psutil读取系统状态也需要对应权限,缺失会引发崩溃。
  • 开启调试日志:将android.debug = True加入spec配置,打包后用adb logcat | grep python查看崩溃日志,能精准定位具体错误(如模块缺失、权限不足、函数调用失败等)。

三、代码层面的兼容处理

  • psutil调用加异常捕获:Android上psutil部分函数不支持,直接调用会崩溃,添加try-except块处理:
    try:
        cpu_usage = psutil.cpu_percent()
    except NotImplementedError:
        cpu_usage = 0  # 给个默认值即可
    
  • 测速逻辑放在子线程:你代码已使用threading,需确保speedtest的测试全程在子线程执行,避免阻塞UI线程触发应用无响应崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:24:07