-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.cursorrules
More file actions
155 lines (133 loc) · 5.04 KB
/
.cursorrules
File metadata and controls
155 lines (133 loc) · 5.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Cursor Rules for ImageModifier Project
## 项目概述
ImageModifier是一个Android应用项目,使用Kotlin和Jetpack Compose开发。主要功能是随机修改图片的像素点,支持批量处理图片,并将修改后的图片保存到公共目录供其他应用访问。提供基础像素修改和进阶AI干扰两种处理模式。
## 技术栈
- **语言**: Kotlin
- **UI框架**: Jetpack Compose
- **架构模式**: MVVM (Model-View-ViewModel)
- **构建工具**: Gradle (Kotlin DSL)
- **图片处理**: Android Bitmap API
- **图片加载**: Coil
- **存储API**: MediaStore API (Android 10+), 传统文件API (Android 9及以下)
## 代码规范
### Kotlin编码规范
- 使用驼峰命名法 (camelCase)
- 类名使用帕斯卡命名法 (PascalCase)
- 常量使用大写字母和下划线 (UPPER_SNAKE_CASE)
- 优先使用val而不是var
- 使用表达式函数体 (expression body) 当函数只有一行时
- 使用数据类 (data class) 用于数据模型
### Compose编码规范
- 使用@Composable注解标记可组合函数
- 函数名使用PascalCase
- 使用Modifier参数作为第一个参数
- 优先使用Material3组件
- 使用remember和derivedStateOf进行状态管理
- 使用LaunchedEffect处理副作用
### 文件组织
- 按功能模块组织代码
- UI组件放在ui/components目录下
- 主题相关文件放在ui/theme目录下
- 数据模型放在根包下
- 工具类放在utils包下
### 命名约定
- Activity: MainActivity
- ViewModel: MainViewModel
- 数据类: ImageItem, ImageManager
- UI组件: ImageGridItem, ImageListItem
- 工具类: ImageProcessor
## 项目结构
```
app/src/main/java/com/max/changeimage/
├── MainActivity.kt # 主Activity,包含3列网格布局和模式切换
├── MainViewModel.kt # 主ViewModel,处理双重模式管理
├── ImageItem.kt # 图片数据模型
├── ImageManager.kt # 图片管理器
├── ImageProcessor.kt # 图片处理工具,支持双重处理模式
└── ui/
├── components/ # UI组件
│ └── ImageGridItem.kt # 图片网格项,支持完整显示
└── theme/ # 主题
├── Color.kt
├── Theme.kt
└── Type.kt
```
## 依赖管理
- 使用Version Catalog管理依赖版本
- 在gradle/libs.versions.toml中定义版本
- 使用最新的稳定版本
## 权限要求
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE (Android 9及以下)
- READ_MEDIA_IMAGES (Android 13+)
## 功能特性
- 3列网格布局显示图片
- 支持多选图片
- 双重处理模式切换
- 基础模式:随机像素修改
- 进阶模式:多点协同AI干扰
- 批量处理图片
- 刷新图片列表
- 处理进度显示
- 公共目录保存图片
- 跨应用访问支持
- 媒体库集成
## 处理模式详解
### 基础模式 (BASIC_PIXEL_MODIFICATION)
- 随机选择单个像素点
- RGB值变化范围:±1
- 完全不可见的微小修改
- 主要用于文件哈希改变
### 进阶模式 (ADVANCED_AI_INTERFERENCE)
- 边缘区域噪声注入:使用Sobel算子检测边缘,添加±2扰动
- 纹理区域干扰:计算8x8块方差,在高纹理区域添加多点扰动
- 高频噪声注入:棋盘格模式的高频噪声
- 分布式随机扰动:1%像素点随机微小扰动
- 针对AI识别系统的特征干扰
## 图片保存策略
- **Android 10+**: 使用MediaStore API保存到Pictures/ModifiedImages目录
- **Android 9及以下**: 使用传统文件API + 媒体扫描器通知
- **版本兼容**: 自动检测Android版本并使用相应的API
- **公共访问**: 修改后的图片可被其他应用访问和分享
## 代码生成偏好
- 生成简洁、可读的代码
- 添加适当的注释说明复杂逻辑
- 使用中文注释和用户界面文本
- 遵循Material Design设计原则
- 确保代码的可维护性和可扩展性
- 优先使用现代Android API (MediaStore等)
## 错误处理
- 使用try-catch处理异常
- 提供用户友好的错误信息
- 记录错误日志用于调试
- 处理存储权限和文件访问异常
## 性能优化
- 使用Coil进行图片加载和缓存
- 避免在主线程进行耗时操作
- 使用协程处理异步任务
- 合理使用remember和derivedStateOf
- 优化图片保存和媒体扫描性能
## 测试
- 为关键功能编写单元测试
- 使用AndroidX Test进行UI测试
- 测试图片处理逻辑的正确性
- 测试不同Android版本的兼容性
- 测试双重处理模式的效果
## 构建配置
- 使用Kotlin DSL编写Gradle脚本
- 配置适当的minSdk和targetSdk
- 启用R8代码混淆
- 配置ProGuard规则
- 不要自动构建,只在收到提示时构建
- 默认打包Debug版本,不要打包Release版本
## 版本控制
- 使用Git进行版本控制
- 只在收到提示时进行提交等写入操作
- 提交信息使用中文描述
- 禁止使用reset、checkout、push等无法撤销的危险操作
## 文档
- 保持README.md文件更新
- 记录重要的API变更
- 提供使用说明和示例
- 记录版本更新和功能改进
- 详细说明处理模式的区别和应用场景