// DevEngine - 第三方框架解耦、一键替换第三方库、同类库多 Engine 组件化混合使用
implementation 'io.github.afkt:DevEngine:1.1.5'
- dev.engine | 根目录
- barcode | BarCode Engine 条形码、二维码处理
- cache | Cache Engine 有效期键值对缓存
- compress | Image Compress Engine 图片压缩
- image | Image Engine 图片加载、下载、转格式等
- json | JSON Engine 映射
- keyvalue | KeyValue Engine 键值对存储
- log | Log Engine 日志打印
- media | Media Selector Engine 多媒体资源选择
- permission | Permission Engine 权限申请
- storage | Storage Engine 外部、内部文件存储
- toast | Toast Engine 吐司提示
DevEngine(基于 DevAssist Engine 模块) 主要为了解决项目代码中对第三方框架强依赖使用、以及部分功能版本适配。
通过实现对应功能模块 Engine 接口,实现对应的方法功能, 对外无需关注实现代码,直接通过 DevXXXEngine 进行调用,实现对第三方框架解耦、一键替换第三方库、同类库多 Engine 混合使用、以及部分功能适配 ( 如外部文件存储 MediaStore 全局适配 ) 等
可通过 Key-Engine 实现对组件化、模块化各个 Module 使用同类型 Engine 不同库实现使用
已实现模块有(依赖第三方库实现列表如下展示):
- BarCode 条形码
- Cache 有效期键值对缓存
- Image Compress 图片压缩
- Image 图片加载、下载、转格式
- JSON 映射
- KeyValue 键值对存储
- Log 日志打印
- Media Selector 多媒体资源选择
- Permission 权限申请
- Storage Engine 外部、内部文件存储
- Toast Engine 吐司提示
该库会依赖第三方库导致项目体积变大等情况,可自行 copy 所需已实现代码进行修改使用
项目类结构 - 包目录
BarCode 条形码 - 包目录
可选实现方案:
- 依赖 ZXing 实现 ZXingEngineImpl
Cache 有效期键值对缓存 - 包目录
可选实现方案:
Image Compress 图片压缩 - 包目录
可选实现方案:
- 依赖 Luban 鲁班图片压缩 实现 LubanEngineImpl
Image 图片加载、下载、转格式 - 包目录
可选实现方案:
- 依赖 Glide 图片加载框架 实现 GlideEngineImpl
JSON 映射 - 包目录
可选实现方案:
-
依赖 Gson 实现 GsonEngineImpl
-
依赖 Fastjson2 实现 FastjsonEngineImpl
KeyValue 键值对存储 - 包目录
可选实现方案:
Log 日志打印 - 包目录
可选实现方案:
Media Selector 多媒体资源选择 - 包目录
可选实现方案:
Permission 权限申请 - 包目录
可选实现方案:
Storage Engine 外部、内部文件存储 - 包目录
可选实现方案:
Toast Engine 吐司提示 - 包目录
可选实现方案:
/**
* 初始化 Engine
*/
private fun initEngine(appContext: Application) {
// =========
// = 初始化 =
// =========
// =============
// = 完整版初始化 =
// =============
// 完整初始化 ( 全面使用该库调用该方法初始化即可 )
DevEngine.completeInitialize(appContext)
// ============
// = 部分初始化 =
// ============
// 不想使用完整初始化,可调用默认实现代码,单独进行初始化
// 初始化 Gson JSON Engine 实现
DevEngine.defaultGsonEngineImpl()
// 初始化 Fastjson JSON Engine 实现
DevEngine.defaultFastjsonEngineImpl()
// 初始化 DevLogger Log Engine 实现
DevEngine.defaultDevLoggerEngineImpl(logConfig)
// 初始化 Xxx Engine 实现
DevEngine.defaultXxxEngineImpl()
// =======
// = 使用 =
// =======
// =====================
// = 通过 DevEngine 使用 =
// =====================
// JSON Engine 映射
DevEngine.getJSON().xxx
// KeyValue Engine 键值对存储
DevEngine.getKeyValue().xxx
// Log Engine 日志打印
DevEngine.getLog().xxx
// Xxx Engine xxxxx
DevEngine.getXxxx().xxx
// =====================
// = 通过 DevAssist 使用 =
// =====================
// JSON Engine 映射
DevJSONEngine.getEngine().xxx
// KeyValue Engine 键值对存储
DevKeyValueEngine.getEngine().xxx
// Log Engine 日志打印
DevLogEngine.getEngine().xxx
// Xxx Engine xxxxx
DevXxxEngine.getEngine().xxx
// =======
// = 设置 =
// =======
// 设置 Engine 实现, 组件化、模块化可通过设置各个模块 Key 进行区分
DevEngine.getJSONAssist().setEngine(EngineImpl)
DevEngine.getJSONAssist().setEngine(Key, EngineImpl)
DevJSONEngine.setEngine(EngineImpl)
DevJSONEngine.setEngine(Key, EngineImpl)
// 使用 GSON
DevJSONEngine.setEngine(GsonEngineImpl())
// 使用 Fastjson
DevJSONEngine.setEngine(Key, FastjsonEngineImpl())
// GsonEngineImpl
DevJSONEngine.getEngine()
// FastjsonEngineImpl
DevJSONEngine.getEngine(Key)
}