提交图

109 次代码提交

作者 SHA1 备注 提交日期
XuqmGroup
0ce2f21307 feat(sdk): 新增文件上传下载功能并完善WebView组件
- 在Android SDK中新增FileSDK模块,提供统一的文件上传、下载、打开接口
- 实现Android端文件下载到沙盒目录或公共Downloads目录,并支持通知栏进度显示
- 完善Android WebView组件,增加文件选择、拍照、下载拦截、H5双向通信能力
- 在iOS SDK中新增XuqmFileSDK模块,提供文件上传下载功能
- 实现iOS端WebView组件的文件下载拦截和原生文件选择器集成
- 更新文档说明Android和iOS SDK的文件操作API使用方法
- 重构iOS SDK项目结构,按功能拆分为多个独立模块便于集成
- 添加文件下载进度通知和完成后的文件打开功能
2026-06-05 15:48:08 +08:00
Jenkins CI
a98dd8a708 ci: bump module versions [sdk-update] 2026-06-04 13:37:27 +08:00
XuqmGroup
784554ab4c refactor(sdk-update): 重构版本更新检测功能
- 移除 userIdOverride 参数,统一通过 XuqmSDK.login() 会话获取用户ID
- 新增 bypassIgnore 参数控制是否绕过已忽略版本
- 静默检查模式下已忽略版本不再弹窗,主动检查模式始终显示更新对话框
- 更新文档说明破坏性变更和新的使用方式
- 移除 requiresLogin 字段相关实现
2026-06-04 13:35:59 +08:00
Jenkins CI
ea85dd6587 ci: bump module versions [sdk-core,sdk-update] 2026-06-04 13:15:16 +08:00
XuqmGroup
d12c575dd6 feat(update): 添加更新检查功能增强和配置文件读取日志
- 新增 UpdateInfo.requiresLogin 字段支持登录后更新检测
- 添加 UpdateSDK.ignoreVersion 和 clearIgnoredVersions 方法实现版本忽略功能
- 扩展 checkAppUpdate 方法支持 userIdOverride 参数用于 H5 登录后重检
- 在 ConfigFileReader 中添加日志输出便于调试配置文件读取问题
- 优化 XuqmInitializerProvider 自动初始化错误处理和日志记录
- 实现非强制更新版本忽略机制,支持下次检测时不弹窗提示
- 添加 15 秒超时等待 SDK 初始化完成的异步处理逻辑
2026-06-04 13:14:02 +08:00
Jenkins CI
1a6a91e6fe ci: bump module versions [sdk-license] 2026-06-02 17:27:33 +08:00
Jenkins CI
a4cfab53e3 ci: bump module versions [sdk-core,sdk-update] 2026-06-02 17:18:29 +08:00
XuqmGroup
5fe859e975 feat(sdk): 将许可证文件替换为初始化配置文件
- 将 license.xuqm 文件替换为 config.xuqm 配置文件
- 实现 ConfigFileReader 来读取和解密配置文件
- 添加 ConfigFileCrypto 用于配置文件加密解密
- 更新 autoInitialize 方法以从配置文件自动初始化
- 移除对 sdk-license 的反射依赖
- 在 HarmonySDK 中实现配置端点动态配置
- 更新 iOS SDK 中的配置文件读取逻辑
- 统一各平台配置文件格式和处理方式
2026-06-02 17:15:49 +08:00
XuqmGroup
3aee02a2cd Merge remote-tracking branch 'origin/main' 2026-05-29 17:14:25 +08:00
XuqmGroup
90ef764695 refactor(sdk): 优化 SDK 初始化逻辑和错误处理
- 移除初始化失败原因注释
- 简化授权文件检查逻辑
- 统一错误消息为英文格式
- 优化授权文件路径验证流程
- 改进包名匹配错误提示信息
2026-05-29 17:14:20 +08:00
Jenkins CI
5e0a498588 ci: bump module versions [sdk-update] 2026-05-29 17:08:28 +08:00
XuqmGroup
4d5111dddc Merge remote-tracking branch 'origin/main' 2026-05-29 17:07:18 +08:00
XuqmGroup
2404809649 refactor(sdk): 移除初始化失败日志记录并优化错误处理
- 移除了 XuqmInitializerProvider 中的异常日志记录逻辑
- 将失败原因存储至 XuqmSDK.getInitError() 供应用决定展示方式
- 优化了授权文件不存在时的错误信息提示
- 简化了包名不匹配的错误处理流程
- 移除了调试日志输出以提升性能
- 改进了错误消息的中文本地化显示
2026-05-29 17:07:12 +08:00
Jenkins CI
3977d6ac16 ci: bump module versions [sdk-update] 2026-05-29 17:02:02 +08:00
XuqmGroup
42b644ac11 fix(sdk): 完善初始化异常处理和日志记录
- 在 XuqmInitializerProvider 中添加 autoInitialize 失败时的错误日志记录
- 在 autoInitialize 方法中添加许可证文件缺失时的详细错误日志
- 添加包名匹配失败时的错误日志记录
- 添加许可证读取成功时的调试日志
- 新增 listAssets 辅助方法用于列出资产目录文件
2026-05-29 17:00:04 +08:00
XuqmGroup
e958b2a42c feat(sdk-webview): add debugEnabled flag for Chrome DevTools H5 debugging
Set debugEnabled = true in XWebViewConfig to enable WebView remote debugging
via chrome://inspect. Calls WebView.setWebContentsDebuggingEnabled() before
WebView instantiation in both XWebViewView and XWebViewActivity. Bump to 1.0.8.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 09:58:21 +08:00
XuqmGroup
6da62dc600 feat(sdk-webview): make JS bridge name configurable; default to XWebViewBridge
- Add `jsBridgeName` field to `XWebViewConfig` (default: "XWebViewBridge")
- Make `DIALOG_OVERRIDE_JS` a function parameterised by bridge name
- Use `config.jsBridgeName` in both `XWebViewView` and `XWebViewActivity`
- Bump sdk-webview to 1.0.7

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 09:50:46 +08:00
Jenkins CI
79c43b83af ci: bump module versions [sdk-core,sdk-update,sdk-license] 2026-05-23 04:26:00 +08:00
XuqmGroup
60a7064eb2 ci: support independent versioning per SDK module
- Add per-module version properties in gradle.properties
  (SDK_CORE_VERSION, SDK_LICENSE_VERSION, etc.)
