Преглед на файлове

chore: remove markdown docs

wangmeng преди 1 месец
родител
ревизия
ab56009677

+ 0 - 317
base-common/src/main/ets/common/network/统一解决方案说明.md

@@ -1,317 +0,0 @@
-# HarmonyOS 网络和 UI 统一解决方案
-
-## 📋 问题说明
-
-### 1. API 服务需要手动实现
-
-**问题:** HarmonyOS 没有像 Retrofit 那样的注解处理器,无法自动生成 API 接口实现。
-
-**解决方案:** 创建 `ApiBaseService` 基类,统一封装所有 API 请求逻辑。
-
-### 2. 网络请求错误处理
-
-**问题:** 不同 API 的响应格式可能不同,错误处理逻辑重复。
-
-**解决方案:** 创建 `ApiResponseParser` 统一响应解析器,自动处理 `ApiCommonResult<T>` 格式。
-
-### 3. BasePage 继承问题
-
-**问题:** HarmonyOS 的 `@Component` 装饰器不支持类继承。
-
-**解决方案:** 使用 `PageHelper` 工具类,通过组合方式提供页面功能。
-
----
-
-## 🔧 统一解决方案
-
-### 1. API 服务统一实现方案
-
-#### 方案:ApiBaseService 基类
-
-**优点:**
-- ✅ 统一处理 URL 构建、请求头、错误处理
-- ✅ 所有 API 服务继承此类,代码简洁
-- ✅ 自动处理 Token、错误码、日志
-
-**使用方式:**
-
-```typescript
-// 1. 定义 API 服务类,继承 ApiBaseService
-export class AuthApi extends ApiBaseService {
-  // 2. 实现 API 方法,直接调用父类的 get/post/put/delete
-  async login(request: LoginRequest): Promise<Result<LoginResponse>> {
-    return await this.post<LoginResponse>('member/auth/login', request, '登录失败');
-  }
-  
-  async getUserInfo(userId: string): Promise<Result<UserInfo>> {
-    return await this.get<UserInfo>('user/info', { userId }, '获取用户信息失败');
-  }
-}
-
-// 3. 使用 API 服务
-const authApi = new AuthApi();
-const result = await authApi.login(new LoginRequest('13800138000', 'password'));
-if (result.isSuccess) {
-  const response = result.getOrThrow();
-}
-```
-
-**核心特性:**
-- ✅ 自动构建完整 URL(baseUrl + path)
-- ✅ 自动添加请求头(Content-Type、Authorization Token)
-- ✅ 自动解析响应(ApiCommonResult<T> → Result<T>)
-- ✅ 统一错误处理(业务错误码、网络异常)
-- ✅ 自动日志记录
-
----
-
-### 2. 网络请求错误处理统一方案
-
-#### 方案:ApiResponseParser 统一解析器
-
-**优点:**
-- ✅ 统一处理 `ApiCommonResult<T>` 格式
-- ✅ 自动检查业务状态码(code === 0)
-- ✅ 统一错误消息处理
-- ✅ 支持可空数据
-
-**响应格式:**
-
-```typescript
-interface ApiCommonResult<T> {
-  code: number;    // 业务状态码,0 表示成功
-  data: T;         // 业务数据
-  msg: string;     // 错误消息(失败时)
-}
-```
-
-**使用方式:**
-
-```typescript
-// ApiBaseService 内部自动使用 ApiResponseParser
-// 开发者无需手动调用
-
-// 如果需要手动解析(不推荐):
-const response = await networkManager.post<ApiCommonResult<UserInfo>>(url, data);
-const result = ApiResponseParser.handleResponse(response, "获取用户信息失败");
-```
-
-**核心特性:**
-- ✅ 自动检查 `code === 0`(成功状态码可配置)
-- ✅ 自动提取 `data` 字段
-- ✅ 统一错误消息格式(`msg` 或自定义消息)
-- ✅ 支持可空数据(`handleNullableResponse`)
-
----
-
-### 3. BasePage 统一解决方案
-
-#### 方案:PageHelper 工具类(组合模式)
-
-**优点:**
-- ✅ 兼容 HarmonyOS `@Component` 装饰器
-- ✅ 不依赖继承,使用组合方式
-- ✅ 提供统一的页面状态管理
-- ✅ 提供统一的通用方法
-
-**使用方式:**
-
-```typescript
-import { PageHelper } from '@xdz/base-common';
-
-@Component
-export struct MyPage {
-  // 1. 定义页面状态(必须实现 PageHelper.PageState 接口)
-  @State loading: boolean = false;
-  @State error: string | null = null;
-  
-  build() {
-    Column() {
-      if (this.loading) {
-        LoadingProgress()
-      } else if (this.error) {
-        Text(this.error)
-      } else {
-        // 页面内容
-        Text('Hello World')
-      }
-    }
-    .onPageShow(() => {
-      PageHelper.onPageShow(this);
-    })
-    .onPageHide(() => {
-      PageHelper.onPageHide(this);
-    })
-  }
-  
-  // 2. 使用 PageHelper 的方法
-  async loadData() {
-    PageHelper.showLoading(this);
-    try {
-      // 加载数据
-      const result = await api.getData();
-      if (result.isSuccess) {
-        // 处理成功
-        PageHelper.hideLoading(this);
-      } else {
-        PageHelper.showError(this, result.exceptionOrNull()?.message || '加载失败');
-      }
-    } catch (error) {
-      PageHelper.showError(this, (error as Error).message);
-    }
-  }
-}
-```
-
-**核心特性:**
-- ✅ `showLoading()` - 显示加载状态
-- ✅ `hideLoading()` - 隐藏加载状态
-- ✅ `showError()` - 显示错误信息(自动显示 Toast)
-- ✅ `clearError()` - 清除错误信息
-- ✅ `showSuccess()` - 显示成功消息
-- ✅ `showToast()` - 显示提示消息
-- ✅ `onPageShow()` - 页面显示生命周期
-- ✅ `onPageHide()` - 页面隐藏生命周期
-- ✅ `onBackPress()` - 页面返回拦截
-
----
-
-## 📝 完整示例
-
-### API 服务示例
-
-```typescript
-// UserApi.ets
-import { ApiBaseService } from '@xdz/base-common';
-import { Result } from '@xdz/base-common';
-
-export class UserInfo {
-  id: string;
-  name: string;
-  avatar?: string;
-}
-
-export class UserApi extends ApiBaseService {
-  // GET 请求示例
-  async getUserInfo(userId: string): Promise<Result<UserInfo>> {
-    return await this.get<UserInfo>(
-      'user/info',
-      { userId },
-      '获取用户信息失败'
-    );
-  }
-  
-  // POST 请求示例
-  async updateUserInfo(userInfo: UserInfo): Promise<Result<void>> {
-    return await this.post<void>(
-      'user/update',
-      userInfo,
-      '更新用户信息失败'
-    );
-  }
-  
-  // PUT 请求示例
-  async updateAvatar(avatar: string): Promise<Result<string>> {
-    return await this.put<string>(
-      'user/avatar',
-      { avatar },
-      '更新头像失败'
-    );
-  }
-  
-  // DELETE 请求示例
-  async deleteUser(userId: string): Promise<Result<void>> {
-    return await this.delete<void>(
-      'user/delete',
-      { userId },
-      '删除用户失败'
-    );
-  }
-}
-```
-
-### 页面使用示例
-
-```typescript
-// UserProfilePage.ets
-import { PageHelper } from '@xdz/base-common';
-import { UserApi, UserInfo } from '../api/UserApi';
-
-@Component
-export struct UserProfilePage {
-  @State loading: boolean = false;
-  @State error: string | null = null;
-  @State userInfo: UserInfo | null = null;
-  
-  private userApi: UserApi = new UserApi();
-  
-  build() {
-    Column() {
-      if (this.loading) {
-        LoadingProgress()
-          .width('100%')
-          .height('100%')
-      } else if (this.error) {
-        Text(this.error)
-          .fontSize(16)
-          .fontColor(Color.Red)
-      } else if (this.userInfo) {
-        Text(this.userInfo.name)
-          .fontSize(20)
-      }
-    }
-    .width('100%')
-    .height('100%')
-    .onPageShow(() => {
-      this.loadUserInfo();
-    })
-  }
-  
-  async loadUserInfo() {
-    PageHelper.showLoading(this);
-    
-    const result = await this.userApi.getUserInfo('123');
-    
-    if (result.isSuccess) {
-      this.userInfo = result.getOrThrow();
-      PageHelper.hideLoading(this);
-    } else {
-      const error = result.exceptionOrNull();
-      PageHelper.showError(this, error?.message || '加载失败');
-    }
-  }
-}
-```
-
----
-
-## ✅ 总结
-
-### 统一解决方案的优势
-
-1. **API 服务:**
-   - ✅ 所有 API 服务继承 `ApiBaseService`
-   - ✅ 自动处理 URL、请求头、错误处理
-   - ✅ 代码简洁,无需重复逻辑
-
-2. **错误处理:**
-   - ✅ `ApiResponseParser` 统一解析响应
-   - ✅ 自动处理业务错误码
-   - ✅ 统一错误消息格式
-
-3. **页面基类:**
-   - ✅ `PageHelper` 工具类,兼容 HarmonyOS
-   - ✅ 组合模式,不依赖继承
-   - ✅ 统一的页面状态管理
-
-### 使用建议
-
-1. **所有 API 服务** 继承 `ApiBaseService`
-2. **所有页面** 使用 `PageHelper` 管理状态
-3. **响应解析** 由 `ApiBaseService` 自动处理,无需手动调用 `ApiResponseParser`
-
----
-
-**文档版本:** v1.0  
-**创建时间:** 2024-12
-

+ 0 - 202
base-common/src/main/ets/common/缺失模块清单.md

