XuqmGroup-RNSDK/CLAUDE.md
XuqmGroup 4c3019edab docs: 添加 CLAUDE.md + 各 package README + 架构总览 + 模块待开发说明
Agent 8 文档生成:
- CLAUDE.md 项目上下文
- 各 package README (common/update/push/im/xwebview/license/log)
- docs/架构总览.md
- docs/模块待开发说明.md
2026-06-16 12:14:52 +08:00

3.5 KiB

XuqmGroup-RNSDK — Claude 项目上下文

项目定位

XuqmGroup React Native SDK monorepo。为集成宿主 App如 YiwangxinApp4提供核心能力初始化、HTTP、设备信息、XWebView、OTA 更新、推送、IM、证书、日志追踪。

  • Git 远端:https://xuqinmin.com/xuqmGroup/XuqmGroup-RNSDK.git
  • Nexus npm 发布:https://nexus.xuqinmin.com/repository/npm-hosted/
  • 规范文档:XuqmGroup-Docs/design/06-sdk-cross-platform-spec.md

包结构

包名 目录 版本 说明
@xuqm/rn-common packages/common 0.4.0 核心层初始化、HTTP、设备、XWebView Bridge、API hooks
@xuqm/rn-update packages/update 0.4.0 OTA 热更新、APK 更新
@xuqm/rn-push packages/push 0.2.2 厂商推送(代码冻结,仅文档)
@xuqm/rn-im packages/im 0.2.2 IM 会话、消息(代码冻结,仅文档)
@xuqm/rn-xwebview packages/xwebview 0.2.2 WebView 容器 + JSBridge UI 组件
@xuqm/rn-license packages/license 0.3.0 证书授权(代码冻结,仅文档)
@xuqm/rn-log packages/log 0.1.0 日志、错误追踪、漏斗分析(新)

代码冻结模块push/im/license不修改代码,仅补充文档。

技术栈

  • React Native >= 0.76Bridgeless Mode,New Architecture
  • TypeScript 5.x strict — noImplicitAny: true,禁止 any
  • yarn workspaces monorepo
  • 发布到 Nexus npm 私有仓库

初始化(两种方式)

方式 A — 配置文件自动初始化(推荐)
宿主配置 Babel alias @xuqm/autoinit-config → 加密配置文件XUQM-CONFIG-V1 格式。SDK 自动读取并初始化,App 无需调用任何 init。

方式 B — 手动初始化

import { XuqmSDK } from '@xuqm/rn-common'

// 公有平台
await XuqmSDK.initialize({ appKey: 'xxx' })

// 私有化平台
await XuqmSDK.initialize({ appKey: 'xxx', platformUrl: 'https://xxx' })

// 等待异步平台配置拉取
await XuqmSDK.awaitInitialization()

两种平台互相独立,不允许自动降级。

用户信息

XuqmSDK.setUserInfo({ userId: 'u001', userSig: 'sig', name: '张三' })
XuqmSDK.setUserInfo(null)  // 登出,触发所有子 SDK 登出

子 SDK 自动订阅 setUserInfo 事件Push 自动注册/解绑 token,IM 自动登录/断开,Update 更新 userId。

日志 SDK@xuqm/rn-log

import { XLog } from '@xuqm/rn-log'

XLog.setLogLevel('debug')
XLog.setEnvironment('production')
XLog.startCapture()                   // 开启全局错误捕获
XLog.event('page_view', { page: 'home' })
XLog.captureError(new Error('xxx'))
XLog.defineFunnel('checkout', ['cart_view', 'checkout_start', 'payment_done'])

logApiUrl 由 SDK 在 init 后从 /api/sdk/config 自动获取,无需 App 传入。

关键约束

  • XuqmSDK.initialize() 签名不得更改
  • XuqmSDK.setUserInfo() 现有字段不得删除
  • 新增字段一律为可选,有合理默认值
  • 不允许静默降级autoInit 失败时 __DEV__ 模式 throw
  • rn-common 与 rn-log 解耦rn-common 可独立使用;rn-log peerDep rn-common

XWebView JSBridge 标准 Handler

docs/XWebView-JSBridge.md

常用命令

yarn workspace @xuqm/rn-common typecheck
yarn workspace @xuqm/rn-log typecheck
yarn workspace @xuqm/rn-update typecheck
yarn workspace @xuqm/rn-push typecheck
yarn workspace @xuqm/rn-im typecheck
yarn workspace @xuqm/rn-xwebview typecheck
yarn workspace @xuqm/rn-license typecheck