指南摘要
设计 Gradle Android 注册检查,按 release 变体读取 applicationId 与证书,避免硬编码 debug 包名和每次构建都请求 API。
适合人群: 维护多个 product flavor、渠道后缀或签名配置的 Android 工程师。
发布检查步骤
- 确定本次正式发布的变体及其最终 applicationId。
- 等待生产 APK 构建并签名完成。
- 用 Android build-tools 提取真实产物的证书 SHA-256。
- 向 CI 导出简短机器可读身份数据,再由受保护环境执行请求。
关键事实
事实依据最终 release 变体
避免硬编码调试包名
调用时机受控的发布前检查
注意事项
product flavor 和 applicationIdSuffix 常导致查错包名。namespace 也不能直接代替最终 applicationId。
详细说明
从选中的变体和产物取得数据
把仅用于发布的任务关联到所选变体与已签名输出,不要维护第二份容易过期的包名常量表。若产品使用多个 flavor,下面 assembleRelease 示例的任务名与 APK 路径要按实际变体调整。
在正式产物上提取指纹,不能拿 signingConfig 的 debug 值充数。把包名和证书导出给 CI 后,由受保护环境调用 API,可减少凭据分布,也避免让普通编译与测试受网络和配额影响。
- 不是每次本地构建都要请求状态。
- namespace 与 applicationId 分别核对。
- 以正式签名产物为准。
构建与签名产物检查
./gradlew assembleRelease
apksigner verify --print-certs app/build/outputs/apk/release/app-release.apk填入正式包名;要核对实际 APK 的签名,再补充该产物的公开证书 SHA-256。查询用于发现登记问题,不能代替商店审核。
运行状态检测 →常见问题
为什么不在每次 Gradle 构建时查 API?
会拖慢本地编译、消耗配额,并迫使更多开发环境持有凭据。通常只需让发布流程在正式签名后执行受控检查,把输入导出与外部网络调用分开即可。
多个 flavor 应如何传参?
为每个将发布的变体读取最终 applicationId,并取该变体真实签名产物的证书。不要把基础包名或另一渠道的指纹直接复用到所有变体。
来源与审核
最后审核: