# base-core 模块说明

## 📋 模块定位

**base-core** 是基础设施层，提供：
- 接口定义（给 capability 模块实现）
- 基础实现（ILog、NetworkManager）
- 第三方库管理（统一版本，避免冲突）

## 🎯 使用原则

- ✅ **能力层（capability 模块）可以调用 base-core**
- ❌ **业务层（app 模块）不直接调用 base-core**，应该通过 base-common

---

## 📁 目录结构

### 1. 接口定义

```
✅ bridge/IBridge.kt          - H5通信、模块间通信、事件总线管理
✅ config/IConfig.kt          - 配置管理、环境切换、功能开关、版本管理
✅ executor/IExecutor.kt      - 线程池管理、异步任务执行、定时任务
✅ push/IPushService.kt       - 推送服务接口
✅ share/IShareService.kt     - 分享服务接口
✅ share/IShareCallback.kt    - 分享回调接口
✅ storage/IStorage.kt        - 存储服务接口（键值存储、文件存储、数据库存储）
✅ util/IUtil.kt              - 工具类接口（时间处理、字符串处理、加密解密）
```

### 2. 基础实现

```
✅ log/ILog.kt                - 日志接口定义
✅ log/impl/TimberLog.kt      - Timber 日志实现（基于 Timber 库）
✅ log/impl/NoOpLog.kt        - 空日志实现（生产环境使用）
✅ network/NetworkManager.kt - Retrofit/OkHttp 管理器（单例模式）
```

### 3. 第三方库（在 build.gradle 中）

```gradle
✅ Retrofit & OkHttp          - api("com.squareup.retrofit2:retrofit:2.9.0")
✅ Gson                       - api("com.google.code.gson:gson:2.10.1")
✅ Glide                      - api("com.github.bumptech.glide:glide:4.16.0")
✅ Coroutines                 - api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
✅ ARouter                    - api("com.alibaba:arouter-api:1.5.2")
✅ Timber                     - api("com.jakewharton.timber:timber:5.0.1")
⏸️ 友盟 SDK                  - 暂时保留（待后续决定）
```

---

## 💡 核心作用

### 1. 定义接口（解耦）

**capability 模块实现接口：**
```kotlin
// capability-push 实现 IPushService
@Route(path = "/push/service")
class PushServiceImpl : IPushService {
    override fun initialize(...) {
        ILog.d("PushService", "初始化")  // 使用 base-core 的 ILog
        // 调用极光推送 SDK
    }
}
```

### 2. 提供基础能力（统一工具）

**capability 模块使用基础能力：**
```kotlin
// capability-push 使用 ILog
ILog.d("PushService", "推送成功")

// capability-share 使用 ILog
ILog.d("ShareService", "分享成功")

// capability 模块使用 NetworkManager
val retrofit = NetworkManager.getRetrofit()
```

### 3. 管理第三方库（版本统一）

所有模块通过 base-core 使用第三方库，避免版本冲突。

---

## 📝 使用示例

### capability 模块使用 base-core

```kotlin
// capability-push/src/.../PushServiceImpl.kt
import com.narutohuo.xindazhou.core.push.IPushService
import com.narutohuo.xindazhou.core.log.ILog
import com.narutohuo.xindazhou.core.network.NetworkManager

@Route(path = "/push/service")
class PushServiceImpl : IPushService {
    
    override fun initialize(context: Context, appKey: String) {
        // 使用 ILog 打日志
        ILog.d("PushService", "初始化推送服务: $appKey")
        
        // 使用 NetworkManager（如果需要）
        val retrofit = NetworkManager.getRetrofit()
        
        // 调用极光推送 SDK
        JPushInterface.init(context)
    }
}
```

---

## ⚠️ 注意事项

1. **接口实现由 app 模块提供**（通过 ARouter 注册）
2. **capability 模块实现接口**（如 IPushService、IShareService）
3. **业务层不直接使用 base-core**，应该通过 base-common

