场景 | 服务器地址示例 | 说明 |
---|---|---|
本地开发调试 | 0.2.2:8080 或 0.0.1:端口 |
Android模拟器访问本机(需adb reverse配置) |
内网测试环境 | 168.x.x:端口 |
局域网内真实设备或虚拟机 |
生产环境(正式域名) | api.example.com 或 https://yourdomain.com |
部署在云服务器或自有机房 |
第三方服务 | Firebase、阿里云、酷盾安全等提供的API地址 | 需根据官方文档配置 |
代码中硬编码(不推荐)
// 示例:Retrofit配置 Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") // 生产环境 .build();
通过gradle
配置不同环境
build.gradle
中定义debug
和release
的服务器地址: buildTypes { debug { buildConfigField "String", "SERVER_URL", ""http://192.168.1.100:8080/"" } release { buildConfigField "String", "SERVER_URL", ""https://api.example.com/"" } }
String serverUrl = BuildConfig.SERVER_URL;
使用配置文件或环境变量
assets/config.json
或通过系统环境变量动态加载。场景 | 解决方案 |
---|---|
模拟器访问本机服务 | 使用0.2.2 (Android模拟器专用地址) |
HTTPS证书信任问题 | 在客户端忽略证书校验(仅限测试环境) |
跨域请求 | 服务器端配置CORS头或使用Nginx反向代理 |
解答:
network_security_config.xml
中配置明文流量允许: <domain-config cleartextTrafficPermitted="true"> <domain>api.example.com</domain> </domain-config>
解答:
BuildConfig
或SharedPreferences
存储当前环境标识。String getServerUrl() { if (isDebugMode()) { return "http://192.168.1.100:8080/"; } else { return "https://api.example.com/"; } }
gradle
构建类型自动区分