- Jenkinsfile bumps only selected modules independently
- Print published module versions in post-build success step

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 04:23:07 +08:00
XuqmGroup
db3ec3d377 fix: auto-init XuqmSDK via ContentProvider; remove packageName from update check; fix Jenkinsfile
- sdk-core: add XuqmInitializerProvider for auto-init at app startup
- sdk-core: register provider in AndroidManifest.xml
- sdk-license: remove duplicate XuqmSDK init from LicenseInitializerProvider
- sdk-update: awaitInitialization() now uses requireInit() directly (no 30s polling)
- Jenkinsfile: replace Windows external commands (findstr/powershell) with Groovy readFile/writeFile

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 04:11:32 +08:00
Jenkins CI
87ef2bf104 ci: bump PUBLISH_VERSION to 1.0.5 2026-05-23 02:05:50 +08:00
XuqmGroup
68fc6d9edd chore(ci): remove debug logging from version bump
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:04:11 +08:00
XuqmGroup
b3114ba522 fix(ci): push detached HEAD to main, sync version to 1.0.4
- Use `git push origin HEAD:main` instead of `git push origin main`
  because Jenkins checks out a specific commit (detached HEAD)
- Sync gradle.properties to 1.0.4 (already published to Nexus)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:04:01 +08:00
XuqmGroup
e1521ea7ec debug(ci): use cmd findstr to read version, add debug output
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:39 +08:00
XuqmGroup
2c8814c5e6 debug(ci): add debug logging for version bump, use if/else instead of switch
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:26 +08:00
XuqmGroup
883a623505 fix(ci): explicit ASCII encoding for version read, git checkout main
- Force ASCII output encoding in PowerShell to avoid hidden chars
- Add git checkout main before commit to avoid detached HEAD
- Simplify version reading command

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:14 +08:00
XuqmGroup
24b7abb361 fix(ci): use Groovy readProperties for version, add git pull before push
- Replace PowerShell-based version reading with Groovy's readProperties
  and readFile/writeFile to avoid encoding issues causing "1.0.3→1.0.3"
