Play Console上传APK提示要求AAB格式 如何解决及APK转AAB
报错原因
Google Play自2021年8月起要求所有新上架应用必须使用Android App Bundle(AAB)格式提交,不再接受APK格式的新应用上传,你遇到的「无效文件类型」报错是平台的强制规则,并非文件损坏导致。
解决方案
优先方案:直接从Kivy项目构建AAB(无兼容风险,更稳定)
不要将现有APK转换为AAB,直接从源码构建AAB是最稳妥的方案,支持所有Google Play的AAB专属特性,操作步骤如下:
使用Buildozer构建
- 修改项目根目录的
buildozer.spec配置文件,找到android.output字段,将默认值apk修改为aab - 重新执行构建命令:
buildozer android release - 构建完成后,可在项目
bin目录下得到后缀为.aab的发布包,直接上传该文件即可
使用python-for-android直接构建
- 执行构建命令时添加
--output=aab参数,示例命令如下:
p4a aab --release --dist-name your_app_name --package=com.yourdomain.yourapp --name "你的应用名" --version 1.0.0 --orientation sensor ./项目路径
- 构建完成后即可得到符合要求的签名AAB文件
备选方案:现有APK转AAB(仅适用于无法重新构建源码的场景)
注意:转换得到的AAB需要和原APK使用完全一致的签名证书,否则无法上传到Play Console,且转换后的AAB可能存在兼容性问题,无法享受AAB的体积优化优势
- 首先安装官方工具
bundletool,将现有APK解压为模块资源文件,执行命令:bundletool extract-apks --apks=你的应用.apks --output-dir=./解压输出目录 - 手动创建AAB标准工程目录结构,将解压得到的
AndroidManifest.xml、资源文件、dex文件、so动态库对应放到base模块的对应目录下 - 调用Android构建工具或者
bundletool执行打包操作,生成未签名的AAB文件 - 使用原APK的签名证书对AAB执行签名,命令示例:
jarsigner -keystore 你的签名文件.keystore -storepass 签名库密码 -keypass 密钥密码 未签名.aab 密钥别名 - 签名完成后即可得到可上传的AAB文件
内容的提问来源于stack exchange,提问作者Amir Guliyev
相关产品推荐
相关产品推荐

