Buildozer+Kivy开发APP上架Google Play遇API level要求问题求助
我之前发布Kivy应用到Google Play时也碰到过完全一样的问题!只修改android.api = 29经常不够,因为Buildozer的配置里还有几个关键项需要同步调整,给你一步步梳理解决方案:
同步修改buildozer.spec里的多个API相关配置
打开你的buildozer.spec文件,确保以下几个配置都设置为29:android.api = 29 android.targetapi = 29 android.sdk = 29其中
android.targetapi是最容易被忽略的项——它直接决定了APK的目标SDK版本,只改android.api往往不会生效。另外android.minapi可以保留你需要的最低支持版本(比如21),不用强制改成29。清理Buildozer缓存后重新编译
Buildozer会缓存之前编译的中间文件,旧的API配置可能残留在缓存里,导致新设置不生效。执行以下命令清理缓存并重新生成APK:buildozer android clean buildozer android debug release确认依赖版本兼容API Level 29
如果你使用的是较旧的Kivy或依赖库版本,可能对高API Level支持不足。建议升级到Kivy的最新稳定版,比如在spec里设置:requirements = python3,kivy==2.2.1检查自定义AndroidManifest.xml(如果有)
如果你在项目中自定义了AndroidManifest.xml模板,要确保文件里的targetSdkVersion字段也设置为29:<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29"/>没有自定义Manifest的话,Buildozer会根据spec里的配置自动生成正确的内容,这一步可以跳过。
验证结果
编译完成后,你可以用Android SDK里的aapt工具验证APK的目标API版本,命令如下:
aapt dump badging ./bin/your-app-release-unsigned.apk | grep targetSdkVersion
如果输出显示targetSdkVersion:'29',说明配置已经生效,再上传到Google Play Console就不会报错了。
内容的提问来源于stack exchange,提问作者Marcus Chong




