好友
阅读权限10
听众
最后登录1970-1-1
|
星耀
发表于 2026-5-3 16:14
作为一个开发者,手机里总是装着各种小工具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 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|