- Add git pull --rebase before push to handle non-fast-forward rejections

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:57:14 +08:00
XuqmGroup
c60bc15a93 fix(ci): fix version bump and git push
- Strip \r\n from PowerShell output to fix version parsing
  (was causing "1.0.3 → 1.0.3" instead of "1.0.3 → 1.0.4")
- Remove gitlab-credentials dependency, use git remote URL
  which already has the access token embedded

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:54:28 +08:00
XuqmGroup
cff30338b2 chore: sync PUBLISH_VERSION to 1.0.3 (matches Nexus)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:51:41 +08:00
XuqmGroup
086900cd26 fix(ci): commit version bump back to git after publish
The Jenkinsfile bumped PUBLISH_VERSION during the run but never
committed the change, causing every run to start from the same
base version. Now commits gradle.properties back to main after
successful Nexus publish.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:51:00 +08:00
XuqmGroup
4fcaba3338 ci: remove unit tests, simplify publish stages
Remove RUN_TESTS parameter and Unit Tests stage.
Publish SPM and CocoaPods are now the only publish paths.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:42:32 +08:00
XuqmGroup
c103178d77 fix(ci): 模块复选框默认不勾选,需手动选择 2026-05-23 01:36:40 +08:00
XuqmGroup
0dd1cb297c refactor(ci): 移除自定义版本号功能,仅保留自动升级 2026-05-23 01:34:53 +08:00
XuqmGroup
2247c1146e fix(ci): 修复凭据ID、Windows兼容性和post块上下文 2026-05-23 01:30:53 +08:00
XuqmGroup
141f5e3e30 feat(ci): 模块选择改为复选框,每个模块独立勾选 2026-05-23 01:28:41 +08:00
XuqmGroup
0bce3d4b0b fix(ci): 修复 choice 参数语法,使用 choices 数组 2026-05-23 01:25:10 +08:00
XuqmGroup
998e5384ff chore(ci): 更新 Jenkins 配置以支持多模块版本管理
- 为 Android、Flutter、iOS 和 RN SDK 的 Jenkinsfile 添加模块化版本控制
- 引入版本升级策略选择(major/minor/patch)和自定义版本号功能
- 实现多模块独立版本管理和选择性构建发布
- 更新 iOS SDK Package.swift 以支持独立模块化库
- 修改 iOS SDK podspec 文件以适应新的标签命名约定
- 优化 Jenkins 构建流程以支持按需选择特定模块进行构建和发布
- 修复 iOS 测试中的可选类型转换问题以提高代码健壮性
2026-05-23 01:20:57 +08:00
XuqmGroup
eb27e8f112 feat(sdk-license): client-side package name validation
Package name matching is now done entirely in the SDK before any network call:
- License file flow (tryAutoInitialize): compare licenseFile.packageName with
  context.packageName; refuse initialization if mismatch
- appKey-only flow (checkLicense): fetch GET /api/license/app-info and compare
  configured package names locally before register/verify
- LicenseConfig: add fromLicenseFile flag to distinguish the two flows
- LicenseModels: add AppInfoResponse with matchesPackageName helper
- LicenseApiService: add getAppInfo() endpoint

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 00:30:00 +08:00
XuqmGroup
63da94c670 sdk: auto-init from license file, cross-module init waiting
- XuqmSDK: autoInitialize() validates license package name; afterInit() callback
- LicenseSDK: await XuqmSDK init via reflection with timeout before operations
- UpdateSDK: await XuqmSDK init before checkAppUpdate
- LicenseFileReader: return Triple(appKey, serverUrl, packageName)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 17:56:42 +08:00
XuqmGroup
7b18d279bf build: 各 SDK 模块独立版本,publish.gradle 改用 project.version
每个模块通过 SDK_<NAME>_VERSION 属性指定自己的版本,
未设置时回退到全局 PUBLISH_VERSION,保持向后兼容。

