XuqmGroup-AndroidSDK/docs/架构总览.md
XuqmGroup c8a482a5c0 refactor: sdk-log → sdk-bugcollect
- 目录/包名/类名/Gradle plugin 全部重命名
- XLog → BugCollect
- logApiUrl/logEnabled → bugCollectApiUrl/bugCollectEnabled
- assembleDebug 通过

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 17:39:23 +08:00

2.9 KiB

XuqmGroup Android SDK 架构总览

整体架构

宿主 AppYwxMobileApp 等)
  └── 初始化方式A: ContentProvider 自动 / 方式B: Application.onCreate 手动)
        ↓
  sdk-core核心层
    ├── XuqmSDK.initialize() → 拉取 /api/sdk/config
    ├── XuqmSDK.setUserInfo() → 通知所有子模块(反射 / 接口回调)
    ├── ApiClientOkHttp 5 + Retrofit 3
    ├── TokenStoreEncryptedSharedPreferences
    ├── FileSDK上传 / 下载 / 打开文件)
    ├── ServiceEndpointRegistry各服务地址注册表
    └── bugCollectApiUrl / bugCollectEnabled从平台配置获取
        ↓ implementation dep
  子模块
    ├── sdk-update   → APK 更新 / 版本检查
    ├── sdk-push     → 厂商推送FCM/HMS/VIVO/OPPO/Honor/APNs
    ├── sdk-im       → IMWebSocket/STOMP 实时通信)
    ├── sdk-webview  → WebView + JSBridgeCompose 组件)
    ├── sdk-license  → 证书授权
    └── sdk-bugcollect → 日志 / Crash 捕获 / 漏斗分析(依赖 sdk-core

依赖关系

sdk-core (核心,无 SDK 内部依赖)
  ↑ implementation dep
  ├── sdk-update   (依赖 sdk-core
  ├── sdk-push     (依赖 sdk-core
  ├── sdk-im       (依赖 sdk-core
  ├── sdk-webview  (依赖 sdk-core
  ├── sdk-license  (依赖 sdk-core
  └── sdk-bugcollect依赖 sdk-core

用户状态分发

XuqmSDK.setUserInfo(info)
  ├── PushSDK:  检测厂商 → 注册 token → 上报服务端
  ├── ImSDK:    若 userSig 存在且 imEnabled → 自动登录 WebSocket
  ├── UpdateSDK: 更新 userId
  └── LicenseSDK: 更新用户上下文

XuqmSDK.setUserInfo(null)
  ├── PushSDK:  解绑 token
  ├── ImSDK:    断开 WebSocket
  └── 其他子模块: 清理用户状态

初始化流程

方式 AContentProvider 自动)

App 启动
  ↓
XuqmInitializerProvider.onCreate()
  ↓ 读取 assets/xuqm/config.xuqm
ConfigFileReader.read(context)
  ↓ 解析 appKey + serverUrl
XuqmSDK.initialize(context, appKey, serverUrl)
  ↓ HTTP GET
/api/sdk/config → 返回 { apiUrl, imWsUrl, fileServiceUrl, ... }

方式 B手动

Application.onCreate()
  ↓
XuqmSDK.initialize(context, appKey = "xxx")
  ↓ HTTP GET
/api/sdk/config → 解析平台配置
  ↓
各子模块就绪(等待 setUserInfo 触发具体功能)

技术栈

组件 版本
Kotlin 2.3.10
AGP 9.1.0
minSdk 24
compileSdk 36
Java 21
OkHttp 5.x
Retrofit 3.x
Coroutines 1.x

发布

发布到 Nexus Mavenhttps://nexus.xuqinmin.com/repository/android-hosted/
groupIdcom.xuqm

# 发布所有模块
./gradlew publish

# 发布单个模块
./gradlew :sdk-core:publish -PSDK_CORE_VERSION=1.0.0