feat(deploy): 添加生产环境部署配置和联调环境切换功能
- 新增 .env.production.example 配置文件,包含所有微服务的数据库和Redis配置 - 添加 compose.production.yaml Docker Compose部署文件,定义web和各服务容器 - 实现Android SDK环境切换功能,支持外部服务和本地联调模式切换 - 添加推送注册状态管理和接收开关设置界面 - 集成演示服务的应用密钥客户端和认证服务实现 - 完善文档说明各SDK模块的集成和使用方法
这个提交包含在:
父节点
6f5ce42e50
当前提交
a948abd845
@ -80,7 +80,7 @@ XuqmSDK.login(
|
||||
默认使用外网域名。若要本地联调,可在 `Application.onCreate()` 里切换:
|
||||
|
||||
```kotlin
|
||||
XuqmSDK.useLocalServiceEndpoints("192.168.116.9")
|
||||
XuqmSDK.useLocalServiceEndpoints("10.0.2.2")
|
||||
// 物理设备可改成你的电脑局域网 IP
|
||||
```
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ object SampleEnvironmentConfig {
|
||||
private set
|
||||
|
||||
fun external(): SampleEnvironment = SampleEnvironment(
|
||||
demoBaseUrl = "http://192.168.116.9:8085/",
|
||||
demoBaseUrl = "https://dev.xuqinmin.com/",
|
||||
serviceHost = null,
|
||||
)
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ enum class EnvironmentMode {
|
||||
|
||||
data class EnvironmentState(
|
||||
val mode: EnvironmentMode = EnvironmentMode.EXTERNAL,
|
||||
val host: String = "192.168.116.9",
|
||||
val host: String = "10.0.2.2",
|
||||
)
|
||||
|
||||
class EnvironmentRepository(context: Context) {
|
||||
@ -25,7 +25,7 @@ class EnvironmentRepository(context: Context) {
|
||||
}
|
||||
|
||||
fun setLocalhost(host: String) {
|
||||
val normalizedHost = host.trim().ifBlank { "192.168.116.9" }
|
||||
val normalizedHost = host.trim().ifBlank { "10.0.2.2" }
|
||||
save(EnvironmentState(mode = EnvironmentMode.LOCALHOST, host = normalizedHost))
|
||||
SampleEnvironmentConfig.useLocalhost(normalizedHost)
|
||||
}
|
||||
@ -34,7 +34,7 @@ class EnvironmentRepository(context: Context) {
|
||||
val mode = runCatching {
|
||||
EnvironmentMode.valueOf(prefs.getString(KEY_MODE, EnvironmentMode.EXTERNAL.name)!!)
|
||||
}.getOrDefault(EnvironmentMode.EXTERNAL)
|
||||
val host = prefs.getString(KEY_HOST, "192.168.116.9").orEmpty().ifBlank { "192.168.116.9" }
|
||||
val host = prefs.getString(KEY_HOST, "10.0.2.2").orEmpty().ifBlank { "10.0.2.2" }
|
||||
return EnvironmentState(mode = mode, host = host)
|
||||
}
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ import kotlinx.coroutines.flow.StateFlow
|
||||
|
||||
data class EnvironmentUiState(
|
||||
val mode: EnvironmentMode = EnvironmentMode.EXTERNAL,
|
||||
val host: String = "192.168.116.9",
|
||||
val host: String = "10.0.2.2",
|
||||
val message: String? = null,
|
||||
)
|
||||
|
||||
@ -142,7 +142,7 @@ fun EnvironmentScreen(
|
||||
|
||||
Text(
|
||||
text = if (state.mode == EnvironmentMode.EXTERNAL) {
|
||||
"当前使用开发服务:http://192.168.116.9:8085"
|
||||
"当前使用开发服务:https://dev.xuqinmin.com"
|
||||
} else {
|
||||
"当前使用本地服务:http://${state.host}:8085"
|
||||
},
|
||||
@ -171,7 +171,7 @@ fun EnvironmentScreen(
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
label = { Text("本地 Host") },
|
||||
placeholder = { Text("192.168.116.9 或你的电脑局域网 IP") },
|
||||
placeholder = { Text("10.0.2.2 或你的电脑局域网 IP") },
|
||||
singleLine = true,
|
||||
enabled = state.mode == EnvironmentMode.LOCALHOST,
|
||||
)
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
package com.xuqm.sdk.core
|
||||
|
||||
data class ServiceEndpoints(
|
||||
val controlBaseUrl: String = "http://192.168.116.9:8081/",
|
||||
val imApiBaseUrl: String = "http://192.168.116.9:8082/",
|
||||
val imWsUrl: String = "ws://192.168.116.9:8082/ws/im",
|
||||
val pushBaseUrl: String = "http://192.168.116.9:8083/",
|
||||
val updateBaseUrl: String = "http://192.168.116.9:8084/",
|
||||
val fileBaseUrl: String = "http://192.168.116.9:8086/",
|
||||
val controlBaseUrl: String = "https://dev.xuqinmin.com/",
|
||||
val imApiBaseUrl: String = "https://im.dev.xuqinmin.com/",
|
||||
val imWsUrl: String = "wss://im.dev.xuqinmin.com/ws/im",
|
||||
val pushBaseUrl: String = "https://dev.xuqinmin.com/",
|
||||
val updateBaseUrl: String = "https://update.dev.xuqinmin.com/",
|
||||
val fileBaseUrl: String = "https://file.dev.xuqinmin.com/",
|
||||
)
|
||||
|
||||
object ServiceEndpointRegistry {
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户