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

调用Google Play Android Developer API下载签名APK返回204问题

问题根因

接口返回204无内容不是官方文档有误,是几个文档没明确标注的隐性限制:

  • 异步构建未完成:上传AAB后Google不会立刻生成单文件Universal APK,只会先生成分发用的split APK集,Universal APK属于后台异步构建产物,构建未完成时提前调用下载接口会直接返回204。
  • 权限校验静默失败:仅配置androidpublisher鉴权Scope不满足要求,CI使用的服务账号必须在Play后台获得对应应用的版本管理、应用查看权限,缺权限时接口不会返回403错误,会静默返回204无任何提示。
  • 下载ID取值错误:generatedApks列表接口会同时返回split APK集、Universal APK两类下载ID,二者格式相似度极高,错拿split APK的ID调用Universal APK下载接口也会返回204。
  • 版本状态不满足要求:只有版本发布到至少一个轨道(内部测试、封闭测试、开放测试、正式版任意一个均可),后台才会生成可下载的正式签名APK,存在草稿箱未推到任何轨道的版本,下载接口会永久返回204。
  • 未开启重定向跟随:该下载接口不会直接返回文件流,会先返回302跳转至带临时签名的存储地址,HTTP客户端默认不跟随重定向时,部分场景下会被处理为204无内容响应。
可落地解决步骤

按顺序排查即可打通全流程:

  • 先校验服务账号权限:进入Play Console用户权限管理页,找到CI流程使用的服务账号,为其绑定对应应用的「查看应用信息」「管理测试/正式版本」权限,修改后等待2分钟待权限全局同步生效。
  • 增加轮询等待逻辑:上传AAB并将版本推送到目标轨道后,不要立刻调用下载接口,每隔10秒请求一次generatedApks列表接口,直到对应versionCode的返回结果中generatedUniversalApk.downloadId字段非空,再拿该ID发起下载请求。常规包体的Universal APK构建时长在30秒到2分钟区间,最大等待超时设为10分钟即可覆盖绝大多数情况。
  • 修正下载请求参数:使用curl发起请求时必须加-L参数开启重定向跟随,同时指定输出文件路径,正确请求示例如下:
curl -L \
  'https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{替换为你的应用包名}/generatedApks/{替换为对应版本号}/downloads/{替换为轮询拿到的universal apk下载ID}:download' \
  -H 'Authorization: Bearer {替换为你的有效鉴权token}' \
  -o google-signed-universal.apk
  • 校验版本状态:确认要下载的版本已经推送到至少一个发布轨道,不要使用纯草稿状态的版本号调用接口。

实测验证:按上述步骤调整后,接口会正常跟随重定向下载到带Google官方正式签名的单文件APK,可直接旁加载到测试设备安装,和手动从控制台下载的文件签名、内容完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:15:41