MacOS下用Buildozer构建Python2 Kivy APK遇TLSV1_ALERT_PROTOCOL_VERSION错误
解决Buildozer构建APK时[SSL: TLSV1_ALERT_PROTOCOL_VERSION]错误
问题背景
你在MacOS v10.12.6环境下,用Python2.7.10 + Buildozer v0.35dev构建Kivy应用APK时,卡在了下载hostpython2环节,出现[Errno socket error] [SSL: TLSV1_ALERT_PROTOCOL_VERSION]错误。本地Kivy运行和Android Launcher测试都正常,说明问题出在Buildozer下载依赖时的SSL协议兼容性上。
根本原因
Python2.7.10自带的OpenSSL版本过于老旧,不支持TLS 1.2及以上协议。而当前python.org已经禁用了TLSv1/TLSv1.1这类老旧协议,导致下载hostpython2安装包时SSL握手失败。
解决方案
方法1:升级Python2.7到最新补丁版(推荐)
Python2.7的最终版本2.7.18更新了内置的OpenSSL库,原生支持TLS 1.2,能直接解决这个SSL连接问题:
- 先安装Homebrew(如果还没装):
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - 安装Python2.7.18:
brew install python@2 - 修改Buildozer配置文件
buildozer.spec,指定使用新安装的Python路径:[app] # 保留其他原有配置,添加或修改这一行 python = /usr/local/bin/python2 - 重新运行构建命令:
buildozer android debug
方法2:手动下载hostpython2包并修改Recipe
如果不想升级Python,可以手动下载依赖包,让Buildozer跳过在线下载环节:
- 手动下载
Python-2.7.2.tar.bz2到你的项目目录(比如创建一个packages文件夹专门存放) - 找到python-for-android的hostpython2配置文件:
~/.buildozer/android/platform/python-for-android-new-toolchain/pythonforandroid/recipes/hostpython2/__init__.py - 打开该文件,找到下载URL的行,替换成本地文件的绝对路径,比如:
url = 'file:///Users/cck/OneDrive - act/Desk/kivy/packages/Python-2.7.2.tar.bz2' - 重新执行构建命令即可。
方法3:临时强制启用TLS兼容(不稳定,仅作备选)
通过环境变量强制Python使用兼容的SSL配置,但这个方法存在安全风险,且不一定在所有环境生效:
export SSL_CIPHERS='DEFAULT@SECLEVEL=1' export PYTHONHTTPSVERIFY=0 buildozer android debug
额外建议
从你的日志里还看到缺少pkg-config、autoconf、automake、libtoolize这些工具,后续构建其他依赖时大概率会报错,建议提前用Homebrew安装:
brew install pkg-config autoconf automake libtool
另外,Buildozer v0.35dev是较旧的开发版本,建议升级到最新稳定版,能避免很多已知问题:
pip install --upgrade buildozer
内容的提问来源于stack exchange,提问作者user761567
相关产品推荐
相关产品推荐

