一个用于整理下载图片的 Android 应用,支持自定义层级文件夹结构。
- 📁 层级分类系统:支持无限层级(分类 → 子分类 → 子子分类)
- 🎨 可配置设置:自定义基础文件夹名称(如 "00data"、"1img")
- 📸 多源扫描:扫描下载、DCIM、图片等文件夹
- 🗂️ 智能整理:将图片移动到自定义文件夹结构
- 🎯 批量操作:选择和整理多张图片
- 🔍 快速预览:支持图片和视频预览,支持缩放和滑动
- ⚡ 性能优化:智能缓存机制,避免重复扫描
app/
├── src/main/
│ ├── java/com/example/downloadorganizer/
│ │ ├── data/
│ │ │ ├── cache/ # 图片缓存系统
│ │ │ ├── local/
│ │ │ │ ├── database/ # Room 数据库和 DAO
│ │ │ │ ├── entities/ # 数据库实体
│ │ │ │ └── preferences/ # 应用偏好设置(可配置)
│ │ │ ├── model/ # 领域模型(Category, ImageItem)
│ │ │ ├── repository/ # 数据仓库
│ │ │ └── service/ # 服务层(MediaStore, 文件操作)
│ │ ├── domain/
│ │ │ └── mapper/ # 数据映射器
│ │ ├── di/ # Hilt 依赖注入模块
│ │ ├── ui/ # Compose UI 组件
│ │ └── util/ # 工具类和常量
│ └── res/ # 资源文件
- Kotlin 1.9.10+
- Jetpack Compose - 现代声明式 UI
- MVVM 架构 - 清晰的架构模式
- Hilt - 依赖注入
- Room - 本地数据库
- Coil - 图片加载
- Material 3 - 现代 Material Design
- Android Studio Hedgehog (2023.1.1) 或更高版本
- Android SDK API 24+ (Android 7.0+)
- Kotlin 1.9.10+
- Gradle 8.0+
# 构建调试版本
./gradlew build
# 或直接安装调试版本到设备
./gradlew installDebug# 连接 Android 设备并启用 USB 调试
adb devices
# 安装调试版本
./gradlew installDebug最简单的方法 - 使用签名脚本:
# 1. 构建发布 APK
./gradlew assembleRelease
# 2. 运行签名脚本(自动使用 apksigner 进行 v2/v3 签名)
./SIGN_APK.sh
# 3. 安装
adb install -r app/build/outputs/apk/release/app-release.apk注意:Android 7.0+ 需要 v2/v3 签名,脚本会自动使用 apksigner 工具。
手动签名方法:
# 1. 构建发布 APK(未签名)
./gradlew assembleRelease
# APK 位置:app/build/outputs/apk/release/app-release-unsigned.apk
# 2. 创建密钥库(仅首次需要,默认密码:android)
keytool -genkey -v -keystore download-organizer.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias download-organizer \
-storepass android -keypass android \
-dname "CN=Download Organizer, OU=Development, O=Download Organizer, L=City, ST=State, C=CN"
# 3. 签名 APK
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \
-keystore download-organizer.jks \
-storepass android -keypass android \
app/build/outputs/apk/release/app-release-unsigned.apk \
download-organizer
# 4. 对齐 APK(优化)
zipalign -v 4 \
app/build/outputs/apk/release/app-release-unsigned.apk \
app/build/outputs/apk/release/app-release.apk
# 5. 安装发布版本
adb install -r app/build/outputs/apk/release/app-release.apk注意:发布版本需要签名。建议使用 Android Studio 的 "Build > Generate Signed Bundle / APK" 功能,它会自动处理签名和对齐。
- 打开项目
- 选择 Build > Generate Signed Bundle / APK
- 选择 APK
- 选择或创建密钥库
- 选择 release 构建类型
- 点击 Finish
- APK 将生成在
app/release/目录
当前版本配置(app/build.gradle.kts):
- 版本代码:1
- 版本名称:1.0.0
- 最小 SDK:24 (Android 7.0)
- 目标 SDK:34 (Android 14)
- 编译 SDK:34
依赖版本:
- Kotlin:1.9.10
- Android Gradle Plugin:8.1.0
- Hilt:2.48
- Compose Compiler:1.5.3
- 基础文件夹名称:默认 "00"(可自定义)
- 基础文件夹路径:默认 "00/1img"(可自定义)
- 默认文件夹:下载、DCIM、图片(可启用/禁用)
- 自定义文件夹:可添加无限个自定义源文件夹
- 动态管理:运行时添加、删除、启用/禁用文件夹
- 删除原文件:移动后是否删除原文件
- 自动扫描间隔:定期扫描间隔
分类支持无限嵌套:
anime (根分类)
└── eva (子分类)
├── others (子子分类)
└── characters (子子分类)
文件夹路径自动生成:
anime→{基础路径}/anime/anime/eva→{基础路径}/anime/eva/anime/eva/others→{基础路径}/anime/eva/others/
- 打开应用设置
- 在"源文件夹"部分,启用需要的文件夹
- 点击"添加"按钮添加自定义文件夹
- 使用 Google 文件选择器选择文件夹
- 进入"分类管理"
- 点击"添加分类"
- 输入分类名称
- 选择存储文件夹
- 可选择父分类创建子分类
- 在主页浏览图片
- 点击图片进入预览
- 点击"整理"按钮
- 选择目标分类
- 图片将移动到对应文件夹
- 在设置中选择基础文件夹
- 点击"自动解析"按钮
- 应用会自动扫描文件夹结构并创建分类
应用内置了多项性能优化:
- 智能缓存:扫描结果缓存 30 秒,避免重复扫描
- 增量加载:先显示源文件夹图片,后台加载分类图片
- 图片缓存:使用 Coil 进行图片缓存和优化加载
- 懒加载:使用 LazyColumn 只渲染可见项
查看性能日志:
adb logcat | grep -E "(ImagePreview|Gallery|MediaStore|ImageCache)"日志会显示:
- 扫描时间
- 缓存命中率
- 图片加载时间
详细文档请查看 docs/ 文件夹:
docs/00-getting-started/- 快速开始指南docs/01-analysis/- 技术分析docs/02-design/- 架构和 UI 设计docs/03-architecture/- 代码结构和框架设置docs/04-testing/- 测试指南docs/05-configuration/- 配置指南
✅ 已完成:
- 项目结构和构建配置
- 核心架构(Application、DI、数据库)
- 数据模型和实体
- 仓库层(支持层级分类)
- 可配置偏好设置系统
- UI 组件(Compose 屏幕)
- ViewModels
- 服务(MediaStore、文件操作)
- 图片缓存系统
- 性能优化
🚧 进行中:
- 持续优化性能
- 用户体验改进
[添加许可证信息]
欢迎提交 Issue 和 Pull Request!
