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

使用Buildozer编译Kivy APK时bcrypt报错:找不到setuptools_rust

Kivy Buildozer 编译问题解决方案

1. 解决 ModuleNotFoundError: No module named 'setuptools_rust'

  • 不要仅在系统环境安装setuptools_rust,Buildozer使用独立构建虚拟环境,必须在buildozer.spec中明确声明依赖:
    在requirements行添加setuptools_rust,示例:
    requirements = python3,kivy==2.3.0,setuptools_rust
    
  • 清理Buildozer缓存,避免旧环境干扰:
    buildozer android clean
    
  • 强制Buildozer升级构建环境的pip及相关工具,在buildozer.spec中添加:
    android.pip_install_args = --upgrade pip setuptools setuptools_rust
    
  • 重新执行编译:
    buildozer -v android debug
    

2. 解决Python 3.12下bcrypt的distutils错误

Python 3.12移除了distutils模块,旧版bcrypt依赖该模块,解决方法:

  • 在buildozer.spec的requirements中指定不依赖distutils的bcrypt版本,示例:
    requirements = python3,kivy==2.3.0,bcrypt>=4.0.1
    
  • 同时添加setuptools到依赖(替代distutils的功能):
    requirements = python3,kivy==2.3.0,bcrypt>=4.0.1,setuptools
    

3. 解决APK生成后无法在手机运行的问题

排查步骤:

  • 检查buildozer.spec核心配置:
    • 确认android.entrypoint正确,默认值应为:
      android.entrypoint = org.kivy.android.PythonActivity
      
    • 确认添加了APP所需权限,比如需要网络则添加:
      android.permissions = INTERNET
      
    • 确认android.api设置合理,建议用33(Android 13)或更高,同时android.ndk = 25b(适配Python 3.10/3.12的稳定版本)
  • 查看手机端错误日志(定位问题的核心手段):
    buildozer android logcat
    
    运行命令后在手机上启动APP,终端会输出详细报错信息,比如缺失依赖、权限不足、入口错误等。

常见修复:

  • 若日志显示Permission denied,补全android.permissions中的所需权限
  • 若日志显示No module named xxx,确认该依赖已添加到requirements,且版本兼容Android构建环境
  • 若启动崩溃,检查android.entrypoint是否正确,或主入口脚本(如main.py)是否存在Android环境特有的路径/语法问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:57:20