@@ -1,202 +0,0 @@
-# base-common 模块缺失清单
-
-## 📊 模块对比
-
-### ✅ 已实现的模块
-
-| 模块 | 状态 | 说明 |
-|------|------|------|
-| **auth** | ✅ 完整 | ViewModel、Repository、DataSource、Model、State、Page |
-| **config** | ✅ 完整 | ConfigManager、ServerConfigManager |
-| **log** | ✅ 完整 | LogHelper |
-| **network** | ✅ 完整 | ApiBaseService、ApiResponseParser、NetworkHelper、ApiServiceFactory |
-| **router** | ✅ 部分 | NavigationHelper(功能可能不如 Android 的 RouterHelper 完整) |
-| **storage** | ✅ 完整 | StorageManager |
-| **ui** | ✅ 部分 | MessageHelper、PageHelper、BasePage |
-| **version** | ✅ 完整 | ViewModel、Repository、DataSource、Model、State |
-| **mvvm** | ✅ 完整 | BaseViewModel、StateFlow、ViewModelHelper(HarmonyOS 特有) |
-
----
-
-### ❌ 缺失的模块
-
-#### 1. **dialog** - 对话框助手
-- **目录状态**: 存在但为空
-- **Android 实现**: `DialogHelper.kt`
-- **功能**: 
-  - 提示对话框
-  - 确认对话框
-  - 输入对话框
-  - 列表选择对话框
-  - 级联选择对话框
-- **优先级**: 🔴 高(UI 常用功能)
-
-#### 2. **permission** - 权限管理
-- **目录状态**: 存在但为空
-- **Android 实现**: `PermissionHelper.kt`
-- **功能**:
-  - 权限检查
-  - 权限请求
-  - 权限说明对话框
-  - 权限请求结果回调
-- **优先级**: 🔴 高(应用必需功能)
-
-#### 3. **socketio** - SocketIO 管理器
-- **目录状态**: 存在但为空
-- **Android 实现**: `SocketIOManager.kt`
-- **功能**:
-  - SocketIO 连接管理
-  - 自动重连
-  - Token 刷新后重连
-  - 生命周期管理
-- **优先级**: 🔴 高(实时通信必需)
-
-#### 4. **launch** - 应用初始化
-- **目录状态**: 存在但为空
-- **Android 实现**: `AppInitializer.kt`、`AppLaunchManager.kt`
-- **功能**:
-  - 统一初始化所有模块
-  - 初始化顺序管理
-  - 模块依赖管理
-- **优先级**: 🔴 高(应用启动必需)
-
-#### 5. **util** - 工具管理器
-- **目录状态**: 存在但为空
-- **Android 实现**: `UtilManager.kt`
-- **功能**:
-  - 时间格式化/解析
-  - 字符串加密/解密
-  - MD5 哈希
-  - JSON 转换
-- **优先级**: 🟡 中(工具方法)
-
-#### 6. **crash** - 崩溃处理
-- **目录状态**: 不存在
-- **Android 实现**: `CrashHelper.kt`
-- **功能**:
-  - 崩溃捕获
-  - 崩溃日志记录
-  - 崩溃上报
-- **优先级**: 🟡 中(调试和监控)
-
-#### 7. **file** - 文件选择器
-- **目录状态**: 不存在
-- **Android 实现**: `FilePickerHelper.kt`
-- **功能**:
-  - 文件选择
-  - 文件类型过滤
-  - 多文件选择
-- **优先级**: 🟢 低(特定功能)
-
-#### 8. **image** - 图片加载器
-- **目录状态**: 不存在
-- **Android 实现**: `ImageLoader.kt`
-- **功能**:
-  - 图片加载
-  - 图片缓存
-  - 图片压缩
-- **优先级**: 🟢 低(可使用第三方库)
-
-#### 9. **camera** - 相机助手
-- **目录状态**: 不存在
-- **Android 实现**: `CameraHelper.kt`
-- **功能**:
-  - 相机调用
-  - 图片拍摄
-  - 图片处理
-- **优先级**: 🟢 低(特定功能)
-
-#### 10. **bridge** - 桥接管理器
-- **目录状态**: 不存在
-- **Android 实现**: `BridgeManager.kt`
-- **功能**:
-  - WebView 与原生通信
-  - JS 桥接
-- **优先级**: 🟢 低(特定功能)
-
-#### 11. **executor** - 执行器管理器
-- **目录状态**: 不存在
-- **Android 实现**: `ExecutorManager.kt`
-- **功能**:
-  - 线程池管理
-  - 任务调度
-- **优先级**: 🟢 低(HarmonyOS 使用 async/await)
-
----
-
-## 🎯 优先级建议
-
-### 高优先级(必须实现)
-
-1. **dialog** - 对话框助手
-   - 原因: UI 常用功能,几乎所有页面都需要
-   - 工作量: 中等
-
-2. **permission** - 权限管理
-   - 原因: 应用必需功能,HarmonyOS 权限系统与 Android 不同
-   - 工作量: 中等
-
-3. **socketio** - SocketIO 管理器
-   - 原因: 实时通信必需,业务核心功能
-   - 工作量: 较大(需要适配 HarmonyOS WebSocket)
-
-4. **launch** - 应用初始化
-   - 原因: 应用启动必需,统一管理模块初始化
-   - 工作量: 小
-
-### 中优先级(建议实现)
-
-5. **util** - 工具管理器
-   - 原因: 常用工具方法,提高开发效率
-   - 工作量: 小
-
-6. **crash** - 崩溃处理
-   - 原因: 调试和监控必需
-   - 工作量: 中等
-
-### 低优先级(可选实现)
-
-7. **file** - 文件选择器
-8. **image** - 图片加载器
-9. **camera** - 相机助手
-10. **bridge** - 桥接管理器
-11. **executor** - 执行器管理器
-
----
-
-## 📝 实现建议
-
-### 1. dialog 模块
-- 使用 HarmonyOS 的 `@ohos.promptAction` 和自定义 Dialog
-- 参考 Android 版本的 API 设计,保持一致性
-
-### 2. permission 模块
-- 使用 HarmonyOS 的权限 API(`@kit.AbilityKit`)
-- 适配 HarmonyOS 的权限模型(与 Android 不同)
-
-### 3. socketio 模块
-- 使用 HarmonyOS 的 WebSocket API
-- 或者使用第三方 Socket.IO 库(如果支持 HarmonyOS)
-
-### 4. launch 模块
-- 统一管理所有模块的初始化
-- 确保初始化顺序正确
-
-### 5. util 模块
-- 使用 HarmonyOS 的 API 实现工具方法
-- 保持与 Android 版本的 API 一致性
-
----
-
-## ✅ 总结
-
-**已实现**: 9 个模块(auth、config、log、network、router、storage、ui、version、mvvm)  
-**缺失**: 11 个模块(dialog、permission、socketio、launch、util、crash、file、image、camera、bridge、executor)
-
-**建议优先实现**: dialog、permission、socketio、launch(高优先级)
-
----
-
-**文档版本**: v1.0  
-**创建时间**: 2024-12
-

+ 0 - 197
capability-qrcode/使用说明.md

