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

Spotipy Kivy项目经Buildozer打包安卓APK后无法运行

修复方案

以下问题按出现概率从高到低排序,逐一修改即可解决APK运行异常问题:

1. 未声明Android网络权限

Android系统默认禁止所有应用发起网络请求,仅配置依赖不会自动授予网络权限,所有Spotify API请求会被直接拦截。
修复方式:
打开buildozer.spec配置文件,找到android.permissions配置项,修改为:

android.permissions = INTERNET

2. Spotipy缓存写入权限错误

SpotifyClientCredentials默认会在程序运行目录写入token缓存文件,Android环境下默认运行目录为系统根目录,应用无写入权限,会直接触发IO异常。
修复方式:
初始化Spotify实例时禁用缓存(客户端凭证模式token有效期1小时,轻量应用无需持久化缓存,无功能影响),修改get_songs方法中的初始化代码:

sp = spotipy.Spotify(
    client_credentials_manager=SpotifyClientCredentials(
        client_id=self.SPOTIPY_CLIENT_ID,
        client_secret=self.SPOTIPY_CLIENT_SECRET,
        cache_handler=None
    )
)

3. HTTPS证书验证失败

Buildozer打包的Python运行环境默认不携带系统CA根证书库,urllib3/requests发起HTTPS请求时会因找不到可信证书抛出SSL错误。
修复方式:

  • 第一步,修改buildozer.spec的依赖配置,删除重复的urllib3条目,新增certifi依赖:
requirements = python3,kivy==2.1.0,spotipy,charset-normalizer,redis,requests,flask,flask-cors,urllib3,packaging,idna,certifi
  • 第二步,在代码所有导入语句最下方添加证书路径配置:
import os, certifi
os.environ['REQUESTS_CA_BUNDLE'] = certifi.where()

4. KV语法冗余导致组件初始化异常

当前KV字符串开头单独写了MyLayout:实例化语句,下方又定义了<MyLayout>类规则,PC端Kivy做了语法容错可正常运行,Android端打包环境下会触发组件重复加载错误。
修复方式:删除KV字符串开头单独的MyLayout:行,修改后的KV内容如下:

kv="""
<MyLayout>:
    orientation:"vertical"
    TextInput:
        id:text
    Button:
        text:"start"
        on_release: root.start()
    Label:
        text:root.Output
"""

重新打包注意事项

修改完上述配置和代码后,先执行buildozer android clean清除旧构建缓存,再执行打包命令,避免旧配置残留导致问题复现。测试时需确保设备网络可正常访问Spotify服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:33:21