内测群里偶尔会冒出这样的消息:测试用户操作到一半,发现看到的全是别人的数据,或者刚提交的记录怎么查都查不到。排查半天,最后发现安装包连的是正式环境的服务器。包没问题、链接没问题,问题出在「这个包指向哪个后端」。下面讲清多环境配置的常见做法,以及分发前怎么把这个坑堵上。
为什么安装包最容易连错服务器
一个 APP 通常要对接不止一套后端:开发自测用开发环境,测试团队用测试环境,上线后用正式环境。差异往往只体现在一个接口地址或域名上,而这行配置在打包时就固定进了安装包。
- 出包时忘了切回目标环境,包就默认带上了上一次打包的环境
- 环境地址写成硬编码,例如直接写死在
BuildConfig或baseUrl常量里,切换只能改代码再重新出包,容易漏改 - 同一版本号打了多个环境的包,文件名又没区分,分发时抓到哪个发哪个
结果就是安装成功、打开正常,但数据不对。这类问题在安装环节不会报任何错,只能靠使用过程中暴露。
常见的多环境配置方式
主流做法大致三种,各有取舍:
| 方式 | 做法 | 优点 | 风险 |
|---|---|---|---|
| 构建时注入 | 打包时按参数写入不同的接口地址 | 一个包对应一个环境,边界清楚 | 每个环境都要单独出包 |
| 发版渠道区分 | 用不同的包名后缀或渠道标记出包 | 可并存安装,便于对比 | 包变多,管理成本上升 |
| 运行时可切换 | 应用内提供环境选择入口 | 一个包测多个环境 | 入口若未隐藏,测试用户可能误切 |
三种方式可以组合。比如内测阶段用构建时注入保证边界清晰,同时保留一个仅内部可见的切换入口,方便联调时临时改地址。
分发前怎么确认包在正确环境
- 冻结出包参数。把「本次内测指向哪个环境」写进发版说明,由出包人确认
- 在包名或版本号上留痕。例如用
-test后缀或版本描述注明环境,别只靠记忆 - 出包后先自测一次。用真实网络打开应用,确认接口返回的数据来自预期环境
- 分发页写明环境。在分发入口旁注明本版对接环境与测试范围(https://xiafenfa.com)
- 收尾时清理。内测结束后停用对应分发链接,避免旧环境的包继续被下载
常见问题
| 问题 | 说明 |
|---|---|
| 一个版本能同时连两套环境吗 | 取决于实现方式。运行时可切换的方案可以,但建议把入口限制在内部可见 |
| 环境切换入口要不要对测试用户开放 | 一般不建议。除非本轮测试目标就是验证切换逻辑本身 |
| 数据看起来不对一定是环境问题吗 | 不一定。先确认接口地址,再排查账号权限与本地缓存 |
| 连错环境会污染正式数据吗 | 有这个风险。发现后应尽快停用该包,并在群里同步说明 |
建议:把「本包对接环境」和版本号放在同一行展示,出包后先由出包人自查一次、再交给分发。一个小标注,能挡掉大部分「数据不对」的返工排查。
多环境本身不是难题,难的是让每个安装包都留下清楚的环境痕迹。出包时冻结参数、包名上留痕、分发页写明环境,三步做到位,测试用户就不必再靠猜。