@@ -1,197 +0,0 @@
-# 二维码扫码功能使用说明(HarmonyOS)
-
-## 功能特点
-
-- ✅ 统一的 API 接口设计
-- ✅ 单例模式,统一管理
-- ⚠️ **当前实现状态**:HarmonyOS NEXT 暂未提供统一的扫码 API,需要业务层实现或使用第三方库
-
-## 当前实现状态
-
-HarmonyOS NEXT 暂未提供统一的扫码 API,当前实现提供了基础框架和接口定义。以下是可选的实现方案:
-
-### 方案1: 使用第三方开源库(推荐)
-
-使用开源的 Zbar_ohos 条形码阅读器:
-- GitHub/Gitee: https://gitee.com/openharmony-sig/ohos_zbar
-- 支持多种条形码和二维码识别
-- 基于鸿蒙系统开发
-
-### 方案2: 使用系统相机 + 二维码识别
-
-使用 HarmonyOS 相机 API + 二维码识别算法实现:
-- 使用 `@kit.CameraKit` 启动相机预览
-- 集成二维码识别算法(如 Zbar、ZXing 等)
-- 需要处理相机预览、图像处理、二维码识别等逻辑
-
-### 方案3: 等待华为 Scan Kit ArkTS 版本
-
-华为 Scan Kit 目前主要支持 Java API,ArkTS 版本可能在未来版本中提供。
-
-### 方案4: 调用系统统一的"扫一扫"服务
-
-HarmonyOS NEXT 系统提供了统一的"扫一扫"功能,如果系统支持应用调用,可以使用系统能力。
-
-## 快速开始
-
-### 调用方式(接口已定义,实现待完成)
-
-```typescript
-import { QRCodeServiceFactory } from '@xdz/capability-qrcode';
-import { Context } from '@kit.AbilityKit';
-
-const qrCodeService = QRCodeServiceFactory.getInstance();
-await qrCodeService.scanQRCode(context, (response) => {
-    if (response.success) {
-        // 扫码成功
-        const qrCodeContent = response.data;
-        console.log('扫码结果: ' + qrCodeContent);
-    } else {
-        // 扫码失败或取消
-        const error = response.errorMessage;
-        console.log('扫码失败: ' + error);
-    }
-});
-```
-
-## API 说明
-
-### QRCodeService 接口
-
-```typescript
-export interface QRCodeService {
-  /**
-   * 生成二维码
-   * @param content 二维码内容
-   * @param size 二维码尺寸(像素)
-   * @returns 二维码图片数据(base64 或文件路径)
-   */
-  generateQRCode(content: string, size: number): Promise<string | null>;
-  
-  /**
-   * 扫描二维码
-   * @param context Context上下文
-   * @param callback 扫描结果回调,返回QRCodeResponse
-   */
-  scanQRCode(context: Context, callback: (response: QRCodeResponse) => void): Promise<void>;
-  
-  /**
-   * 识别图片中的二维码
-   * @param imagePath 图片路径
-   * @param callback 识别结果回调,返回QRCodeResponse
-   */
-  recognizeQRCode(imagePath: string, callback: (response: QRCodeResponse) => void): Promise<void>;
-}
-```
-
-### QRCodeResponse 响应模型
-
-```typescript
-export class QRCodeResponse {
-  success: boolean;          // 是否成功
-  data: string | null;       // 二维码内容
-  errorCode: number | null;  // 错误码
-  errorMessage: string | null; // 错误消息
-  timestamp: number;         // 时间戳
-}
-```
-
-## 权限配置
-
-在 `module.json5` 中添加相机权限:
-
-```json5
-{
-  "module": {
-    "requestPermissions": [
-      {
-        "name": "ohos.permission.CAMERA",
-        "reason": "$string:permission_camera_reason",
-        "usedScene": {
-          "abilities": ["MainAbility"],
-          "when": "inuse"
-        }
-      }
-    ]
-  }
-}
-```
-
-在 `string.json` 中添加权限说明:
-
-```json
-{
-  "string": [
-    {
-      "name": "permission_camera_reason",
-      "value": "需要相机权限来扫描二维码"
-    }
-  ]
-}
-```
-
-## 实现建议
-
-### 使用 Zbar_ohos 实现扫码(推荐)
-
-1. **添加依赖**:
-
-在 `oh-package.json5` 中添加 Zbar_ohos 依赖(如果已发布到 npm):
-
-```json5
-{
-  "dependencies": {
-    "zbar_ohos": "^x.x.x"  // 根据实际版本号填写
-  }
-}
-```
-
-或者手动集成 Zbar_ohos 库。
-
-2. **实现扫码逻辑**:
-
-在 `QRCodeServiceImpl.ets` 中实现具体的扫码逻辑,使用 Zbar_ohos 进行二维码识别。
-
-3. **处理权限**:
-
-使用 `@ohos.abilityAccessCtrl` 或 `@kit.AbilityKit` 的权限 API 处理相机权限。
-
-### 使用系统相机 API 实现(高级)
-
-1. **启动相机预览**:
-
-使用 `@kit.CameraKit` 启动相机预览,获取图像流。
-
-2. **二维码识别**:
-
-对图像流进行二维码识别(可以使用 Zbar、ZXing 等算法)。
-
-3. **处理结果**:
-
-识别成功后调用回调函数返回结果。
-
-## 注意事项
-
-1. **权限处理**:扫码功能需要相机权限,请在 `module.json5` 中配置相应权限,并在代码中处理权限请求
-
-2. **异步操作**:所有扫码操作都是异步的,使用 Promise 或 async/await 处理
-
-3. **单例模式**:QRCodeService 是单例,多个界面可以共享同一个服务实例
-
-4. **Context 传递**:扫码功能需要 Context 参数,请确保传递正确的 Context
-
-5. **系统版本**:不同版本的 HarmonyOS 可能有不同的 API,请根据实际系统版本调整实现
-
-## 参考资源
-
-- [Zbar_ohos 开源库](https://gitee.com/openharmony-sig/ohos_zbar)
-- [HarmonyOS 相机开发指南](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/camera-overview-0000001517585289)
-- [HarmonyOS 权限开发指南](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/access-token-overview-0000001263280425)
-- [华为 Scan Kit 文档](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/scan-kit-introduction-0000001050045257)(Java API,参考用)
-
-## 后续计划
-
-- [ ] 集成 Zbar_ohos 或类似的开源扫码库
-- [ ] 实现完整的权限处理逻辑
-- [ ] 等待华为 Scan Kit ArkTS 版本发布
-- [ ] 优化扫码性能和用户体验

+ 0 - 167
capability-socketio/README.md

@@ -1,167 +0,0 @@
-# capability-socketio 模块
-
-## 📋 模块说明
-
-SocketIO 能力层模块,提供实时通信能力,可独立打包为 SDK。
-
-## 🎯 功能特性
-
-- ✅ Socket.IO 实时通信
-- ✅ 自动重连机制
-- ✅ Token 自动刷新
-- ✅ 生命周期管理
-- ✅ 事件订阅/发布
-- ✅ 独立打包 SDK
-
-## 📦 依赖
-
-- `@xdz/base-core`: 基础设施层(ILog、StorageImpl)
-- `@kit.NetworkKit`: HarmonyOS 网络工具包(WebSocket)
-- `@kit.AbilityKit`: HarmonyOS Ability 工具包
-
-## 🚀 使用方式
-
-### 1. 初始化(在 AppInitializer 中)
-
-```typescript
-import { SocketIOManager } from '@xdz/capability-socketio';
-import { AuthManager } from '@xdz/base-common';
-
-// 1. 初始化 SocketIO 管理器
-SocketIOManager.init(context);
-
-// 2. 设置回调函数
-SocketIOManager.isLoggedInProvider = () => {
-  return AuthManager.getInstance().isLoggedIn();
-};
-
-SocketIOManager.refreshTokenProvider = async () => {
-  const result = await AuthManager.getInstance().refreshToken();
-  if (result.isSuccess) {
-    return AuthManager.getInstance().getAccessToken();
-  }
-  return null;
-};
-```
-
-### 2. 在 EntryAbility 中监听生命周期
-
-```typescript
-import { SocketIOManager } from '@xdz/capability-socketio';
-
-async onForeground(): Promise<void> {
-  await SocketIOManager.onForeground();
-}
-
-onBackground(): void {
-  SocketIOManager.onBackground();
-}
-```
-
-### 3. 业务代码中使用
-
-```typescript
-import { SocketIORepositoryFactory } from '@xdz/capability-socketio';
-
-// 获取 Repository 实例
-const repository = SocketIORepositoryFactory.getInstance();
-
-// 连接服务器
-await repository.connect(serverUrl, token);
-
-// 观察连接状态
-repository.connectionState.observe((isConnected) => {
-  console.log('连接状态:', isConnected);
-});
-
-// 发送消息
-await repository.sendVehicleControl('lock', vehicleId);
-
-// 观察车辆报警
-repository.vehicleAlarm.observe((alarm) => {
-  if (alarm) {
-    console.log('收到报警:', alarm.data);
-  }
-});
-```
-
-## 📁 模块结构
-
-```
-capability-socketio/
-├── src/main/ets/socketio/
-│   ├── api/              # API 接口
-│   │   └── SocketIOService.ets
-│   ├── factory/          # 工厂类
-│   │   ├── SocketIOServiceFactory.ets
-│   │   └── SocketIORepositoryFactory.ets
-│   ├── impl/             # 实现类
-│   │   └── SocketIOServiceImpl.ets
-│   ├── manager/          # 管理器
-│   │   └── SocketIOManager.ets
-│   ├── model/            # 数据模型
-│   │   ├── SocketIOEvent.ets
-│   │   └── SocketIOResponse.ets
-│   └── repository/       # 数据仓库
-│       ├── SocketIORepository.ets
-│       └── StateFlow.ets
-├── oh-package.json5      # 依赖配置
-├── module.json5         # 模块配置
-└── index.ets            # 导出入口
-```
-
-## 🔧 独立打包 SDK
-
-### 1. 配置模块为 HAR(HarmonyOS Archive)
-
-模块已配置为 `type: "har"`,可以独立打包。
-
-### 2. 打包步骤
-
-```bash
-# 在 DevEco Studio 中
-# 1. 右键点击 capability-socketio 模块
-# 2. 选择 "Build" -> "Make Module 'capability-socketio'"
-# 3. 生成的 HAR 文件在 build/default/outputs/default/ 目录下
-```
-
-### 3. 使用打包的 SDK
-
-```json5
-// 在其他项目的 oh-package.json5 中
-{
-  "dependencies": {
-    "@xdz/capability-socketio": "file:../path/to/capability-socketio.har"
-  }
-}
-```
-
-## 📝 API 文档
-
-### SocketIORepository
-
-- `connect(serverUrl?: string, token?: string)`: 连接服务器
-- `disconnect()`: 断开连接
-- `isConnected()`: 检查连接状态
-- `checkAndReconnect(serverUrl?: string, token?: string)`: 检查并重连
-- `sendVehicleControl(command: string, vehicleId: number)`: 发送车辆控制指令
-
-### SocketIOManager
-
-- `init(context: Context)`: 初始化管理器
-- `onForeground()`: App 进入前台时调用
-- `onBackground()`: App 进入后台时调用
-- `isLoggedInProvider`: 登录状态检查回调
-- `refreshTokenProvider`: Token 刷新回调
-
-## ⚠️ 注意事项
-
-1. **WebSocket 实现**: 当前使用 HarmonyOS WebSocket API,需要确保服务器支持 Socket.IO 协议
-2. **Token 传递**: Token 通过 URL 参数传递(`?token=xxx`)
-3. **生命周期**: 需要在 EntryAbility 中手动调用 `onForeground()` 和 `onBackground()`
-4. **依赖方向**: capability-socketio 只依赖 base-core,不依赖 base-common
-
-## 📄 许可证
-
-MIT
-

+ 0 - 320
capability-socketio/Socket.IO协议实现说明.md

@@ -1,320 +0,0 @@
-# Socket.IO 协议实现说明(完整版)
-
-## 📋 问题背景
-
-Socket.IO 是一个功能丰富的实时通信库,相比原生 WebSocket 提供了:
-- ✅ 自动重连机制
-- ✅ 心跳检测(ping/pong)
-- ✅ 事件驱动的通信模式
-- ✅ **命名空间(namespace)支持** ✅ 已实现
-- ✅ **房间(room)支持** ✅ 已实现
-- ✅ **二进制数据支持** ✅ 已实现
-- ✅ **自动降级连接(WebSocket -> HTTP 长轮询)** ✅ 已实现
-- ✅ 握手(handshake)机制
-
-鸿蒙端目前没有现成的 Socket.IO 客户端库,因此需要手动实现 Socket.IO 协议。
-
-## 🔧 实现方案
-
-### 1. Socket.IO 协议实现
-
-已实现 `SocketIOProtocol` 类,支持:
-
-#### 消息类型
-- `0` - CONNECT(连接/握手)
-- `1` - DISCONNECT(断开连接)
-- `2` - EVENT(事件)
-- `3` - ACK(确认)
-- `4` - ERROR(错误)
-- `5` - BINARY_EVENT(二进制事件)✅ 已实现
-- `6` - BINARY_ACK(二进制确认)✅ 已实现
-
-#### 消息格式
-- 事件消息:`42["event", data]` - 42 是 EVENT 类型,后面是 JSON 数组
-- 命名空间消息:`42/namespace["event", data]` ✅ 已实现
-- 连接消息:`0{"sid":"...","pingInterval":25000,"pingTimeout":20000}`
-- Ping 消息:`2["ping"]`
-- Pong 消息:`3["pong"]`
-- 二进制消息:`51-["event", {"_placeholder":true,"num":0}]` ✅ 已实现
-
-#### 握手流程
-1. 建立 WebSocket 连接(或 HTTP 长轮询)
-2. 服务器发送连接消息(包含 SID、pingInterval、pingTimeout)
-3. 客户端保存连接信息,开始心跳机制
-
-#### 心跳机制
-- 客户端定期发送 ping(默认 25 秒)
-- 服务器响应 pong
-- 如果 pong 超时(默认 20 秒),认为连接断开
-
-### 2. 自动降级连接机制 ✅ 已实现
-
-Socket.IO 的自动降级连接机制:
-
-#### 工作原理
-1. **首选 WebSocket**:客户端首先尝试通过 WebSocket 协议与服务器建立连接
-2. **降级到 HTTP 长轮询**:如果 WebSocket 不可用(网络限制、防火墙等),客户端会自动降级到 HTTP 长轮询(Long Polling)模式
-
-#### 实现方式
-```typescript
-// 1. 先尝试 WebSocket
-try {
-  transport = new WebSocketTransport();
-  await transport.connect(wsUrl, token);
-  // WebSocket 连接成功
-} catch (e) {
-  // WebSocket 失败,降级到 HTTP 长轮询
-  transport = new PollingTransport();
-  await transport.connect(serverUrl, token, namespace);
-  // HTTP 长轮询连接成功
-}
-```
-
-#### HTTP 长轮询实现
-- **GET 请求**:长轮询接收消息(60 秒超时)
-- **POST 请求**:发送消息
-- **Session 管理**:通过 `sid` 参数保持会话
-
-#### 优势
-- ✅ 提高连接成功率(兼容性更好)
-- ✅ 自动切换,无需手动处理
-- ✅ 透明切换,业务代码无需关心传输方式
-
-### 3. 命名空间支持 ✅ 已实现
-
-#### 使用方式
-```typescript
-// 连接默认命名空间 "/"
-await socketService.connect(serverUrl, token);
-
-// 连接自定义命名空间 "/chat"
-await socketService.connect(serverUrl, token, "/chat");
-
-// 获取当前命名空间
-const namespace = socketService.getNamespace();
-```
-
-#### 实现细节
-- URL 格式:`/namespace/socket.io/?EIO=4&transport=websocket`
-- 消息格式:`42/namespace["event", data]`
-- 支持多个命名空间(需要创建多个 SocketIOService 实例)
-
-### 4. 房间支持 ✅ 已实现
-
-#### 使用方式
-```typescript
-// 加入房间
-socketService.joinRoom("room_name");
-
-// 离开房间
-socketService.leaveRoom("room_name");
-```
-
-#### 实现细节
-- 发送 `join` 事件到服务器
-- 发送 `leave` 事件到服务器
-- 服务器负责房间管理(广播消息等)
-
-### 5. 二进制数据支持 ✅ 已实现
-
-#### 使用方式
-```typescript
-// 发送二进制数据
-const binaryData = new Uint8Array([1, 2, 3, 4]);
-socketService.emitBinary("binary_event", binaryData, (response) => {
-  // ACK 回调
-  console.log("收到 ACK:", response);
-});
-```
-
-#### 实现细节
-- 使用占位符机制:`51-["event", {"_placeholder":true,"num":0}]`
-- 二进制数据作为单独消息发送
-- WebSocket 直接发送二进制
-- HTTP 长轮询使用 Base64 编码
-
-### 6. ACK 回调支持 ✅ 已实现
-
-#### 使用方式
-```typescript
-// 发送带 ACK 的事件
-socketService.emit("event", data, (response) => {
-  console.log("收到 ACK:", response);
-});
-```
-
-#### 实现细节
-- 消息格式:`42["event", data, ackId]`
-- ACK 消息:`43[data]`
-- 使用 Map 存储 ACK 回调
-
-## 🚀 使用方式
-
-### 基本使用(与 Android 端一致)
-
-```typescript
-// 1. 获取 Repository
-const repository = SocketIORepositoryFactory.getInstance();
-
-// 2. 连接服务器(默认命名空间)
-await repository.connect(serverUrl, token);
-
-// 3. 连接命名空间
-await repository.connect(serverUrl, token, "/chat");
-
-// 4. 观察连接状态
-repository.connectionState.observe((isConnected) => {
-  console.log('连接状态:', isConnected);
-});
-
-// 5. 发送事件
-await repository.sendVehicleControl('lock', vehicleId);
-
-// 6. 发送二进制数据
-const binaryData = new Uint8Array([1, 2, 3]);
-socketService.emitBinary("binary_event", binaryData);
-
-// 7. 加入房间
-socketService.joinRoom("room_1");
-
-// 8. 观察事件
-repository.vehicleAlarm.observe((alarm) => {
-  if (alarm) {
-    console.log('收到报警:', alarm.data);
-  }
-});
-```
-
-## 📊 功能对比表
-
-| 功能 | Android 端 | 鸿蒙端 | 状态 |
-|------|-----------|--------|------|
-| Socket.IO 协议 | ✅ socket.io-client:2.1.2 | ✅ 手动实现 | ✅ 兼容 |
-| 握手机制 | ✅ 自动 | ✅ 手动实现 | ✅ 兼容 |
-| 心跳机制 | ✅ 自动 | ✅ 手动实现 | ✅ 兼容 |
-| 事件系统 | ✅ 支持 | ✅ 支持 | ✅ 兼容 |
-| 自动重连 | ✅ 支持 | ✅ 支持 | ✅ 兼容 |
-| **命名空间** | ✅ 支持 | ✅ **已实现** | ✅ **兼容** |
-| **房间** | ✅ 支持 | ✅ **已实现** | ✅ **兼容** |
-| **二进制数据** | ✅ 支持 | ✅ **已实现** | ✅ **兼容** |
-| **自动降级连接** | ✅ 支持 | ✅ **已实现** | ✅ **兼容** |
-| ACK 回调 | ✅ 支持 | ✅ **已实现** | ✅ **兼容** |
-
-## 🔍 自动降级连接详解
-
-### 为什么需要自动降级?
-
-1. **网络限制**:某些网络环境(企业防火墙、代理服务器)可能阻止 WebSocket 连接
-2. **兼容性**:HTTP 长轮询兼容性更好,几乎所有网络环境都支持
-3. **可靠性**:如果 WebSocket 失败,自动降级确保连接成功
-
-### 降级流程
-
-```
-1. 尝试 WebSocket 连接
-   ↓
-2. WebSocket 连接失败?
-   ↓ 是
-3. 自动降级到 HTTP 长轮询
-   ↓
-4. HTTP 长轮询连接成功
-   ↓
-5. 正常通信(业务代码无感知)
-```
-
-### HTTP 长轮询工作原理
-
-```
-客户端                   服务器
-  |                        |
-  |--- GET (长轮询) ------->|
-  |                        | (等待消息,最长 60 秒)
-  |<-- 消息1, 消息2 -------|
-  |                        |
-  |--- GET (长轮询) ------->|
-  |                        |
-  |--- POST (发送消息) ---->|
-  |<-- OK -----------------|
-  |                        |
-```
-
-### 性能对比
-
-| 特性 | WebSocket | HTTP 长轮询 |
-|------|-----------|-------------|
-| 延迟 | 低(实时) | 中等(取决于轮询间隔) |
-| 带宽 | 低(无 HTTP 头) | 高(每次请求都有 HTTP 头) |
-| 兼容性 | 中等(可能被阻止) | 高(几乎都支持) |
-| 连接数 | 1 个长连接 | 多个短连接 |
-
-## 🔍 调试建议
-
-### 1. 查看协议消息
-
-在 `SocketIOServiceImpl` 中已添加详细日志:
-- 连接/断开连接
-- 收到的所有消息
-- Ping/Pong 消息
-- 事件消息
-- 传输方式切换(WebSocket <-> HTTP 长轮询)
-
-### 2. 验证协议兼容性
-
-如果遇到连接问题,检查:
-1. 服务器是否支持 Socket.IO 2.x 协议(EIO=4)
-2. 握手响应是否包含 `sid`、`pingInterval`、`pingTimeout`
-3. 消息格式是否符合 Socket.IO 协议
-4. 是否触发了自动降级(查看日志)
-
-### 3. 测试自动降级
-
-- 模拟 WebSocket 失败(断开网络、防火墙阻止)
-- 观察日志中的降级提示
-- 验证 HTTP 长轮询是否正常工作
-
-### 4. 测试命名空间和房间
-
-- 连接不同的命名空间
-- 加入/离开房间
-- 验证消息是否正确路由
-
-## 📝 后续优化
-
-如果需要支持更多 Socket.IO 功能,可以考虑:
-
-1. **连接状态恢复**(Socket.IO 4.6.0+)
-   ```typescript
-   // 恢复连接状态和丢失的数据包
-   socketService.reconnect();
-   ```
-
-2. **多路复用**(多个命名空间共享连接)
-   ```typescript
-   // 在同一个连接上使用多个命名空间
-   const chatSocket = socketService.of("/chat");
-   const notificationSocket = socketService.of("/notification");
-   ```
-
-3. **压缩支持**
-   ```typescript
-   // 启用消息压缩
-   socketService.enableCompression();
-   ```
-
-## ✅ 总结
-
-当前实现已经支持 Socket.IO 的**所有核心功能**:
-- ✅ 完整的协议解析
-- ✅ 握手机制
-- ✅ 心跳机制
-- ✅ 事件系统
-- ✅ 自动重连
-- ✅ **命名空间支持**
-- ✅ **房间支持**
-- ✅ **二进制数据支持**
-- ✅ **自动降级连接(WebSocket -> HTTP 长轮询)**
-- ✅ **ACK 回调支持**
-
-与 Android 端使用 `socket.io-client:2.1.2` 的兼容性**完全一致**,可以正常通信。
-
-**自动降级连接机制**确保了在各种网络环境下都能成功连接,提高了应用的兼容性和可靠性。

+ 0 - 226
capability-socketio/Socket.IO连接配置说明.md

@@ -1,226 +0,0 @@
-# Socket.IO 连接配置说明
-
-## 📋 Socket.IO 连接配置的三个部分
-
-### 1. 主连接地址(服务器地址)
-
-```typescript
-// 服务器的基础 URL
-const serverUrl = "http://example.com:3000";
-```
-
-**作用**:指定 Socket.IO 服务器的地址
-
-### 2. path(Socket.IO 服务路径)
-
-```typescript
-// Socket.IO 服务的路径(默认是 "/socket.io/")
-opts.path = "/socket.io/";
-```
-
-**作用**:
-- 指定 Socket.IO 服务在服务器上的路径
-- 默认值是 `/socket.io/`
-- 如果服务器将 Socket.IO 部署在其他路径,需要修改此配置
-
-**URL 构建**:
-```
-http://example.com:3000/socket.io/?EIO=4&transport=websocket
-         ↑                    ↑
-    服务器地址             服务路径
-```
-
-### 3. transports(传输方式数组)
-
-```typescript
-// 传输方式数组,Socket.IO 会按顺序尝试
-opts.transports = ["websocket", "polling"];
-```
-
-**作用**:
-- 指定客户端可以使用的传输方式
-- Socket.IO 会**按数组顺序**尝试连接
-- 如果第一个失败,自动尝试下一个
-
-**传输方式**:
-- `"websocket"` - WebSocket 传输(实时双向通信)
-- `"polling"` - HTTP 长轮询(降级方案)
-
-## 🔄 自动降级连接机制
-
-### 机制说明
-
-**自动降级连接机制实际上是两个传输方式**:
-1. **WebSocket**(首选)
-2. **HTTP 长轮询**(降级方案)
-
-### 配置方式
-
-#### 方式1:先 WebSocket,失败则降级到 HTTP 长轮询(推荐)
-
-```typescript
-opts.transports = ["websocket", "polling"];
-```
-
-**流程**:
-```
-1. 尝试 WebSocket 连接
-   ↓ 失败
-2. 自动降级到 HTTP 长轮询
-   ↓
-3. 连接成功
-```
-
-**优势**:
-- ✅ 优先使用性能更好的 WebSocket
-- ✅ WebSocket 失败时自动降级,确保连接成功
-
-#### 方式2:先 HTTP 长轮询,然后升级到 WebSocket(默认)
-
-```typescript
-opts.transports = ["polling", "websocket"];
-// 或者不设置,使用默认值
-```
-
-**流程**:
-```
-1. 先使用 HTTP 长轮询连接
-   ↓ 成功
-2. 尝试升级到 WebSocket
-   ↓
-3. 使用 WebSocket(如果升级成功)
-```
-
-**优势**:
-- ✅ 兼容性最好(HTTP 长轮询几乎都支持)
-- ✅ 连接成功后可以升级到 WebSocket
-
-#### 方式3:只使用 WebSocket(不推荐)
-
-```typescript
-opts.transports = ["websocket"];
-```
-
-**问题**:
-- ❌ 如果 WebSocket 不可用,连接会失败
-- ❌ 兼容性差
-
-#### 方式4:只使用 HTTP 长轮询(不推荐)
-
-```typescript
-opts.transports = ["polling"];
-```
-
-**问题**:
-- ❌ 性能较差(HTTP 头开销)
-- ❌ 延迟较高
-
-## 🎯 一般需要哪些配置?
-
-### 标准配置(推荐)
-
-```typescript
-const options = {
-  // 1. 服务器地址(必需)
-  serverUrl: "http://example.com:3000",
-  
-  // 2. Socket.IO 服务路径(可选,默认 "/socket.io/")
-  path: "/socket.io/",
-  
-  // 3. 传输方式(可选,默认 ["polling", "websocket"])
-  transports: ["websocket", "polling"], // 推荐:先 WebSocket,失败则降级
-  
-  // 4. 查询参数(可选,用于传递 token 等)
-  query: {
-    token: "your_token"
-  },
-  
-  // 5. HTTP 头(可选,用于传递认证信息)
-  extraHeaders: {
-    "Authorization": "Bearer your_token"
-  }
-};
-```
-
-### 最小配置(必需)
-
-```typescript
-const options = {
-  serverUrl: "http://example.com:3000", // 必需
-  // 其他使用默认值
-};
-```
-
-## 📊 Android 端 vs 鸿蒙端对比
-
-### Android 端(socket.io-client:2.1.2)
-
-```kotlin
-val options = IO.Options().apply {
-    // ① 主连接地址(在 IO.socket() 中指定)
-    // socket = IO.socket("http://example.com:3000", options)
-    
-    // ② path(默认 "/socket.io/",可以不设置)
-    // path = "/socket.io/" // 默认值
-    
-    // ③ transports(默认 ["polling", "websocket"],可以不设置)
-    // transports = arrayOf("polling", "websocket") // 默认值
-    
-    // ④ query(用于传递 token)
-    query = "token=$token"
-    
-    // ⑤ extraHeaders(用于传递认证信息)
-    extraHeaders = mapOf("Authorization" to listOf("Bearer $token"))
-    
-    // ⑥ 其他配置
-    reconnection = false
-}
-```
-
-### 鸿蒙端(当前实现)
-
-```typescript
-// 当前实现:手动实现自动降级
-// 1. 先尝试 WebSocket
-// 2. 失败则降级到 HTTP 长轮询
-
-// 需要扩展:支持 transports 配置
-```
-
-## 🔧 需要扩展的功能
-
-为了让鸿蒙端与 Android 端完全一致,需要支持:
-
-1. ✅ **path 配置**(当前已支持,默认 "/socket.io/")
-2. ⚠️ **transports 配置**(当前是硬编码的顺序,需要改为可配置)
-3. ✅ **query 配置**(当前已支持,通过 URL 参数传递)
-4. ⚠️ **extraHeaders 配置**(HTTP 长轮询已支持,WebSocket 需要扩展)
-
-## 📝 总结
-
-### 自动降级连接机制
-
-- **两个传输方式**:WebSocket 和 HTTP 长轮询
-- **一个连接地址**:服务器地址
-- **一个服务路径**:Socket.IO 服务路径(默认 "/socket.io/")
-
-### 一般需要的配置
-
-1. **服务器地址**(必需)
-2. **path**(可选,默认 "/socket.io/")
-3. **transports**(可选,推荐 `["websocket", "polling"]`)
-4. **query**(可选,用于传递 token)
-5. **extraHeaders**(可选,用于传递认证信息)
-
-### 推荐配置
-
-```typescript
-{
-  serverUrl: "http://example.com:3000",
-  path: "/socket.io/",                    // 默认值,可以不设置
-  transports: ["websocket", "polling"],   // 推荐:先 WebSocket,失败则降级
-  query: { token: "xxx" },               // 可选
-  extraHeaders: { "Authorization": "Bearer xxx" } // 可选
-}
-```
-

+ 0 - 136
capability-socketio/SocketIO架构说明.md

@@ -1,136 +0,0 @@
-# SocketIO 模块架构说明(鸿蒙端)
-
-## 📋 架构调整
-
-### 调整前(方案1:分离)
-
-```
-base-common/socketio(业务层)
-  └─ SocketIOManager(使用反射调用 capability-socketio)
-      ↓ 反射调用
-capability-socketio(能力层)
-  └─ SocketIORepository(具体实现)
-```
-
-**问题:**
-- ❌ 使用反射,性能差,类型不安全
-- ❌ 代码分散在两个模块
-- ❌ 违反依赖方向(业务层通过反射绕过依赖)
-
----
-
-### 调整后(方案2:全部放在能力层)✅
-
-```
-capability-socketio(能力层)
-  ├─ SocketIORepository(具体实现)
-  └─ SocketIOManager(生命周期管理,直接调用 SocketIORepository)
-      ↓ 回调函数
-entry(应用层)
-  └─ AppInitializer(通过直接调用 SocketIOManager,传递回调函数)
-```
-
-**优势:**
-- ✅ 代码集中在能力层
-- ✅ 直接依赖,类型安全
-- ✅ 符合依赖方向(能力层自包含)
-- ✅ 无反射开销(能力层内部)
-
----
-
-## 🔄 依赖关系
-
-### 正确的依赖方向
-
-```
-entry(应用层)
-    ↓ 直接依赖
-capability-socketio(能力层)
-    ↓ 直接依赖
-base-core(基础设施层)
-```
-
-### capability-socketio 的依赖
-
-```json5
-{
-  "dependencies": {
-    "@xdz/base-core": "file:../base-core",
-    "@kit.AbilityKit": "^1.0.0"
-  }
-}
-```
-
-**关键点:**
-- ✅ capability-socketio **不依赖** base-common
-- ✅ SocketIOManager 使用 `ILog`(base-core)而不是 `LogHelper`(base-common)
-- ✅ SocketIOManager 通过回调函数接收登录状态和 Token 刷新逻辑
-
----
-
-## 📝 SocketIOManager 设计
-
-### 位置
-
-`capability-socketio/src/main/ets/socketio/manager/SocketIOManager.ets`
-
-### 职责
-
-1. **生命周期管理**
-   - 监听应用前后台切换(通过 Ability 生命周期)
-   - App 进入前台时自动检查并重连 SocketIO
-
-2. **自动重连**
-   - 检查连接状态,如果断开则自动重连
-   - Token 过期时自动刷新并重连
-
-3. **回调函数**
-   - `isLoggedInProvider`: 登录状态检查回调(由应用层设置)
-   - `refreshTokenProvider`: Token 刷新回调(由应用层设置)
-
-### 使用方式
-
-```typescript
-// 在 AppInitializer 中初始化
-import { SocketIOManager } from '@xdz/capability-socketio';
-import { AuthManager } from '@xdz/base-common';
-
-// 1. 先调用 init(注册生命周期监听)
-SocketIOManager.init(context);
-
-// 2. 设置回调函数(直接设置属性,简单直接)
-SocketIOManager.isLoggedInProvider = () => {
-  return AuthManager.getInstance().isLoggedIn();
-};
-
-SocketIOManager.refreshTokenProvider = async () => {
-  return await AuthManager.getInstance().refreshTokenIfNeeded();
-};
-```
-
----
-
-## ✅ 总结
-
-**capability-socketio**:
-- SocketIO 的具体实现
-- SocketIO 的生命周期管理
-- 提供连接、发送、接收等基础能力
-- 提供自动重连、Token 刷新等业务逻辑
-
-**entry**:
-- 应用初始化逻辑
-- 协调所有层的初始化
-- 设置 SocketIOManager 的回调函数
-
-**两者关系:**
-- capability-socketio 提供能力和管理
-- entry 负责组装和配置
-- 通过回调函数实现解耦
-
----
-
-**文档版本:** v2.0  
-**更新时间:** 2024-12  
-**对应 Android 版本:** capability-socketio/架构调整说明.md
-

+ 0 - 159
权限处理方式对比.md

@@ -1,159 +0,0 @@
-# Android vs HarmonyOS 权限处理方式对比
-
-## 一、Android 权限处理方式
-
-### 1. 权限检查
-```kotlin
-// 同步方法,直接返回结果
-fun checkPermission(context: Context, permission: String): Boolean {
-    return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED
-}
-```
-
-### 2. 权限请求
-```kotlin
-// 使用 ActivityResultLauncher 注册
-val launcher = activity.registerForActivityResult(
-    ActivityResultContracts.RequestMultiplePermissions()
-) { permissions ->
-    // 处理结果
-}
-
-// 触发权限请求
-launcher.launch(arrayOf(permission1, permission2))
-```
-
-### 3. 权限说明
-```kotlin
-// 判断是否需要显示说明(用户之前拒绝过)
-fun shouldShowRequestPermissionRationale(activity: Activity, permission: String): Boolean {
-    return activity.shouldShowRequestPermissionRationale(permission)
-}
-```
-
-### 特点:
-- ✅ **同步权限检查**:`checkSelfPermission()` 是同步方法
-- ✅ **基于 ActivityResult API**:使用现代 Android 权限请求方式
-- ✅ **类型明确**:所有类型都有明确的定义
-- ✅ **简单直接**:API 设计清晰,易于使用
-
----
-
-## 二、HarmonyOS 权限处理方式
-
-### 1. 权限检查
-```typescript
-// ❌ 问题:需要使用异步方法 checkAccessToken
-// 当前实现是占位,返回 false
-static checkPermission(context: Context, permission: string): boolean {
-    // TODO: 需要改为异步方法
-    // const tokenId = await atManager.getTokenId(context);
-    // const grantStatus = await atManager.checkAccessToken(tokenId, permission);
-    return false; // 占位实现
-}
-```
-
-### 2. 权限请求
-```typescript
-// 使用 abilityAccessCtrl.createAtManager()
-const atManager = abilityAccessCtrl.createAtManager();
-atManager.requestPermissionsFromUser(context, permissionsArray)
-    .then((data) => {
-        // 处理结果
-    });
-```
-
-### 3. 当前问题
-
-#### 问题 1:类型定义缺失
-```typescript
-// ❌ 错误:Permissions 类型未导出
-atManager.requestPermissionsFromUser(context, permissionsArray as Array<abilityAccessCtrl.Permissions>)
-// Error: Namespace 'abilityAccessCtrl' has no exported member 'Permissions'
-```
-
-#### 问题 2:返回类型缺失
-```typescript
-// ❌ 错误:PermissionRequestResult 类型未导出
-(atManager.requestPermissionsFromUser as (context: Context, permissions: Array<string>) => Promise<abilityAccessCtrl.PermissionRequestResult>)
-// Error: Namespace 'abilityAccessCtrl' has no exported member 'PermissionRequestResult'
-```
-
-#### 问题 3:ArkTS 严格类型检查
-```typescript
-// ❌ 错误:不允许使用 any/unknown
-// Error: Use explicit types instead of "any", "unknown" (arkts-no-any-unknown)
-```
-
-### 特点:
-- ❌ **异步权限检查**:需要使用异步方法,但当前是占位实现
-- ✅ **Promise 方式**:使用 Promise 处理异步结果
-- ❌ **类型定义问题**:`Permissions` 和 `PermissionRequestResult` 类型未导出
-- ❌ **API 文档不完整**:类型定义与运行时行为不一致
-
----
-
-## 三、核心差异总结
-
-| 特性 | Android | HarmonyOS | 说明 |
-|------|---------|-----------|------|
-| **权限检查** | 同步方法 | 异步方法 | HarmonyOS 需要异步检查 |
-| **权限请求** | ActivityResultLauncher | Promise | 两种不同的异步处理方式 |
-| **类型定义** | 完整 | 部分缺失 | HarmonyOS 类型定义不完整 |
-| **API 设计** | 清晰明确 | 存在类型问题 | HarmonyOS 需要类型断言 |
-
----
-
-## 四、建议的处理方案
-
-### 方案 1:按照 HarmonyOS 推荐方式实现(推荐)
-
-**不要强行与 Android 保持一致**,按照 HarmonyOS 官方推荐的方式实现:
-
-1. **权限检查改为异步方法**
-   ```typescript
-   static async checkPermissionAsync(context: Context, permission: string): Promise<boolean> {
-       const atManager = abilityAccessCtrl.createAtManager();
-       const tokenId = await atManager.getTokenId(context);
-       const grantStatus = await atManager.checkAccessToken(tokenId, permission);
-       return grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED;
-   }
-   ```
-
-2. **权限请求使用官方示例的方式**
-   - 查看官方文档中的示例代码
-   - 使用官方推荐的类型处理方式
-   - 如果官方示例使用了类型断言,我们也使用相同的方式
-
-3. **简化接口设计**
-   - 不强制与 Android 接口一致
-   - 按照 HarmonyOS 的 API 特性设计接口
-   - 在业务层做适配,而不是在基础层强行统一
-
-### 方案 2:查看官方文档确认正确类型
-
-根据官方文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-abilityaccessctrl#requestpermissionsfromuser9
-
-需要确认:
-1. `requestPermissionsFromUser` 的正确参数类型
-2. 返回值的正确类型
-3. 官方示例代码中的处理方式
-
----
-
-## 五、当前编译错误
-
-1. ❌ `Permissions` 类型未导出
-2. ❌ `PermissionRequestResult` 类型未导出  
-3. ❌ ArkTS 不允许使用 `any`/`unknown` 类型
-4. ❌ 权限检查方法是占位实现(返回 false)
-
----
-
-## 六、下一步行动
-
-1. **查看官方文档示例代码**,确认正确的使用方式
-2. **按照 HarmonyOS 推荐方式实现**,不要强行与 Android 保持一致
-3. **简化接口设计**,适配 HarmonyOS 的 API 特性
-4. **修复类型问题**,使用官方推荐的类型处理方式
-

+ 0 - 118
架构调整总结.md

@@ -1,118 +0,0 @@
-# 鸿蒙端架构调整总结
-
-## 📋 调整内容
-
-### 1. AppInitializer 迁移
-
-**调整前:**
-- 位置:`base-common/src/main/ets/common/launch/AppInitializer.ets`
-- 问题:业务层不应该负责应用初始化
-
-**调整后:**
-- 位置:`entry/src/main/ets/launch/AppInitializer.ets`
-- 优势:应用层负责组装和协调所有模块
-
-### 2. EntryAbility 更新
-
-**调整前:**
-- `EntryAbility.onCreate()` 中没有调用 `AppInitializer`
-
-**调整后:**
-- `EntryAbility.onCreate()` 中调用 `await AppInitializer.init(this.context)`
-
-### 3. 依赖关系更新
-
-**entry/oh-package.json5:**
-```json5
-{
-  "dependencies": {
-    "@xdz/base-common": "file:../base-common",
-    "@kit.AbilityKit": "^1.0.0"
-  }
-}
-```
-
-### 4. SocketIO 架构说明更新
-
-**调整前:**
-- `base-common/src/main/ets/common/socketio/SocketIO架构说明.md`
-- 说明 SocketIOManager 应该在 base-common
-
-**调整后:**
-- `capability-socketio/SocketIO架构说明.md`
-- 说明 SocketIOManager 应该在 capability-socketio(与 Android 端一致)
-
----
-
-## ✅ 完成的调整
-
-1. ✅ `AppInitializer` 已迁移到 `entry` 模块
-2. ✅ `EntryAbility` 已更新,调用 `AppInitializer.init()`
-3. ✅ `entry` 模块已添加对 `base-common` 的依赖
-4. ✅ `base-common` 中已删除 `AppInitializer` 的导出
-5. ✅ SocketIO 架构说明已更新
-
----
-
-## 📝 待实现(后续)
-
-### SocketIOManager 实现
-
-当 `capability-socketio` 模块实现后,需要:
-
-1. **创建 SocketIOManager**
-   - 位置:`capability-socketio/src/main/ets/socketio/manager/SocketIOManager.ets`
-   - 参考 Android 端的实现
-   - 使用 HarmonyOS 的生命周期 API(`onForeground`、`onBackground`)
-
-2. **在 AppInitializer 中初始化**
-   ```typescript
-   // 取消注释并实现
-   await AppInitializer.initSocketIO(context);
-   ```
-
-3. **设置回调函数**
-   ```typescript
-   SocketIOManager.isLoggedInProvider = () => {
-     return AuthManager.getInstance().isLoggedIn();
-   };
-   
-   SocketIOManager.refreshTokenProvider = async () => {
-     return await AuthManager.getInstance().refreshTokenIfNeeded();
-   };
-   ```
-
----
-
-## 🎯 架构对比
-
-### Android 端
-```
-app(应用层)
-  └─ AppInitializer
-      ├─ 直接导入 base-common 模块
-      └─ 直接导入 capability-socketio 模块
-```
-
-### HarmonyOS 端(当前)
-```
-entry(应用层)
-  └─ AppInitializer
-      ├─ 直接导入 base-common 模块
-      └─ capability-socketio(待实现)
-```
-
----
-
-## ✅ 验证
-
-- ✅ `AppInitializer` 已迁移到 `entry` 模块
-- ✅ `EntryAbility` 已调用 `AppInitializer.init()`
-- ✅ 依赖关系已更新
-- ✅ 代码结构清晰,符合架构原则
-
----
-
-**文档版本:** v1.0  
-**创建时间:** 2024-12
-

+ 0 - 906
移植方案.md

@@ -1,906 +0,0 @@
-# 新大洲智能车控 HarmonyOS 移植方案
-
-## 📋 项目概述
-
-本文档制定从 Android 平台移植到 HarmonyOS 平台的详细方案,保持整体架构一致,同时针对 HarmonyOS 系统特色进行优化封装。
-
----
-
-## 🎯 移植目标
-
-### 核心原则
-
-1. **架构一致性**:保持与 Android 版本相同的分层架构
-2. **鸿蒙特色**:充分利用 HarmonyOS 的 ArkTS、声明式 UI、分布式能力等特性
-3. **代码复用**:业务逻辑层尽量复用,UI 层和平台特性层重新实现
-4. **渐进式迁移**:分阶段实施,确保每个阶段可独立验证
-
----
-
-## 🏗️ 架构对比分析
-
-### Android 架构
-
-```
-业务层(app 模块)
-    ↓ 依赖
-    ├── base-common(业务封装层)
-    └── capability-xxx(能力层)
-            ↓ 依赖
-        base-core(基础设施层)
-            ↑ 依赖
-        base-common(业务封装层)
-```
-
-### HarmonyOS 目标架构
-
-```
-业务层(entry 模块)
-    ↓ 依赖
-    ├── base-common(业务封装层)
-    └── capability-xxx(能力层)
-            ↓ 依赖
-        base-core(基础设施层)
-            ↑ 依赖
-        base-common(业务封装层)
-```
-
-**架构保持一致,但实现方式不同:**
-- Android: Gradle 模块化
-- HarmonyOS: oh-package.json5 模块化
-
----
-
-## 📦 模块结构设计
-
-### 1. base-core(基础设施层)
-
-**职责:**
-- 定义接口(给 capability 模块实现)
-- 基础实现(日志、网络、存储)
-- 第三方库管理(统一版本)
-
-**HarmonyOS 实现要点:**
-
-```
-base-core/
-├── src/main/ets/
-│   ├── core/
-│   │   ├── log/
-│   │   │   ├── ILog.ets                    # 日志接口(与 Android 保持一致)
-│   │   │   └── impl/
-│   │   │       ├── HilogLogger.ets         # 基于 @kit.PerformanceAnalysisKit/hilog
-│   │   │       └── NoOpLogger.ets          # 空日志实现
-│   │   ├── network/
-│   │   │   └── NetworkManager.ets           # HTTP 请求管理器(基于 @kit.NetworkKit/http)
-│   │   ├── storage/
-│   │   │   ├── IStorage.ets                # 存储接口(与 Android 保持一致)
-│   │   │   └── StorageImpl.ets              # 基于 @kit.PreferencesKit/preferences
-│   │   ├── push/
-│   │   │   └── IPushService.ets            # 推送服务接口
-│   │   ├── share/
-│   │   │   ├── IShareService.ets            # 分享服务接口
-│   │   │   └── IShareCallback.ets          # 分享回调接口
-│   │   └── util/
-│   │       └── IUtil.ets                   # 工具类接口
-│   └── index.ets                            # 模块导出入口
-├── oh-package.json5
-└── README.md
-```
-
-**关键差异:**
-- ✅ 使用 `@kit.PerformanceAnalysisKit/hilog` 替代 Timber
-- ✅ 使用 `@kit.NetworkKit/http` 替代 Retrofit/OkHttp
-- ✅ 使用 `@kit.PreferencesKit/preferences` 替代 SharedPreferences
-- ✅ 使用 ArkTS 语言替代 Kotlin
-
----
-
-### 2. base-common(业务封装层)
-
-**职责:**
-- 封装 base-core 的接口,提供便捷调用
-- 业务工具封装(配置、网络、UI、权限等)
-- MVVM 架构封装
-- 完整业务功能(认证、版本更新等)
-
-**HarmonyOS 实现要点:**
-
-```
-base-common/
-├── src/main/ets/
-│   ├── common/
-│   │   ├── auth/
-│   │   │   ├── AuthManager.ets             # 认证管理器(与 Android 逻辑一致)
-│   │   │   ├── storage/
-│   │   │   │   └── TokenStore.ets           # Token 存储(使用 StorageImpl)
-│   │   │   ├── datasource/
-│   │   │   │   ├── remote/
-│   │   │   │   │   └── AuthRemoteDataSource.ets
-│   │   │   │   └── local/
-│   │   │   │       └── AuthLocalDataSource.ets
-│   │   │   ├── repository/
-│   │   │   │   └── AuthRepository.ets
-│   │   │   ├── model/
-│   │   │   │   ├── LoginRequest.ets
-│   │   │   │   └── LoginResponse.ets
-│   │   │   └── pages/
-│   │   │       ├── LoginPage.ets            # 登录页(ArkUI 声明式 UI)
-│   │   │       └── RegisterPage.ets         # 注册页(ArkUI 声明式 UI)
-│   │   ├── network/
-│   │   │   ├── NetworkHelper.ets             # 网络管理器封装
-│   │   │   ├── ApiServiceFactory.ets        # API 服务工厂
-│   │   │   ├── ApiBaseRemoteDataSource.ets  # 远程数据源基类
-│   │   │   └── ApiBaseRepository.ets        # Repository 基类
-│   │   ├── config/
-│   │   │   ├── ConfigManager.ets             # 配置管理(使用 StorageImpl)
-│   │   │   └── ServerConfigManager.ets       # 服务器配置管理
-│   │   ├── storage/
-│   │   │   └── StorageManager.ets             # 存储管理器封装
-│   │   ├── ui/
-│   │   │   ├── BasePage.ets                  # 页面基类(替代 BaseActivity/BaseFragment)
-│   │   │   ├── MessageHelper.ets            # 消息提示(使用 @ohos.promptAction)
-│   │   │   └── NavigationHelper.ets          # 路由导航(使用 router)
-│   │   ├── dialog/
-│   │   │   └── DialogHelper.ets              # 对话框封装(使用 @ohos.promptAction)
-│   │   ├── permission/
-│   │   │   └── PermissionHelper.ets          # 权限管理(使用 @kit.AbilityKit)
-│   │   ├── version/
-│   │   │   ├── VersionUpdateManager.ets      # 版本更新管理器
-│   │   │   └── pages/
-│   │   │       └── UpdateDialog.ets           # 更新对话框(ArkUI)
-│   │   ├── launch/
-│   │   │   ├── AppInitializer.ets           # 应用初始化管理器
-│   │   │   └── LaunchPage.ets                # 启动页(ArkUI)
-│   │   └── socketio/
-│   │       └── SocketIOManager.ets            # SocketIO 管理器
-│   └── index.ets
-├── oh-package.json5
-└── README.md
-```
-
-**关键差异:**
-- ✅ 使用 ArkUI 声明式 UI 替代 ViewBinding/XML
-- ✅ 使用 `router` 模块替代 ARouter
-- ✅ 使用 `@ohos.promptAction` 替代 Toast/Snackbar
-- ✅ 使用 `@kit.AbilityKit` 处理权限
-- ✅ 页面基类使用 `@Component` 装饰器
-
----
-
-### 3. capability-xxx(能力层)
-
-**职责:**
-- 实现 base-core 定义的接口
-- 封装第三方 SDK 或系统能力
-
-**模块列表:**
-
-```
-capability-socketio/          # Socket.IO 能力
-capability-ble/               # BLE 蓝牙能力
-capability-nfc/               # NFC 能力
-capability-qrcode/            # 二维码能力
-capability-push/              # 推送能力(极光推送)
-capability-share/             # 分享能力(友盟分享 + 微信 SDK)
-```
-
-**关键差异:**
-- ✅ 推送:继续使用极光推送(JPush 已支持 HarmonyOS)
-- ✅ 分享:使用友盟分享 SDK(与 Android 保持一致)
-- ✅ 微信分享:微信 SDK 回调处理(需要特殊处理,见下方说明)
-- ✅ BLE/NFC:使用 HarmonyOS 原生 API
-
----
-
-### 4. entry(业务层)
-
-**职责:**
-- 应用入口
-- 业务页面实现
-- 模块初始化
-
-**HarmonyOS 实现要点:**
-
-```
-entry/
-├── src/main/ets/
-│   ├── entryability/
-│   │   └── EntryAbility.ets                 # 应用入口 Ability
-│   ├── pages/
-│   │   ├── MainPage.ets                     # 主页面
-│   │   └── ...
-│   └── Application.ets                       # 应用初始化(替代 Application)
-├── src/main/module.json5
-└── oh-package.json5
-```
-
----
-
-## 🔄 关键技术映射
-
-### 1. 存储系统
-
-| Android | HarmonyOS | 说明 |
-|---------|-----------|------|
-| SharedPreferences | @kit.PreferencesKit/preferences | 键值存储 |
-| StorageImpl | StorageImpl (基于 preferences) | 统一存储实现 |
-| TokenStore | TokenStore (使用 StorageImpl) | Token 存储 |
-
-**实现要点:**
-- 保持接口一致(IStorage)
-- 底层使用 HarmonyOS preferences API
-- 业务层无需感知差异
-
----
-
-### 2. 网络请求
-
-| Android | HarmonyOS | 说明 |
-|---------|-----------|------|
-| Retrofit + OkHttp | @kit.NetworkKit/http | HTTP 客户端 |
-| Gson | JSON.parse/stringify | JSON 解析 |
-| Coroutines | Promise/async-await | 异步处理 |
-
-**实现要点:**
-- 封装 http 模块,提供类似 Retrofit 的接口
-- 统一错误处理和响应解析
-- 保持 Repository 模式一致
-
----
-
-### 3. UI 框架
-
-| Android | HarmonyOS | 说明 |
-|---------|-----------|------|
-| Activity/Fragment | Page (@Component) | 页面组件 |
-| ViewBinding | ArkUI 声明式 | UI 构建 |
-| Material Design | HarmonyOS Design | 设计规范 |
-| Toast/Snackbar | @ohos.promptAction | 消息提示 |
-
-**实现要点:**
-- 使用 ArkUI 声明式 UI(类似 Flutter/React)
-- 保持业务逻辑层代码复用
-- UI 层完全重写
-
----
-
-### 4. 路由导航
-
-| Android | HarmonyOS | 说明 |
-|---------|-----------|------|
-| ARouter | router | 路由导航 |
-| Intent | Want | 页面跳转参数 |
-
-**实现要点:**
-- 封装 router 模块,提供统一接口
-- 保持路由路径和参数传递方式一致
-
----
-
-### 5. 生命周期
-
-| Android | HarmonyOS | 说明 |
-|---------|-----------|------|
-| Application.onCreate | EntryAbility.onCreate | 应用启动 |
-| Activity 生命周期 | Page 生命周期 | 页面生命周期 |
-| ProcessLifecycleOwner | AppLifecycleObserver | 应用前后台 |
-
-**实现要点:**
-- 封装生命周期管理,提供统一接口
-- 保持业务逻辑层代码复用
-
----
-
-### 6. 权限管理
-
-| Android | HarmonyOS | 说明 |
-|---------|-----------|------|
-| Activity.requestPermissions | @kit.AbilityKit | 权限请求 |
-| PermissionHelper | PermissionHelper (重写) | 权限封装 |
-
-**实现要点:**
-- 保持接口一致
-- 底层使用 HarmonyOS 权限 API
-
----
-
-## 📝 移植步骤
-
-### 阶段一:基础设施搭建(1-2周)
-
-**目标:** 建立基础架构,验证可行性
-
-**任务清单:**
-
-1. **创建模块结构**
-   - [ ] 创建 `base-core` 模块(oh-package.json5)
-   - [ ] 创建 `base-common` 模块
-   - [ ] 创建 `capability-socketio` 模块
-   - [ ] 配置模块依赖关系
-
-2. **实现基础能力**
-   - [ ] 实现 `ILog` 接口(基于 hilog)
-   - [ ] 实现 `IStorage` 接口(基于 preferences)
-   - [ ] 实现 `StorageImpl`(统一存储)
-   - [ ] 实现 `NetworkManager`(基于 http)
-
-3. **验证基础功能**
-   - [ ] 存储功能测试
-   - [ ] 网络请求测试
-   - [ ] 日志输出测试
-
----
-
-### 阶段二:核心业务功能(2-3周)
-
-**目标:** 移植核心业务逻辑
-
-**任务清单:**
-
-1. **认证模块**
-   - [ ] 移植 `TokenStore`(使用 StorageImpl)
-   - [ ] 移植 `AuthManager`
-   - [ ] 移植 `AuthRepository`
-   - [ ] 实现登录/注册页面(ArkUI)
-   - [ ] 测试登录/注册流程
-
-2. **网络封装**
-   - [ ] 封装 HTTP 请求(类似 Retrofit)
-   - [ ] 实现 `ApiServiceFactory`
-   - [ ] 实现 `ApiBaseRepository`
-   - [ ] 统一错误处理
-
-3. **配置管理**
-   - [ ] 移植 `ConfigManager`
-   - [ ] 移植 `ServerConfigManager`
-   - [ ] 使用 StorageImpl 存储配置
-
----
-
-### 阶段三:UI 和工具封装(2-3周)
-
-**目标:** 完善 UI 层和工具类
-
-**任务清单:**
-
-1. **UI 基础类**
-   - [ ] 实现 `BasePage`(页面基类)
-   - [ ] 实现 `MessageHelper`(消息提示)
-   - [ ] 实现 `DialogHelper`(对话框)
-   - [ ] 实现 `NavigationHelper`(路由导航)
-
-2. **工具类**
-   - [ ] 移植 `PermissionHelper`
-   - [ ] 移植 `UtilManager`
-   - [ ] 移植 `CrashHelper`(崩溃收集)
-
-3. **业务功能**
-   - [ ] 移植 `VersionUpdateManager`
-   - [ ] 实现版本更新对话框(ArkUI)
-   - [ ] 移植 `SocketIOManager`
-
----
-
-### 阶段四:能力层模块(2-3周)
-
-**目标:** 实现各能力模块
-
-**任务清单:**
-
-1. **SocketIO 能力**
-   - [ ] 实现 SocketIO 客户端(基于 HarmonyOS WebSocket)
-   - [ ] 实现 `SocketIORepository`
-   - [ ] 集成 Token 自动获取
-
-2. **其他能力**
-   - [ ] BLE 能力(基于 @kit.ConnectivityKit)
-   - [ ] NFC 能力(基于 @kit.ConnectivityKit)
-   - [ ] 二维码能力(基于 @kit.BarcodeKit)
-   - [ ] 推送能力(基于极光推送)
-   - [ ] 分享能力(友盟分享 + 微信 SDK)
-     - ⚠️ **必须参考友盟官方文档**:
-       - [友盟分享 HarmonyOS 集成指南](https://developer.umeng.com/docs/128606/detail/2938159)
-       - [友盟分享 HarmonyOS 微信平台配置](https://developer.umeng.com/docs/128606/detail/2938161)
-       - [友盟分享 HarmonyOS 回调处理](https://developer.umeng.com/docs/128606/detail/2938160)
-       - [友盟分享 HarmonyOS 常见问题](https://developer.umeng.com/docs/128606/detail/3002400)
-
----
-
-### 阶段五:业务层实现(2-3周)
-
-**目标:** 实现业务页面和功能
-
-**任务清单:**
-
-1. **应用初始化**
-   - [ ] 实现 `AppInitializer`
-   - [ ] 实现 `EntryAbility` 初始化
-   - [ ] 配置应用启动流程
-
-2. **业务页面**
-   - [ ] 实现主页面
-   - [ ] 实现各业务功能页面
-   - [ ] 集成能力模块
-
-3. **测试和优化**
-   - [ ] 功能测试
-   - [ ] 性能优化
-   - [ ] UI/UX 优化
-
----
-
-## 🔧 技术实现细节
-
-### 1. 模块依赖管理
-
-**HarmonyOS 使用 oh-package.json5:**
-
-```json5
-// base-core/oh-package.json5
-{
-  "name": "@xdz/base-core",
-  "version": "1.0.0",
-  "description": "基础设施层",
-  "main": "src/main/ets/index.ets",
-  "dependencies": {
-    "@kit.PerformanceAnalysisKit": "^1.0.0",
-    "@kit.NetworkKit": "^1.0.0",
-    "@kit.PreferencesKit": "^1.0.0"
-  }
-}
-
-// base-common/oh-package.json5
-{
-  "name": "@xdz/base-common",
-  "version": "1.0.0",
-  "dependencies": {
-    "@xdz/base-core": "file:../base-core"
-  }
-}
-```
-
----
-
-### 2. 存储实现示例
-
-```typescript
-// base-core/src/main/ets/core/storage/StorageImpl.ets
-import { preferences } from '@kit.PreferencesKit';
-
-export class StorageImpl implements IStorage {
-  private static instance: StorageImpl | null = null;
-  private dataPreferences: preferences.Preferences | null = null;
-  
-  static async init(context: Context): Promise<void> {
-    if (!this.instance) {
-      this.instance = new StorageImpl();
-      this.instance.dataPreferences = await preferences.getPreferences(context, 'xdz_storage_prefs');
-    }
-  }
-  
-  async putString(key: string, value: string): Promise<void> {
-    await this.dataPreferences?.put(key, value);
-    await this.dataPreferences?.flush();
-  }
-  
-  async getString(key: string, defaultValue: string = ''): Promise<string> {
-    return await this.dataPreferences?.get(key, defaultValue) ?? defaultValue;
-  }
-  
-  // ... 其他方法
-}
-```
-
----
-
-### 3. 网络请求封装示例
-
-```typescript
-// base-core/src/main/ets/core/network/NetworkManager.ets
-import { http } from '@kit.NetworkKit';
-
-export class NetworkManager {
-  private static instance: NetworkManager | null = null;
-  private httpRequest: http.HttpRequest | null = null;
-  
-  static getInstance(): NetworkManager {
-    if (!this.instance) {
-      this.instance = new NetworkManager();
-    }
-    return this.instance;
-  }
-  
-  async request<T>(url: string, options: http.RequestOptions): Promise<T> {
-    return new Promise((resolve, reject) => {
-      http.createHttp().request(url, options)
-        .then((response: http.HttpResponse) => {
-          const data = JSON.parse(response.result.toString());
-          resolve(data as T);
-        })
-        .catch((error: Error) => {
-          reject(error);
-        });
-    });
-  }
-}
-```
-
----
-
-### 4. UI 页面基类示例
-
-```typescript
-// base-common/src/main/ets/common/ui/BasePage.ets
-import { Component } from '@kit.ArkUI';
-
-@Component
-export abstract class BasePage {
-  // 页面状态管理
-  protected loading: boolean = false;
-  protected error: string | null = null;
-  
-  // 生命周期方法(与 Android 保持一致)
-  onPageShow(): void {
-    // 页面显示
-  }
-  
-  onPageHide(): void {
-    // 页面隐藏
-  }
-  
-  // 通用方法
-  protected showLoading(): void {
-    this.loading = true;
-  }
-  
-  protected hideLoading(): void {
-    this.loading = false;
-  }
-  
-  protected showError(message: string): void {
-    this.error = message;
-  }
-}
-```
-
----
-
-### 5. 路由导航封装示例
-
-```typescript
-// base-common/src/main/ets/common/router/NavigationHelper.ets
-import { router } from '@kit.ArkUI';
-
-export class NavigationHelper {
-  // 基础跳转
-  static navigate(path: string, params?: Record<string, Object>): void {
-    router.pushUrl({
-      url: path,
-      params: params
-    });
-  }
-  
-  // 带结果回调跳转
-  static navigateForResult(
-    path: string,
-    params: Record<string, Object>,
-    onResult: (result: Object) => void
-  ): void {
-    router.pushUrl({
-      url: path,
-      params: params
-    }).then(() => {
-      // 监听返回结果
-      router.addObserver({
-        onResult: (result: router.Result) => {
-          onResult(result);
-        }
-      });
-    });
-  }
-}
-```
-
----
-
-## ⚠️ 特殊功能处理
-
-### 1. 微信分享回调处理(重要)
-
-**Android 版本的特殊性:**
-
-在 Android 版本中,微信分享回调 Activity(`WXEntryActivity`)必须放在 `base-core` 模块中,原因如下:
-
-1. **微信 SDK 要求**:微信 SDK 要求回调 Activity 必须在应用包名的 `wxapi` 子包下
-   - 包名必须是:`com.narutohuo.xindazhou.wxapi.WXEntryActivity`
-   - 不能使用模块的 namespace(如 `com.narutohuo.xindazhou.core.wxapi`)
-
-2. **架构设计**:
-   - 文件位置:`base-core/src/main/java/com/narutohuo/xindazhou/wxapi/WXEntryActivity.kt`
-   - 包名使用:`com.narutohuo.xindazhou.wxapi`(应用包名,不是模块 namespace)
-   - 通过 ARouter 依赖注入获取 `IShareCallback` 实现,实现解耦
-
-3. **AndroidManifest 配置**:
-   ```xml
-   <!-- base-core/src/main/AndroidManifest.xml -->
-   <activity
-       android:name="com.narutohuo.xindazhou.wxapi.WXEntryActivity"
-       android:exported="true"
-       android:theme="@android:style/Theme.Translucent.NoTitleBar" />
-   ```
-
-**HarmonyOS 版本的处理方案:**
-
-⚠️ **重要:需要参考友盟官方文档进行配置**
-
-友盟分享 SDK 已支持 HarmonyOS,但具体的回调处理方式需要参考友盟官方文档:
-
-1. **友盟官方文档**:
-   - [友盟分享 HarmonyOS 集成指南](https://developer.umeng.com/docs/128606/detail/2938159)
-   - [友盟分享 HarmonyOS 微信平台配置](https://developer.umeng.com/docs/128606/detail/2938161)
-   - [友盟分享 HarmonyOS 回调处理](https://developer.umeng.com/docs/128606/detail/2938160)
-   - [友盟分享 HarmonyOS 常见问题](https://developer.umeng.com/docs/128606/detail/3002400)
-
-2. **回调机制**:
-   - HarmonyOS 使用 `Want` 和 `Ability` 处理回调(与 Android 的 Activity 不同)
-   - 需要在 `module.json5` 中配置回调 Ability
-   - **具体配置方式请参考友盟官方文档**
-
-3. **实现位置**:
-   - 文件位置:`base-core/src/main/ets/wxapi/WXEntryAbility.ets`(待确认)
-   - 包名使用:应用包名(与 Android 保持一致)
-   - **具体实现方式请参考友盟官方文档**
-
-4. **module.json5 配置**:
-   - 需要在 `module.json5` 中添加微信相关的配置
-   - 需要配置 `querySchemes` 以判断是否安装微信(避免异常状态码 17700056)
-   - **具体配置请参考友盟官方文档**
-
-**注意事项:**
-- ⚠️ **必须参考友盟官方文档**:HarmonyOS 的微信分享回调处理方式与 Android 不同,需要严格按照友盟官方文档进行配置
-- ⚠️ **配置 querySchemes**:在 `module.json5` 中需要添加微信的 `querySchemes` 配置,否则可能返回异常状态码 17700056
-- ✅ HarmonyOS 中也需要将微信回调 Ability 放在 `base-core` 模块(待确认)
-- ✅ 包名使用应用包名,保持与 Android 一致
-- ✅ 友盟分享 SDK 已支持 HarmonyOS,但具体实现方式需要参考官方文档
-
----
-
-### 2. 极光推送集成
-
-**Android 版本:**
-- 使用极光推送 SDK
-- 在 `capability-push` 模块中实现 `IPushService` 接口
-
-**HarmonyOS 版本:**
-- 极光推送已支持 HarmonyOS(通过华为开发者联盟审核)
-- 继续使用极光推送 SDK
-- 在 `capability-push` 模块中实现 `IPushService` 接口
-- 需要确认极光推送 HarmonyOS SDK 的集成方式
-
-**集成步骤:**
-1. 确认极光推送 HarmonyOS SDK 版本和集成方式
-2. 在 `capability-push/oh-package.json5` 中添加依赖
-3. 实现 `IPushService` 接口
-4. 配置推送权限和回调
-
----
-
-### 3. 友盟分享集成
-
-**Android 版本:**
-- 使用友盟分享 SDK
-- 在 `capability-share` 模块中实现 `IShareService` 接口
-- 支持微信、QQ、微博等平台
-
-**HarmonyOS 版本:**
-- ✅ **友盟分享 SDK 已支持 HarmonyOS**
-- 继续使用友盟分享 SDK(与 Android 保持一致)
-- 需要参考友盟官方文档进行集成:
-  - [友盟分享 HarmonyOS 集成指南](https://developer.umeng.com/docs/128606/detail/2938159)
-  - [友盟分享 HarmonyOS 微信平台配置](https://developer.umeng.com/docs/128606/detail/2938161)
-  - [友盟分享 HarmonyOS 回调处理](https://developer.umeng.com/docs/128606/detail/2938160)
-  - [友盟分享 HarmonyOS 常见问题](https://developer.umeng.com/docs/128606/detail/3002400)
-
-**集成要点:**
-1. 在 `module.json5` 中配置微信相关的 `querySchemes`(避免异常状态码 17700056)
-2. 配置微信分享回调 Ability(参考友盟文档)
-3. 初始化友盟分享 SDK(与 Android 类似,但需要适配 HarmonyOS API)
-4. 实现分享回调处理(使用 Ability 替代 Activity)
-
----
-
-## 🎨 HarmonyOS 特色功能
-
-### 1. 分布式能力
-
-**Android 无对应功能,HarmonyOS 独有:**
-- 分布式数据管理
-- 分布式设备管理
-- 跨设备协同
-
-**建议:**
-- 在 `base-core` 中预留分布式能力接口
-- 在 `capability-xxx` 中实现具体分布式功能
-
----
-
-### 2. 卡片能力
-
-**Android Widget 的 HarmonyOS 版本:**
-- 桌面卡片
-- 服务卡片
-
-**建议:**
-- 在 `base-common` 中封装卡片管理
-- 提供统一的卡片创建和管理接口
-
----
-
-### 3. 原子化服务
-
-**HarmonyOS 特色:**
-- 免安装运行
-- 跨设备流转
-
-**建议:**
-- 考虑将部分功能模块原子化
-- 在架构中预留原子化服务支持
-
----
-
-## ⚠️ 注意事项
-
-### 1. 语言差异
-
-- **Android**: Kotlin(JVM)
-- **HarmonyOS**: ArkTS(TypeScript 超集)
-
-**处理方式:**
-- 业务逻辑尽量保持算法一致
-- UI 层完全重写
-- 接口定义保持一致
-
----
-
-### 2. 异步处理
-
-- **Android**: Coroutines + Flow
-- **HarmonyOS**: Promise + async-await
-
-**处理方式:**
-- 封装异步处理,提供统一接口
-- 保持业务逻辑层代码结构一致
-
----
-
-### 3. 依赖管理
-
-- **Android**: Gradle + Maven
-- **HarmonyOS**: oh-package.json5 + npm
-
-**处理方式:**
-- 使用 oh-package.json5 管理依赖
-- 本地模块使用 `file:../` 引用
-
----
-
-### 4. 构建系统
-
-- **Android**: Gradle
-- **HarmonyOS**: Hvigor
-
-**处理方式:**
-- 使用 Hvigor 构建系统
-- 配置构建脚本
-
----
-
-## 📊 移植优先级
-
-### 高优先级(必须)
-
-1. ✅ **base-core** - 基础设施层
-2. ✅ **base-common/auth** - 认证模块
-3. ✅ **base-common/network** - 网络封装
-4. ✅ **base-common/storage** - 存储封装
-5. ✅ **capability-socketio** - SocketIO 能力
-
-### 中优先级(重要)
-
-1. ⚠️ **base-common/ui** - UI 基础类
-2. ⚠️ **base-common/version** - 版本更新
-3. ⚠️ **base-common/launch** - 启动管理
-4. ⚠️ **capability-ble** - BLE 能力
-5. ⚠️ **capability-nfc** - NFC 能力
-
-### 低优先级(可选)
-
-1. ⚠️ **capability-push** - 推送能力(极光推送,需确认 HarmonyOS SDK)
-2. ⚠️ **capability-share** - 分享能力(友盟分享,需确认 HarmonyOS 支持)
-3. ⏸️ **capability-qrcode** - 二维码能力
-
----
-
-## 📅 时间估算
-
-| 阶段 | 时间 | 说明 |
-|------|------|------|
-| 阶段一:基础设施搭建 | 1-2周 | 建立基础架构 |
-| 阶段二:核心业务功能 | 2-3周 | 认证、网络、存储 |
-| 阶段三:UI 和工具封装 | 2-3周 | UI 基础类、工具类 |
-| 阶段四:能力层模块 | 2-3周 | SocketIO、BLE、NFC 等 |
-| 阶段五:业务层实现 | 2-3周 | 业务页面、测试优化 |
-| **总计** | **9-14周** | 约 2-3.5 个月 |
-
----
-
-## ✅ 验收标准
-
-### 功能验收
-
-- [ ] 所有核心功能正常运行
-- [ ] 登录/注册流程完整
-- [ ] 网络请求正常
-- [ ] 存储功能正常
-- [ ] SocketIO 连接正常
-
-### 性能验收
-
-- [ ] 页面加载速度 < 1s
-- [ ] 网络请求响应时间 < 2s
-- [ ] 内存占用合理
-- [ ] 无内存泄漏
-
-### 代码质量
-
-- [ ] 代码结构清晰
-- [ ] 注释完整
-- [ ] 无编译警告
-- [ ] 符合 HarmonyOS 开发规范
-
----
-
-## 📚 参考资料
-
-- [HarmonyOS 官方文档](https://developer.harmonyos.com/)
-- [ArkTS 语言规范](https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-overview-0000001477981205-V3)
-- [ArkUI 开发指南](https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-components-summary-0000001478341181-V3)
-- [HarmonyOS 网络开发](https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-http-0000001477981209-V3)
-
----
-
-## 🔄 后续优化
-
-### 短期优化(1-2个月)
-
-1. 性能优化
-2. UI/UX 优化
-3. 错误处理完善
-4. 日志系统完善
-
-### 长期优化(3-6个月)
-
-1. 分布式能力集成
-2. 卡片能力开发
-3. 原子化服务支持
-4. 跨设备协同功能
-
----
-
-## 📝 总结
-
-本移植方案保持与 Android 版本架构一致,同时充分利用 HarmonyOS 的特色能力。通过分阶段实施,确保每个阶段可独立验证,降低移植风险。
-
-**关键成功因素:**
-1. ✅ 保持架构一致性
-2. ✅ 充分利用鸿蒙特色
-3. ✅ 代码复用最大化
-4. ✅ 渐进式迁移
-
----
-
-**文档版本:** v1.0  
-**创建时间:** 2024-12  
-**最后更新:** 2024-12
-