宇宙盒子-CosmosBox工具箱1.3.2版本
作为一个开发者,手机里总是装着各种小工具App:JSON格式化、二维码生成、图片压缩...每个App只有一两个功能,却都要占用存储空间。于是我想:**能不能做一个"万能工具箱",把所有常用工具集成在一起,还能让用户自己添加新工具?**
## 项目亮点
### 1 真正的插件化架构
这不是简单的功能堆砌,而是设计了完整的插件系统:
```dart
// 插件 manifest.json 示例
{
"name": "我的插件",
"version": "1.0.0",
"permissions": ["storage", "network"],
"main": "index.html"
}
```
用户可以:
- 导入第三方插件(.cbplugin文件)
- 自己开发HTML/JS插件
- 从油猴脚本转换
- 在沙箱环境中安全运行
### 2 完善的WebView Bridge
为了让插件能与原生功能交互,我实现了一套完整的Bridge API:
```javascript
// 插件中可以调用原生功能
const result = await bridge.storage.get('key');
await bridge.clipboard.write('文本内容');
const image = await bridge.image.pick();
```
支持的功能:
- 本地存储读写
- 剪贴板操作
- 图片选择/保存
- 文件访问
- 网络请求
- 震动反馈
- 等等...
### 3 细粒度的权限管理
每个插件/工具都有独立的权限控制:
![权限管理截图]
用户可以:
- 查看每个工具的权限使用情况
- 随时开启/关闭特定权限
- 重置所有权限设置
- 查看权限使用历史
### 4 自动化工作流
这是我最满意的功能之一!可以串联多个工具:
```
输入文本 → JSON格式化 → Base64编码 → 复制到剪贴板
```
可视化编辑器,无需编程即可创建自动化流程。
## 技术实现
### 架构设计
```
┌─────────────────────────────┐
│ UI Layer (Pages) │
├─────────────────────────────┤
│ Business Logic Layer │
│ (Providers & Services) │
├─────────────────────────────┤
│ Data Layer │
│ (Hive, File System) │
├─────────────────────────────┤
│ Plugin Runtime Layer │
│ (WebView + Bridge) │
└─────────────────────────────┘
```
### 关键技术点
**1. 插件沙箱隔离**
```dart
// 每个插件运行在独立的WebView中
InAppWebView(
initialSettings: InAppWebViewSettings(
javaScriptEnabled: true,
allowFileAccess: false, // 禁止访问文件系统
// ... 其他安全设置
),
)
```
**2. 动态路由系统**
```dart
// 根据插件配置动态生成路由
class DynamicRouteGenerator {
static Route<dynamic>? generateRoute(RouteSettings settings) {
// 解析路径,匹配插件
final plugin = findPluginByPath(settings.name);
if (plugin != null) {
return MaterialPageRoute(
builder: (_) => PluginWebViewPage(plugin: plugin),
);
}
return null;
}
}
```
**3. 权限拦截器**
```dart
// 在Bridge层进行权限检查
Future<bool> checkPermission(String pluginId, String permission) async {
final hasPermission = await PermissionService.check(pluginId, permission);
if (!hasPermission) {
// 弹出权限请求对话框
return await requestPermission(pluginId, permission);
}
return true;
}
```
## 插件开发教程
开发一个插件超级简单,只需要3个文件:
**1. manifest.json** - 插件配置
```json
{
"name": "示例插件",
"version": "1.0.0",
"description": "这是一个示例插件",
"permissions": ["storage"
}
```
**2. index.html** - 主页面
```html
<!DOCTYPE html>
<html>
<head>
<title>示例插件</title>
</head>
<body>
<button onclick="saveData()">保存数据</button>
<script>
async function saveData() {
await bridge.storage.set('myKey', 'Hello World');
alert('保存成功!');
}
</script>
</body>
</html>
```
**3. 打包成 .cbplugin**
```bash
# 将文件夹压缩为zip,改名为.cbplugin即可
```
详细教程见应用内的"开发者文档"。
## 当前功能清单
37+内置工具
27种文件格式支持
插件系统
权限管理
工作流自动化
WebDAV备份
16个主题
粒子特效
错误日志
附上下载地址 :宇宙盒子https://wwazb.lanzout.com/b019vuqh1c密码:f5ip 自动化程度决定了长期维护的人力投入。 选型的时候别只看性能,生态和文档同样重要。 监控先铺上,不然出问题全靠猜。 文档写清楚能省掉后面大量的沟通成本。想请教下你们的监控是怎么做的? 这类方案在小规模下表现很好,上量之后瓶颈就出来了。有没有遇到过数据一致性的问题? 量不大之前没必要过度设计,够用就好。 自动化程度决定了长期维护的人力投入。你们的规模大概多少?想判断下方案是否适用。 同类的坑不同环境表现不一样,别人的经验只能参考。有没有遇到过数据一致性的问题? 这套配置在低配机器上也能跑,只是并发上不去。