使用腾讯云函数和云存储开发android app更新功能开发遇到的坑和解决方案
📋 问题清单
1. EAS Build 配置错误
问题:
eas.json is not valid. - "update" is not allowed
原因:eas.json 中使用了不支持的 update 和 channel 字段
解决方案:
- 删除
eas.json中的update块 - 删除
build.preview.android和build.production.android中的channel字段
2. EAS Build 下载命令参数错误
问题:
Unexpected arguments: --latest, --output, ./app-release.apk
原因:eas build:download 命令不支持这些参数
解决方案:
- 从
eas build输出中提取下载 URL - 使用
curl或wget直接下载 APK
DOWNLOAD_URL=$(echo "$BUILD_OUTPUT" | grep -oE 'https://expo.dev/artifacts/eas/[a-zA-Z0-9]+\.apk' | head -1)
curl -L -o ./app-release.apk "$DOWNLOAD_URL"
3. 上传时请求体大小超限
问题:
EXCEED_MAX_PAYLOAD_SIZE
请求体大小超过限制。云函数请求体最大限制:文本类型请求体 100KB,其他类型请求体 6MB
原因:
- APK 文件 111MB,Base64 编码后约 148MB
- 即使分片上传,单个分片 Base64 编码后也超过限制
解决方案:
- 将分片大小从 5MB → 4MB → 3MB → 2MB(最终方案)
- 缩短 JSON 字段名(
uploadId→u,chunkIndex→i等) - 使用
