# Android Jetpack Compose

> Use when working with Android — development rules

- Skill: `liaosw97/android-jetpack-compose` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add liaosw97/android-jetpack-compose`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liaosw97/android-jetpack-compose/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: liaosw97 (https://skillmd.com/u/liaosw97)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/liaosw97/android-jetpack-compose

---


## 核心原则
- **声明式 UI**：拥抱 Compose 声明式编程范式
- **单向数据流**：State hoisting + Unidirectional flow
- **组合优于继承**：构建小型可组合函数
- **性能意识**：最小化重组，优化渲染
- **Material Design**：遵循 Material 3 设计规范

## 技术栈
- **UI 框架**：Jetpack Compose 1.5+, Material 3
- **语言**：Kotlin 1.9+, Coroutines, Flow
- **架构**：Clean Architecture, MVVM
- **依赖注入**：Hilt, Koin
- **导航**：Compose Navigation, Hilt Navigation
- **网络**：Retrofit, OkHttp
- **本地存储**：Room, DataStore

## 最佳实践
1. **状态管理**
   - 使用 remember 和 derivedStateOf 正确管理状态
   - State hoisting 提升状态到调用者
   - MutableState 避免不必要的重组
   - ViewModel 持有屏幕级状态

2. **Compose 优化**
   - 使用 stable 注解标记不可变类
   - 正确使用 key() 减少重组范围
   - LazyColumn/LazyRow 使用 key 参数
   - 避免在 Composable 中执行耗时操作

3. **Modifier 规范**
   - 遵循正确的 Modifier 顺序
   - 使用 Modifier 链式调用
   - 传递 Modifier 参数到自定义组件
   - 分离装饰性和功能性 Modifier

4. **副作用处理**
   - LaunchedEffect 处理一次性副作用
   - DisposableEffect 处理生命周期相关
   - SideEffect 处理 Compose 外的更新
   - rememberCoroutineScope 用于事件处理

5. **架构设计**
   - UiState + UiEvent 单向数据流
   - ViewModel 暴露 StateFlow
   - Repository 抽象数据源
   - UseCase 封装业务逻辑

## 关键约定
1. **项目结构**
   ```
   app/
   ├── data/                   # 数据层
   │   ├── repository/
   │   ├── datasource/
   │   └── models/
   ├── domain/                 # 领域层
   │   ├── usecases/
   │   ├── models/
   │   └── repository/
   ├── presentation/           # 表现层
   │   ├── screens/
   │   ├── components/
   │   ├── theme/
   │   └── viewmodels/
   ├── di/                     # 依赖注入
   └── utils/                  # 工具类
   ```

2. **命名约定**
   - Composable 函数：PascalCase (如 `UserProfileScreen`)
   - State 类：PascalCase + State (如 `UserProfileState`)
   - Event 类：PascalCase + Event (如 `UserProfileEvent`)
   - 文件：PascalCase (如 `UserProfileScreen.kt`)

3. **代码组织**
   ```kotlin
   @Composable
   fun UserProfileScreen(
       state: UserProfileState,
       onEvent: (UserProfileEvent) -> Unit,
       modifier: Modifier = Modifier
   ) {
       // Composable 实现
   }
   ```

4. **测试要求**
   - 单元测试：ViewModel, UseCase
   - UI 测试：Compose Testing
   - 使用 Hilt 测试模块
   - 端到端测试覆盖关键流程

