XuqmGroup
39f5c4ecf6
fix: sdk-log 编译修复 + sdk-core/sdk-webview 类型修正
...
- sdk-log: AGP 9.x mappingFileProvider 适配、LogQueue optNullableString
- sdk-core: 移除重复 getUserInfo() 函数
- sdk-webview: XuqmSDK.getUserInfo() → .userInfo 属性访问
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 13:46:01 +08:00
XuqmGroup
b25a27c9f6
docs(sdk): 添加 Android SDK 架构总览文档
...
- 新增架构总览文档,包含整体架构图和依赖关系
- 详细描述初始化流程(ContentProvider 自动和手动两种方式)
- 补充技术栈版本信息和发布说明
- 更新服务器端和Web端项目上下文文档
- 添加新模块 xuqm-log-service 的版本文件
- 在服务器端 POM 中注册 xuqm-log-service 模块
- 修复 Android SDK 字符串模板语法错误
- 修改服务器端 webhook 服务的 Redis 锁获取逻辑
2026-06-16 12:35:17 +08:00
XuqmGroup
4a18d06c63
docs: 添加 CLAUDE.md + 各 module README + sdk-webview JSBridge 补全
...
Agent 7 + Agent 8:
- CLAUDE.md 项目上下文
- 各 module README (core/im/push/update/webview/log)
- XWebViewStandardHandlers.kt 补全标准 JSBridge handler
2026-06-16 12:14:54 +08:00
XuqmGroup
fbafc8d802
feat: sdk-log v1.0.0 新建 + sdk-core logApiUrl 扩展 + sdk-update 进度回调
...
Agent 7 — sdk-core:
- SdkPlatformConfig 新增 logApiUrl、logEnabled 字段
- XuqmSDK 新增 logApiUrl/logEnabled 属性
- fetchAndApplyPlatformConfig 填充新字段
Agent 7 — sdk-log v1.0.0:
- XLog 主入口:event/captureError/warn/info/startCrashCapture
- LogQueue:SharedPreferences 存储 + 批量 OkHttp 上报
- CrashCapture:Thread.setDefaultUncaughtExceptionHandler
- Fingerprint:SHA-256 指纹去重
- FunnelTracker:漏斗分析
- Gradle Plugin:com.xuqm.log — assembleRelease 后自动上传 mapping
Agent 7 — sdk-update:
- downloadApk/downloadPlugin 新增 onProgress 进度回调
- checkAppUpdate 版本缓存(30分钟 TTL)
2026-06-16 12:10:58 +08:00
XuqmGroup
9a4e6c0091
ci: Jenkinsfile支持SNAPSHOT发布模式 + 新增sdk-log模块支持
...
- 新增SNAPSHOT参数:版本号追加-SNAPSHOT后缀,不修改gradle.properties,不commit
- 正式Release模式行为不变(升级版本并commit)
- Commit Version Bump阶段加when条件(SNAPSHOT时跳过)
- 模块列表新增MOD_LOG(sdk-log)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 11:13:27 +08:00
XuqmGroup
3f110526f0
docs: 添加CLAUDE.md项目上下文
...
涵盖:模块结构、核心API、向下兼容约束、sdk-log集成说明、YwxMobileApp验证说明
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 11:05:53 +08:00
XuqmGroup
3fe411738d
docs(sdk): 更新跨平台SDK设计规范至v1.1版本
...
- 更新版本号至v1.1,状态调整为Android已落地
- 添加私有化与公有平台完全独立的原则说明
- 增加Android配置文件路径规范
- 修改platformUrl为可选参数,默认使用内置公有平台地址
- 添加awaitInitialization和retryInitialization方法
- 调整API响应格式,统一返回data结构
- 优化各子SDK配置流程和错误处理机制
- 更新ImSDK登录逻辑,支持userSig为空时跳过连接
- 添加platformType和platformConfig属性
- 标记login/logout方法为已废弃,合并至setUserInfo
- 修改PushSDK方法签名,将Promise改为void
- 添加PushSDK.currentRegistration和detectVendor方法
- 更新Android Kotlin代码示例和完整示例
- 重构服务端接口要求章节,明确各子SDK独立配置接口
- 更新测试代码,替换login/logout为setUserInfo
- 调整UI组件中的推送设置调用方式
2026-06-15 15:51:58 +08:00
Jenkins CI
20d1654e4f
ci: bump module versions [sdk-update]
2026-06-11 20:26:25 +08:00
XuqmGroup
b2993038e5
fix(sdk-update): make UpdateInfo.apkHash nullable to prevent NPE on missing server field
...
Gson sets absent JSON fields to null even for Kotlin non-null types.
Calling copy() on an UpdateInfo where apkHash is null triggers a
runtime NPE. Declaring the field as String? and passing ?: "" at the
call site is the minimal safe fix.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 20:24:46 +08:00
Jenkins CI
18ba82e0db
ci: bump module versions [sdk-update]
2026-06-11 20:18:59 +08:00
XuqmGroup
a574ecdead
fix(update): surface API errors instead of silently returning null
...
- Log exception details (url/appKey/versionCode/userId) when checkUpdate fails
- Log warning + debug messages around awaitInitialization
- Helps diagnose SDK vs old private-server API incompatibilities
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 19:31:11 +08:00
Jenkins CI
e10deeb4ff
ci: bump module versions [sdk-core,sdk-update,sdk-webview]
2026-06-11 17:27:09 +08:00
XuqmGroup
4fa03f461e
fix(sdk-webview): add missing FileDownloadDestination import and fix curly-quote string literal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 16:44:26 +08:00
XuqmGroup
16c6668533
feat(sdk): 扩展用户信息功能并增强文件下载权限管理
...
- 扩展 setUserInfo 方法支持用户昵称和头像参数
- 重构 XuqmUserInfo 数据类使用 id 替代 userId 字段
- 更新 UpdateSDK 中用户ID解析逻辑适配新字段名
- 为 Android 11+ 设备添加 MANAGE_EXTERNAL_STORAGE 权限检查
- 实现下载暂停和恢复机制处理存储权限请求流程
- 添加权限说明对话框指导用户完成设置授权
- 集成生命周期观察者自动续传获得权限后的下载任务
2026-06-11 16:41:07 +08:00
XuqmGroup
db8a2a6820
feat(sdk-core): 新增 XuqmSDK.setUserInfo,替换 UpdateSDK.setUserId
...
- 新增 XuqmUserInfo 数据类和 XuqmSDK.setUserInfo(userId) 统一接口
- 供 update 灰度发布、push 精准推送等服务共用,调用一次即可
- UpdateSDK 移除 setUserId,resolveUserId 改为优先读取
XuqmSDK.userInfo,其次 currentLoginSession
- 说明:IM socket 连接需独立调用 XuqmSDK.login,setUserInfo 不影响 IM 鉴权
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:12:40 +08:00
Jenkins CI
53e3cc2d6a
ci: bump module versions [sdk-core,sdk-im,sdk-push,sdk-update,sdk-webview,sdk-license]
2026-06-11 13:34:35 +08:00
XuqmGroup
0ce157f71e
feat(system): 添加系统更新管理和版本控制功能
...
- 新增私有化部署系统更新API接口(检查更新、选择性更新、重置等)
- 实现版本管理系统,支持平台版本和服务版本对比检查
- 集成Jenkinsfile自动化构建流程,支持多种版本策略
- 添加Docker镜像版本标签管理和自动注入功能
- 实现选择性更新机制,可指定服务进行增量更新
- 完善版本日志记录和更新历史追踪功能
2026-06-11 13:30:41 +08:00
XuqmGroup
01bdceec44
feat(update): 添加外部用户ID设置功能支持灰度发布
...
- 新增 externalUserId 属性用于存储外部设置的用户ID
- 添加 setUserId 方法允许外部设置用户ID用于灰度发布筛选
- 实现 resolveUserId 方法确定当前生效的用户ID优先级
- 更新 checkAppUpdate 方法使用 resolveUserId 替代直接获取会话用户ID
- 修改文档说明用户ID优先级:externalUserId > XuqmSDK.currentLoginSession.userId
- 适配应用自有登录体系场景下的灰度发布需求
2026-06-11 12:42:59 +08:00
XuqmGroup
7caf7ed32d
feat(update): 添加 API Key 管理和 WebSocket 实时通知功能
...
- 新增 API Key 管理功能,支持外部工具认证调用平台 API
- 实现 WebSocket 实时通知,版本发布时推送轻量通知给客户端
- 添加 APK 文件哈希校验,支持已下载检测和直接安装
- 支持外部 APK 上传使用 API Key 认证
- 优化私有化部署自动注入 nginx WebSocket 代理配置
- 扩展 SDK 功能包括已下载检测、直接安装和实时通知监听
2026-06-11 12:25:30 +08:00
Jenkins CI
e5a78b9a52
ci: bump module versions [sdk-core]
2026-06-10 20:23:34 +08:00
XuqmGroup
a533eda61a
Merge remote-tracking branch 'origin/main'
2026-06-10 20:22:37 +08:00
XuqmGroup
510bb8439b
feat(file): 添加文件下载权限管理和回退机制
...
- 实现 PublicDownloads 目录失败时自动回退到 Sandbox 目录
- 添加 Android 11+ 所有文件访问权限检查功能
- 提供跳转到文件访问权限设置页面的 Intent 方法
- 重构目录解析逻辑为独立的 resolveBaseDir 函数
- 增强文件下载的异常处理和日志记录
- 修复空白文件名处理逻辑,确保默认文件名为 download.bin
2026-06-10 20:22:32 +08:00
Jenkins CI
b31917c61c
ci: bump module versions [sdk-core,sdk-webview]
2026-06-10 20:15:04 +08:00
XuqmGroup
2bd497ead4
debug(file): 添加文件下载功能的调试日志
...
- 在 FileSDK 的 saveBlobDownload 方法中添加解码、目录创建和文件写入的日志记录
- 在 XWebViewView 的 readBlobAndPost 函数中添加 JavaScript 端的数据读取和错误处理日志
- 添加锚点拦截和消息传递过程中的日志记录
- 在 blobdownload 处理流程中添加成功和失败的状态日志
- 增加文件保存到相册操作的结果日志记录
2026-06-10 20:13:45 +08:00
Jenkins CI
d8c0abe510
ci: bump module versions [sdk-core,sdk-webview]
2026-06-10 12:41:47 +08:00
XuqmGroup
ff13b54d9e
feat(file): 添加图片保存到系统相册功能
...
- 在 FileSDK 中新增 saveImageToGallery 方法用于将图片文件保存到系统照片库
- 支持 Android Q 及以上版本使用 MediaStore API 安全存储图片
- 对于旧版 Android 系统使用兼容方案将图片复制到 Pictures 目录
- 在 WebView 组件下载完成后自动将图片文件保存到相册
- 仅当图片未被保存到相册时才显示文件打开选项以避免重复操作
2026-06-10 12:39:51 +08:00
Jenkins CI
1e7193add3
ci: bump module versions [sdk-webview]
2026-06-08 11:22:13 +08:00
XuqmGroup
19752329e7
Merge remote-tracking branch 'origin/main'
2026-06-08 11:20:23 +08:00
XuqmGroup
0efb1b6f0f
refactor(webview): 将 WebView 活动重构为 Compose 组件
...
- 移除传统 View 系统实现,采用 Jetpack Compose 架构
- 创建 XWebViewScreen 组件替代原有的 Activity 布局
- 集成 Material Design 3 主题支持
- 保留 WebView 的核心功能和配置选项
- 添加导航状态回调接口支持
- 简化窗口边距和系统栏适配逻辑
- 优化组件生命周期管理和资源释放
2026-06-08 11:20:17 +08:00
Jenkins CI
813e0a59ad
ci: bump module versions [sdk-core]
2026-06-05 16:29:33 +08:00
XuqmGroup
2a9b1c0f36
feat(file): 添加文件下载完成后打开文件的功能
...
- 导入 PendingIntent 相关类
- 在下载完成通知中添加打开文件的意图
- 实现构建打开文件 PendingIntent 的方法
- 使用 FileProvider 安全分享文件 URI
- 根据文件扩展名获取正确的 MIME 类型
- 创建带读取权限的查看意图并设置标记兼容性
2026-06-05 16:28:34 +08:00
Jenkins CI
e9db4b7493
ci: bump module versions [sdk-core]
2026-06-05 16:23:16 +08:00
XuqmGroup
2449c2b920
fix(file): 修复文件下载完成后通知显示问题
...
- 使用capturedNotifId替换notifId变量
- 先取消原有通知再创建新通知
- 重新构建通知内容包括标题和完成状态
- 添加自动取消功能
- 优化通知图标和文本显示逻辑
2026-06-05 16:22:12 +08:00
Jenkins CI
d652d4c047
ci: bump module versions [sdk-core,sdk-webview]
2026-06-05 16:17:01 +08:00
XuqmGroup
6514c27eaa
feat(webview): 优化文件下载和图片选择功能
...
- 下载文件时在公共下载目录下创建应用名称子目录
- 实现支持多MIME类型的文件选择器合约
- 添加相机拍照功能并在图片选择时显示选项对话框
- 为Android 13+系统添加下载通知权限请求
- 重构文件选择逻辑以支持更灵活的MIME类型处理
2026-06-05 16:15:50 +08:00
Jenkins CI
beb6b88029
ci: bump module versions [sdk-core,sdk-webview]
2026-06-05 15:55:11 +08:00
XuqmGroup
d19b0ae8fc
fix(webview): 解决文件选择器MIME类型解析和通知ID空指针问题
...
- 修复了文件下载通知中notifId为空时的崩溃问题
- 为XWebViewJsBridge添加了额外的回调参数以支持消息处理
- 重构了resolvePickerMimeType函数的文档注释并优化了MIME类型解析逻辑
- 将文件选择器的MIME类型解析逻辑统一到resolvePickerMimeType函数中
- 改进了HTML accept类型的转换机制,更好地支持混合和未知MIME类型
2026-06-05 15:53:51 +08:00
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