
CloudFlare Assistant 是一款功能全面的 Cloudflare 服务管理 Android 应用,采用现代化架构和 Material Design 3 设计语言,提供完整的 Cloudflare 生态系统管理能力。
核心框架:
├── Kotlin 1.9.20 # 主开发语言
├── Android SDK 26-36 # 支持 Android 8.0+ (minSdk=26, targetSdk=36)
└── Gradle 8.13 # 构建系统
Jetpack 组件:
├── Room 2.6.1 # 数据持久化
├── Navigation 2.7.6 # 导航管理
├── ViewModel & LiveData 2.7.0 # 架构组件
├── DataStore 1.0.0 # 偏好设置
└── WorkManager 2.9.0 # 后台任务
网络层:
├── Retrofit 2.9.0 # HTTP 客户端
├── OkHttp 4.12.0 # 网络层
├── AWS SDK S3 2.81.1 # R2 对象存储 (S3 兼容)
└── Gson 2.10.1 # JSON 解析
依赖注入:
└── Hilt 2.48 # 依赖注入框架
UI 设计:
├── Material Design 1.11.0 # 设计语言
└── RecyclerView # 列表展示 (通过其他依赖)
其他工具:
├── Coroutines 1.7.3 # 协程支持
└── Timber 5.0.1 # 日志框架
app/
├── src/main/
│ ├── java/com/muort/upworker/
│ │ ├── AccountSelectionAdapter.kt # 账号选择适配器
│ │ ├── CloudFlareApp.kt # Application 类
│ │ ├── MainActivity.kt # 主 Activity
│ │ ├── core/ # 核心层
│ │ │ ├── database/ # 数据库层
│ │ │ │ ├── AccountDao.kt # 账号数据访问对象
│ │ │ │ ├── AppDatabase.kt # 数据库实例
│ │ │ │ ├── DatabaseModule.kt # 数据库依赖注入模块
│ │ │ │ ├── WebDavConfigDao.kt # WebDAV 配置 DAO
│ │ │ │ └── ZoneDao.kt # Zone 数据访问对象
│ │ │ ├── log/ # 日志相关
│ │ │ ├── model/ # 数据模型
│ │ │ ├── network/ # 网络层
│ │ │ │ ├── AppModule.kt # 应用依赖注入模块
│ │ │ │ ├── CloudFlareApi.kt # Cloudflare API 接口
│ │ │ │ ├── LogOkHttpInterceptor.kt # 日志拦截器
│ │ │ │ ├── NetworkModule.kt # 网络依赖注入模块
│ │ │ │ └── R2S3Client.kt # R2 S3 客户端
│ │ │ ├── repository/ # 数据仓库层
│ │ │ │ ├── AccountRepository.kt # 账号仓库
│ │ │ │ ├── BackupRepository.kt # 备份仓库
│ │ │ │ ├── D1Repository.kt # D1 数据库仓库
│ │ │ │ ├── DnsRepository.kt # DNS 仓库
│ │ │ │ ├── KvRepository.kt # KV 仓库
│ │ │ │ ├── PagesRepository.kt # Pages 仓库
│ │ │ │ ├── R2Repository.kt # R2 仓库
│ │ │ │ ├── WorkerRepository.kt # Worker 仓库
│ │ │ │ └── ZoneRepository.kt # Zone 仓库
│ │ │ ├── util/ # 工具类
│ │ │ └── webdav/ # WebDAV 相关
│ │ └── feature/ # 功能模块层
│ │ ├── account/ # 账号管理模块
│ │ │ ├── AccountEditFragment.kt # 账号编辑界面
│ │ │ ├── AccountListFragment.kt # 账号列表界面
│ │ │ └── AccountViewModel.kt # 账号 ViewModel
│ │ ├── backup/ # 备份模块
│ │ │ ├── BackupFilesAdapter.kt # 备份文件适配器
│ │ │ ├── BackupFragment.kt # 备份界面
│ │ │ └── BackupViewModel.kt # 备份 ViewModel
│ │ ├── d1/ # D1 数据库模块
│ │ │ ├── D1DataAdapter.kt # D1 数据适配器
│ │ │ ├── D1DataViewerFragment.kt # D1 数据查看界面
│ │ │ ├── D1ManagerFragment.kt # D1 管理界面
│ │ │ └── D1ViewModel.kt # D1 ViewModel
│ │ ├── dns/ # DNS 模块
│ │ │ ├── DnsFragment.kt # DNS 界面
│ │ │ └── DnsViewModel.kt # DNS ViewModel
│ │ ├── home/ # 主界面模块
│ │ │ └── HomeFragment.kt # 主界面
│ │ ├── kv/ # KV 存储模块
│ │ │ ├── KvFragment.kt # KV 界面
│ │ │ └── KvViewModel.kt # KV ViewModel
│ │ ├── log/ # 日志模块
│ │ │ └── LogActivity.kt # 日志 Activity
│ │ ├── pages/ # Pages 模块
│ │ │ ├── PagesFragment.kt # Pages 界面
│ │ │ └── PagesViewModel.kt # Pages ViewModel
│ │ ├── r2/ # R2 存储模块
│ │ │ ├── ObjectAdapter.kt # 对象适配器
│ │ │ ├── R2Fragment.kt # R2 界面
│ │ │ └── R2ViewModel.kt # R2 ViewModel
│ │ ├── route/ # 路由模块
│ │ │ └── RouteFragment.kt # 路由界面
│ │ └── worker/ # Worker 模块
│ │ ├── WorkerFragment.kt # Worker 界面
│ │ └── WorkerViewModel.kt # Worker ViewModel
│ ├── res/ # 资源文件
│ │ ├── layout/ # 布局文件
│ │ ├── values/ # 值文件
│ │ └── drawable/ # 图片资源
│ └── AndroidManifest.xml # 应用清单
└── build.gradle.kts # 应用构建配置
# 1. 克隆仓库
git clone https://github.com/a422015028/CloudFlareAssistant.git
# 2. 进入项目目录
cd CloudFlareAssistant
# 3. 清理项目(可选)
./gradlew clean
# 4. 编译 Debug 版本
./gradlew assembleDebug
# 5. 编译 Release 版本
./gradlew assembleRelease
# 6. 安装到连接的设备
./gradlew installDebug
| 功能模块 | 状态 | 说明 |
|---|---|---|
| 多账号管理 | ✅ 已完成 | 支持添加、编辑、删除、切换账号 |
| D1 数据库管理 | ✅ 已完成 | 数据库创建、SQL 执行、数据浏览 |
| Workers 管理 | ✅ 已完成 | 上传、列表、删除脚本,支持绑定配置 |
| 路由管理 | ✅ 已完成 | 创建、更新、删除路由 |
| DNS 管理 | ✅ 已完成 | 支持 20+ 种记录类型 |
| KV 存储 | ✅ 已完成 | 命名空间和键值对管理 |
| Pages 管理 | ✅ 已完成 | 项目和域名管理 |
| R2 对象存储 | ✅ 已完成 | Bucket 和对象管理 |
| 日志系统 | ✅ 已完成 | 实时日志显示和语法高亮 |
| WebDAV 备份 | ✅ 已完成 | 自动备份和恢复 |
| Material Design 3 | ✅ 已完成 | 统一的界面风格 |
定义 API 接口
在 CloudFlareApi.kt 添加接口方法
创建数据模型
在 Models.kt 定义数据类
实现 Repository
在 core/repository/ 创建仓库类处理数据逻辑
创建 ViewModel
在 feature/ 对应模块创建 ViewModel
构建 UI
创建 Fragment 和对应的 XML 布局
MaterialAlertDialogBuilder# 运行单元测试
./gradlew test
# 运行 UI 测试
./gradlew connectedAndroidTest