# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 腾讯特效 SDK 封装模块 这是一个对腾讯云特效 SDK (TCMediaX) 的封装模块,为应用提供音视频特效能力。 ### 模块架构 - **TCEffectManager**: 单例管理器,负责 SDK 初始化和许可证管理 - **ITCEffectConfig**: 配置接口,定义许可证 URL、密钥等配置信息 - **TCEffectStatEvent**: 统计事件,用于上报初始化状态和错误信息 ### 核心组件 #### TCEffectManager - 管理腾讯特效 SDK 的生命周期 - 处理许可证验证和重试逻辑(最多重试3次,失败后30秒后再重试) - 自动清理过期日志文件(保留3天) - 支持多个许可证 URL 轮询 #### 许可证管理 - 支持多个许可证 URL 配置 - 自动重试机制:失败后立即重试最多3次,之后30秒间隔重试 - URL 域名替换功能(通过 `replaceUrlHost` 方法) - 许可证状态检查:`isTcEffectEnable()` ### 依赖关系 **外部依赖:** - `libs.tencent.effect`: 腾讯特效 SDK - `libs.androidx.exifinterface`: 图片 EXIF 信息处理 **内部框架依赖:** - `frame:base`: 基础框架(日志系统) - `frame:coroutine`: 协程工具(用于后台任务) - `frame:util`: 工具类(应用上下文、UI 线程切换) - `frame:statistics`: 统计框架(事件上报) - `frame:zero`: 零配置工具 ### 初始化方式 ```kotlin // 实现配置接口 val config = object : ITCEffectConfig { override val licenceUrls: List = listOf("url1", "url2") override val oldLicence: String = "old_license_key" override val licence: String = "license_key" override val logEnable: Boolean = true override fun replaceUrlHost(oldUrl: String): String = oldUrl } // 初始化管理器 TCEffectManager.init(config) // 检查是否启用 if (TCEffectManager.isTcEffectEnable()) { // 使用特效功能 } ```