Skip to content

plae-tljg/Image_Download_Organizer

Repository files navigation

下载整理器 (Download Organizer)

一个用于整理下载图片的 Android 应用,支持自定义层级文件夹结构。

docs/assets/images/1745905707483.jpeg

功能特性

  • 📁 层级分类系统:支持无限层级(分类 → 子分类 → 子子分类)
  • 🎨 可配置设置:自定义基础文件夹名称(如 "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

快速开始

1. 环境要求

  • Android Studio Hedgehog (2023.1.1) 或更高版本
  • Android SDK API 24+ (Android 7.0+)
  • Kotlin 1.9.10+
  • Gradle 8.0+

2. 构建项目

# 构建调试版本
./gradlew build

# 或直接安装调试版本到设备
./gradlew installDebug

3. 安装到设备

调试版本(开发使用)

# 连接 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" 功能,它会自动处理签名和对齐。

4. 使用 Android Studio 构建发布版本

  1. 打开项目
  2. 选择 Build > Generate Signed Bundle / APK
  3. 选择 APK
  4. 选择或创建密钥库
  5. 选择 release 构建类型
  6. 点击 Finish
  7. 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/

使用指南

1. 设置源文件夹

  1. 打开应用设置
  2. 在"源文件夹"部分,启用需要的文件夹
  3. 点击"添加"按钮添加自定义文件夹
  4. 使用 Google 文件选择器选择文件夹

2. 创建分类

  1. 进入"分类管理"
  2. 点击"添加分类"
  3. 输入分类名称
  4. 选择存储文件夹
  5. 可选择父分类创建子分类

3. 整理图片

  1. 在主页浏览图片
  2. 点击图片进入预览
  3. 点击"整理"按钮
  4. 选择目标分类
  5. 图片将移动到对应文件夹

4. 自动解析目录

  1. 在设置中选择基础文件夹
  2. 点击"自动解析"按钮
  3. 应用会自动扫描文件夹结构并创建分类

性能优化

应用内置了多项性能优化:

  • 智能缓存:扫描结果缓存 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!

About

phone apps for managing image downloaded

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors