4.0 KiB
4.0 KiB
安装与自动配置
环境要求
- React Native
0.76或更高版本 - Node.js 当前 LTS
- Android
minSdk 24或更高版本 - 使用原生模块时,需要标准 React Native 原生工程或完成 Prebuild 的 Expo 工程
SDK 当前以 Android 为完整验证平台。页面中明确标记为 Android 的能力不能据此推断为 iOS 已支持。
配置 npm 仓库
宿主从只读聚合仓库安装依赖:
# .npmrc
@xuqm:registry=https://nexus.xuqinmin.com/repository/npm/
请使用租户平台为当前应用推荐的精确版本。开发和测试阶段可能使用带 alpha、beta、
rc 或 SNAPSHOT 标识的预发布版本,不要自行改成无预发布标识的版本。
按需安装
只使用通用基础能力:
pnpm add @xuqm/rn-common axios \
@react-native-async-storage/async-storage
使用版本更新:
pnpm add @xuqm/rn-common @xuqm/rn-update \
@react-native-async-storage/async-storage
使用 WebView:
pnpm add @xuqm/rn-common @xuqm/rn-xwebview \
react-native-webview react-native-safe-area-context react-native-svg
其他模块同样按需安装:
pnpm add @xuqm/rn-bugcollect
pnpm add @xuqm/rn-im @nozbe/watermelondb
pnpm add @xuqm/rn-push
项目使用 npm 或 Yarn 时,可以使用等价安装命令;不要同时维护多份锁文件。
获取配置文件
使用扩展包时,在租户平台进入目标应用并下载配置文件。将下载文件原名放到:
src/assets/config/<平台生成的文件名>.xuqmconfig
约束:
- 目录中只能存在一个
.xuqmconfig。 - 不要重命名内容、手工编辑或提交到公共仓库。
- 公有化和私有化平台生成的配置不能混用。
- 重新生成配置后,下一次构建必须使用新文件。
- Common 独立模式不要放置配置文件。
建议加入忽略规则:
src/assets/config/*.xuqmconfig
配置 Metro
没有启用插件化时,只包装一次 Common:
// metro.config.js
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config')
const { withXuqmConfig } = require('@xuqm/rn-common/metro')
const config = mergeConfig(getDefaultConfig(__dirname), {
// 宿主自己的 Metro 配置
})
module.exports = withXuqmConfig(config)
启用 RN 插件化时使用 Update 提供的组合器,不要再叠加 withXuqmConfig:
const { getDefaultConfig } = require('@react-native/metro-config')
const { withXuqmModuleConfig } = require('@xuqm/rn-update/metro')
module.exports = withXuqmModuleConfig(getDefaultConfig(__dirname))
两种配置二选一。项目只能存在一个 Metro 配置出口。
Android 仓库
原生依赖从 XuqmGroup Android 聚合仓库读取:
// settings.gradle.kts
dependencyResolutionManagement {
repositories {
maven("https://nexus.xuqinmin.com/repository/android/")
google()
mavenCentral()
}
}
React Native 自动链接会处理已安装模块。只有 Update 插件化宿主需要按其页面说明应用 一次 Bundle 构建脚本。
启动前检查
import { XuqmSDK } from '@xuqm/rn-common'
const state = XuqmSDK.getInitializationState()
// idle | initializing | ready | degraded | failed
一般业务无需等待初始化。确实需要在首屏执行扩展操作时:
await XuqmSDK.awaitInitialization()
持续失败时按错误码展示非阻断提示,不要让 SDK 服务异常替代宿主首页。
Debug 策略
pnpm start和pnpm android使用标准 Metro 与 Fast Refresh。- Debug 默认不自动检查整包或插件更新。
- Debug 默认不自动上传 BugCollect。
- 需要验证服务时,通过对应模块的显式测试入口触发。
验收清单
- 工程中只有一份
.xuqmconfig。 - Metro 只使用一个 Xuqm 包装器。
- Common-only 工程不要求初始化。
- App 启动时没有手写 AppKey、平台地址或内部服务地址。
- 登录只调用一次公共会话入口。
- Release 构建使用租户平台当前有效配置。