发布单个模块示例:
  ./gradlew :sdk-license:publish -PSDK_LICENSE_VERSION=1.0.3 -PPUBLISH_VERSION=1.0.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:48:10 +08:00
XuqmGroup
9fd358deef fix(sdk-license): HTTP 错误不回退缓存,防止已吊销设备认证通过
verify 返回 false 后 SDK 会尝试 register,服务端对已吊销设备返回 403。
原 catch 块将 HttpException 与网络错误同等处理,导致 cachedStatus=="ok"
时依然返回 Success。修复:HttpException(4xx/5xx)直接写入 DENIED,
只有真正的网络错误(IOException/超时)才允许离线缓存回退。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:41:47 +08:00
XuqmGroup
63797ea1cb feat(sdk-license): LicenseInitializerProvider 自动完成全量 SDK 初始化
ContentProvider 在 Application.onCreate() 之前运行,读取
assets/xuqm/license.xuqm 后直接调用 XuqmSDK.initialize()。
app 端只需放入 license 文件,无需任何初始化代码。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:31:52 +08:00
XuqmGroup
84eeecb4cc feat(sdk): 新增 autoInitialize(),放入 license 文件即可完成全量 SDK 初始化
- LicenseFile 新增 serverUrl 字段(私有化部署时由后端写入)
- LicenseSDK 新增 readLicenseFileData() 供 sdk-core 反射调用
- XuqmSDK.autoInitialize(context) 从 assets/xuqm/license.xuqm 读取
  appKey 和 serverUrl,一行完成公/私有化 SDK 初始化

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:25:22 +08:00
XuqmGroup
02407dfe16 chore: bump PUBLISH_VERSION to 1.0.1
Start new versioning scheme at 1.0.1 for all SDK modules.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:55:05 +08:00
XuqmGroup
d7fe714e69 feat(sdk-core): XuqmSDK.initialize() 新增 serverUrl 参数支持私有化部署
传入 serverUrl 后 SDK 自动完成:
- 配置所有服务端点(controlBaseUrl/fileBaseUrl/imApiBaseUrl/imWsUrl/pushBaseUrl/updateBaseUrl)
- 通过反射调用 LicenseSDK.initialize() 注入私有化 appKey 和 baseUrl
- wss/ws scheme 自动根据 https/http 推导

App 侧只需:
  XuqmSDK.initialize(context, appKey, serverUrl = "https://your-server.com", logLevel = WARN)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:45:15 +08:00
XuqmGroup
5481ffa57a docs(deploy): 移除 Jenkins 配置和 Android Demo 计划文档
- 删除 jenkins-setup.md 完整的 Jenkins 服务配置指南
- 更新 README.md 部署文档标题为公有化部署文档
- 添加私有化部署说明章节和相关设计文档链接
- 从 REST API 设计文档中移除 demo-service 相关描述
- 更新推送架构图中业务服务端描述为客户端服务器
- 删除 android-demo-plan.md Android Demo 开发计划文档
- 删除 multi-platform-im-roadmap.md 多平台 IM 路线图文档
- 删除 java-im-server-sdk-plan.md Java IM 服务端 SDK 计划文档
2026-05-18 17:57:04 +08:00
XuqmGroup
dc0cd7b2b1 feat(webview): 添加外部链接处理功能
- 引入 Context 和 Intent 导入以支持外部链接打开
- 添加 Locale 导入用于 URL 方案小写转换
- 实现 shouldLoadInWebView 函数检查 URL 方案是否允许在 WebView 中加载
- 实现 openExternalScheme 函数用于启动外部应用处理非 HTTP 链接
- 在 shouldOverrideUrlLoading 中集成新的 URL 处理逻辑
- 添加对 http、https、about、data、blob、javascript 方案的支持判断
2026-05-18 13:55:02 +08:00
XuqmGroup
aa20a790a1 一大波改动 2026-05-16 12:48:17 +08:00
XuqmGroup
e81bf89697 Use appKey in license SDK requests 2026-05-15 21:42:27 +08:00
XuqmGroup
2577d6e3e2 Add license check user info 2026-05-15 21:29:58 +08:00