You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Buildozer+Kivy开发APP上架Google Play遇API level要求问题求助

解决Buildozer编译APK目标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

火山引擎 最新活动