# 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