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()` 里切换:
|
默认使用外网域名。若要本地联调,可在 `Application.onCreate()` 里切换:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
XuqmSDK.useLocalServiceEndpoints("192.168.116.9")
|
XuqmSDK.useLocalServiceEndpoints("10.0.2.2")
|
||||||
// 物理设备可改成你的电脑局域网 IP
|
// 物理设备可改成你的电脑局域网 IP
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ object SampleEnvironmentConfig {
|
|||||||
private set
|
private set
|
||||||
|
|
||||||
fun external(): SampleEnvironment = SampleEnvironment(
|
fun external(): SampleEnvironment = SampleEnvironment(
|
||||||
demoBaseUrl = "http://192.168.116.9:8085/",
|
demoBaseUrl = "https://dev.xuqinmin.com/",
|
||||||
serviceHost = null,
|
serviceHost = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ enum class EnvironmentMode {
|
|||||||
|
|
||||||
data class EnvironmentState(
|
data class EnvironmentState(
|
||||||
val mode: EnvironmentMode = EnvironmentMode.EXTERNAL,
|
val mode: EnvironmentMode = EnvironmentMode.EXTERNAL,
|
||||||
val host: String = "192.168.116.9",
|
val host: String = "10.0.2.2",
|
||||||
)
|
)
|
||||||
|
|
||||||
class EnvironmentRepository(context: Context) {
|
class EnvironmentRepository(context: Context) {
|
||||||
@ -25,7 +25,7 @@ class EnvironmentRepository(context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setLocalhost(host: String) {
|
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))
|
save(EnvironmentState(mode = EnvironmentMode.LOCALHOST, host = normalizedHost))
|
||||||
SampleEnvironmentConfig.useLocalhost(normalizedHost)
|
SampleEnvironmentConfig.useLocalhost(normalizedHost)
|
||||||
}
|
}
|
||||||
@ -34,7 +34,7 @@ class EnvironmentRepository(context: Context) {
|
|||||||
val mode = runCatching {
|
val mode = runCatching {
|
||||||
EnvironmentMode.valueOf(prefs.getString(KEY_MODE, EnvironmentMode.EXTERNAL.name)!!)
|
EnvironmentMode.valueOf(prefs.getString(KEY_MODE, EnvironmentMode.EXTERNAL.name)!!)
|
||||||
}.getOrDefault(EnvironmentMode.EXTERNAL)
|
}.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)
|
return EnvironmentState(mode = mode, host = host)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,7 +53,7 @@ import kotlinx.coroutines.flow.StateFlow
|
|||||||
|
|
||||||
data class EnvironmentUiState(
|
data class EnvironmentUiState(
|
||||||
val mode: EnvironmentMode = EnvironmentMode.EXTERNAL,
|
val mode: EnvironmentMode = EnvironmentMode.EXTERNAL,
|
||||||
val host: String = "192.168.116.9",
|
val host: String = "10.0.2.2",
|
||||||
val message: String? = null,
|
val message: String? = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ fun EnvironmentScreen(
|
|||||||
|
|
||||||
Text(
|
Text(
|
||||||
text = if (state.mode == EnvironmentMode.EXTERNAL) {
|
text = if (state.mode == EnvironmentMode.EXTERNAL) {
|
||||||
"当前使用开发服务:http://192.168.116.9:8085"
|
"当前使用开发服务:https://dev.xuqinmin.com"
|
||||||
} else {
|
} else {
|
||||||
"当前使用本地服务:http://${state.host}:8085"
|
"当前使用本地服务:http://${state.host}:8085"
|
||||||
},
|
},
|
||||||
@ -171,7 +171,7 @@ fun EnvironmentScreen(
|
|||||||
},
|
},
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
label = { Text("本地 Host") },
|
label = { Text("本地 Host") },
|
||||||
placeholder = { Text("192.168.116.9 或你的电脑局域网 IP") },
|
placeholder = { Text("10.0.2.2 或你的电脑局域网 IP") },
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
enabled = state.mode == EnvironmentMode.LOCALHOST,
|
enabled = state.mode == EnvironmentMode.LOCALHOST,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
package com.xuqm.sdk.core
|
package com.xuqm.sdk.core
|
||||||
|
|
||||||
data class ServiceEndpoints(
|
data class ServiceEndpoints(
|
||||||
val controlBaseUrl: String = "http://192.168.116.9:8081/",
|
val controlBaseUrl: String = "https://dev.xuqinmin.com/",
|
||||||
val imApiBaseUrl: String = "http://192.168.116.9:8082/",
|
val imApiBaseUrl: String = "https://im.dev.xuqinmin.com/",
|
||||||
val imWsUrl: String = "ws://192.168.116.9:8082/ws/im",
|
val imWsUrl: String = "wss://im.dev.xuqinmin.com/ws/im",
|
||||||
val pushBaseUrl: String = "http://192.168.116.9:8083/",
|
val pushBaseUrl: String = "https://dev.xuqinmin.com/",
|
||||||
val updateBaseUrl: String = "http://192.168.116.9:8084/",
|
val updateBaseUrl: String = "https://update.dev.xuqinmin.com/",
|
||||||
val fileBaseUrl: String = "http://192.168.116.9:8086/",
|
val fileBaseUrl: String = "https://file.dev.xuqinmin.com/",
|
||||||
)
|
)
|
||||||
|
|
||||||
object ServiceEndpointRegistry {
|
object ServiceEndpointRegistry {
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户