- biz-* 4 个、integration-* 8 个、dev-android/ios/pda、publish、ai-proj-cicd-release、ai-proj-macos-release - 均加 metadata.invocation: user-invoked + disable-model-invocation: true(DSH 实测生效) - catalog: promoted/model-invoked 40、promoted/user-invoked 18、beta 3
58 lines
1.4 KiB
Markdown
58 lines
1.4 KiB
Markdown
---
|
|
name: dev-android
|
|
description: Android 开发插件。Kotlin + Jetpack Compose + Hilt 依赖注入。当涉及 Android 开发任务时按需加载。
|
|
metadata:
|
|
invocation: user-invoked
|
|
disable-model-invocation: true
|
|
---
|
|
|
|
# Android 开发插件 (dev-android)
|
|
|
|
## 架构:MVVM + Hilt
|
|
|
|
```
|
|
android-app/app/src/main/
|
|
├── java/com/project/
|
|
│ ├── ui/ # Compose 屏幕 + 组件
|
|
│ ├── data/ # API + Repository + 本地存储
|
|
│ ├── domain/ # 业务逻辑
|
|
│ └── di/ # Hilt 依赖注入
|
|
└── res/ # 资源文件
|
|
```
|
|
|
|
## 代码规范
|
|
|
|
```kotlin
|
|
@HiltViewModel
|
|
class TaskViewModel @Inject constructor(
|
|
private val taskRepository: TaskRepository
|
|
) : ViewModel() {
|
|
|
|
private val _tasks = MutableStateFlow<List<Task>>(emptyList())
|
|
val tasks: StateFlow<List<Task>> = _tasks.asStateFlow()
|
|
|
|
fun fetchTasks() {
|
|
viewModelScope.launch {
|
|
taskRepository.getTasks()
|
|
.collect { _tasks.value = it }
|
|
}
|
|
}
|
|
}
|
|
|
|
@Composable
|
|
fun TaskListScreen(viewModel: TaskViewModel = hiltViewModel()) {
|
|
val tasks by viewModel.tasks.collectAsState()
|
|
LazyColumn {
|
|
items(tasks) { task -> TaskItem(task = task) }
|
|
}
|
|
}
|
|
```
|
|
|
|
## 构建
|
|
|
|
```bash
|
|
./gradlew assembleDebug # Debug 构建
|
|
./gradlew assembleRelease # Release 构建
|
|
./gradlew test # 测试
|
|
```
|