在Google Colab中使用Buildozer转换Kivy文件为APK失败
解决Buildozer在Colab中下载OpenSSL 1.1.1m时的404错误
问题根源
OpenSSL官网已移除1.1.1m版本的直接下载链接,导致Buildozer依赖的python-for-android工具尝试从原地址下载时返回HTTP 404错误。相关错误日志:
[INFO]: 正在下载openssl [INFO]: -> 目录上下文 /content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/packages/openssl [DEBUG]: -> 执行命令 basename https://www.openssl.org/source/openssl-1.1.1m.tar.gz [DEBUG]: openssl-1.1.1m.tar.gz [DEBUG]: 从https://www.openssl.org/source/openssl-1.1.1m.tar.gz下载openssl [DEBUG]: -> 执行命令 rm -f .mark-openssl-1.1.1m.tar.gz [INFO]: 从https://www.openssl.org/source/openssl-1.1.1m.tar.gz下载openssl Traceback (most recent call last): 文件 "/usr/lib/python3.10/runpy.py", 第196行, 在 _run_module_as_main中 return _run_code(code, main_globals, None, 文件 "/usr/lib/python3.10/runpy.py", 第86行, 在 _run_code中 exec(code, run_globals) 文件 "/content/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", 第1262行, 在 <module>中 urllib.error.HTTPError: HTTP Error 404: Not Found 下载失败: HTTP Error 404: Not Found; 1秒后重试...下载失败: HTTP Error 404: Not Found; 2秒后重试...下载失败: HTTP Error 404: Not Found; 4秒后重试...下载失败: HTTP Error 404: Not Found; 8秒后重试...# 命令执行失败: ['/usr/bin/python3', '-m', 'pythonforandroid.toolchain', 'create', '--dist_name=spamdetector', '--bootstrap=sdl2', '--requirements=python3,kivy,nltk,pickle,python-for-android,libffi', '--arch=arm64-v8a', '--arch=armeabi-v7a', '--copy-libs', '--color=always', '--storage-dir=/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a', '--ndk-api=21', '--ignore-setup-py', '--debug']
解决方法
方法1:升级python-for-android到最新版本
最新版本的python-for-android已更新OpenSSL的下载地址,指向可用的版本。在Colab中执行以下命令:
pip install --upgrade python-for-android
升级完成后重新运行Buildozer构建命令。
方法2:手动指定可用的OpenSSL版本
如果升级后问题仍存在,修改项目中的buildozer.spec配置文件:
- 找到
[app]部分的requirements项 - 添加或替换openssl版本为1.1.1分支的最新稳定版(如1.1.1w,这是1.1.1系列的最终版本),示例:
requirements = python3,kivy,nltk,pickle,python-for-android,libffi,openssl=1.1.1w
保存配置后重新执行Buildozer构建。
方法3:手动下载OpenSSL包到缓存目录
- 获取OpenSSL 1.1.1m的归档包
- 将下载的
openssl-1.1.1m.tar.gz上传到Colab的/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/packages/openssl目录 - 重新运行Buildozer构建命令,工具会直接使用已下载的包,不再尝试从原地址下载
内容的提问来源于stack exchange,提问作者jai
相关产品推荐
相关产品推荐

