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

如何让同一APK适配Play Store内测、闭测及生产环境的不同API端点?

同一APK适配Play Store不同发布环境API端点的方案

核心要求是单APK适配多环境,不能靠构建不同变体打包多个APK,以下是几种落地可行的方案:

方案一:通过Play Core Library获取发布轨道,运行时切换端点

Play Store的内部测试、闭测、生产属于不同的发布轨道,我们可以通过Play Core库获取当前应用所在的轨道信息,动态切换API端点:

  1. 集成Play Core依赖(模块级build.gradle):
implementation "com.google.android.play:core:1.10.3"
  1. 实现轨道信息获取逻辑:
import com.google.android.play.core.appupdate.AppUpdateManagerFactory

// 异步获取当前发布轨道
fun getCurrentTrack(context: Context, onTrackReceived: (String?) -> Unit) {
    val appUpdateManager = AppUpdateManagerFactory.create(context)
    appUpdateManager.appUpdateInfo.addOnSuccessListener { appUpdateInfo ->
        val trackName = appUpdateInfo.installSource
        onTrackReceived(trackName)
    }.addOnFailureListener {
        onTrackReceived(null)
    }
}
  1. 根据轨道名称切换端点:
object ApiEndpointManager {
    fun getBaseUrl(trackName: String?): String {
        return when(trackName) {
            "internal" -> "https://dev.yourdomain.com/api/"
            "closed" -> "https://sit.yourdomain.com/api/"
            else -> "https://prod.yourdomain.com/api/" // 默认生产端点兜底
        }
    }
}
  1. 注意:部分旧设备或低版本Play服务可能无法获取轨道信息,必须设置生产端点作为兜底逻辑。

方案二:用远程配置服务动态下发端点

如果需要更高的灵活性(比如无需更新APK就能调整端点),可以用远程配置服务实现:

  • 在远程配置控制台创建三个参数:api_base_url_dev、api_base_url_sit、api_base_url_prod
  • 根据Play Store的测试群体,给不同轨道的用户分配对应参数值:
    • 内部测试组 → 下发api_base_url_dev
    • 闭测组 → 下发api_base_url_sit
    • 生产用户 → 下发api_base_url_prod
  • 应用启动时拉取远程配置,根据返回值初始化API客户端

方案三:结合共享偏好+发布前配置(适合小团队)

如果不想依赖第三方库,可以在上传到不同轨道前,通过脚本修改APK内的共享偏好默认值:

  1. 编写自动化脚本,在上传Play Store前,根据目标轨道修改APK中的默认端点配置
  2. 应用启动时读取共享偏好中的端点值,无配置则用生产端点兜底
  3. 注意:这种方式需要严格管控发布流程,避免配置错误

额外注意事项

  • 所有端点地址建议做混淆处理,避免反编译泄露测试环境信息
  • 上线前务必在对应Play轨道中验证端点切换逻辑,比如内部测试轨道的APK必须连接dev端点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:13:13