mcpField
A
android-kotlin

android-kotlin

github.com/alphaonedev开发47 次安装
代码仓库

关于 android-kotlin

面向 Kotlin Android 开发的技能,涵盖界面状态、异步任务和构建配置,适用于构建可维护的 Android 应用。

主要功能

  1. 01使用 ViewModel 管理界面状态
  2. 02通过 LiveData 或 StateFlow 观察数据
  3. 03用 viewModelScope 运行协程
  4. 04使用 Gradle KTS 配置构建
  5. 05借助 KTX 扩展 Android API

适用场景

  1. 01在 Activity 或 Fragment 中管理界面状态
  2. 02通过协程执行网络等异步任务
  3. 03为项目配置 Kotlin DSL 构建脚本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill android-kotlin

安装后在 Claude Code 中输入/android-kotlin确认已加载。

详细介绍

android-kotlin

用途

此技能提供使用 Kotlin 进行 Android 开发的指导,重点介绍 ViewModel 状态管理、用于响应式数据的 LiveData 或 StateFlow、使用 viewModelScope 进行异步操作的协程、用于构建配置的 Gradle KTS,以及 Android 扩展 KTX 等关键组件。它有助于构建健壮、易于维护的 Android 应用。

适用场景

在 Kotlin 中开发 Android 应用,且需要以下功能时使用此技能:使用 ViewModel 管理 UI 状态;使用协程处理网络调用等异步任务;通过 LiveData 或 StateFlow 观察数据变化;通过 Gradle KTS 配置项目;或使用 KTX 扩展简化代码。适用于需要生命周期感知组件的 Activity、Fragment 或服务场景。

主要功能

  • ViewModel:在配置变更期间保留与 UI 相关的数据;使用 androidx.lifecycle.ViewModel 类。
  • LiveData/StateFlow:观察数据变化;LiveData 与生命周期集成,StateFlow 使用 Kotlin flows 进行响应式编程。
  • 协程:使用 viewModelScope.launch {} 管理异步代码,创建作用域受限的协程,并在 ViewModel 销毁时取消。
  • Gradle KTS:以 Kotlin 脚本格式编写构建脚本,以获得更好的类型安全性,例如 build.gradle.kts。
  • KTX:为 Android API 提供扩展函数,例如来自 androidx.core 的 ContextCompat。

使用模式

若要实现 MVVM 架构,请创建 ViewModel 来保存数据和业务逻辑,然后在 Activity 或 Fragment 中观察它。执行异步操作时,始终在 viewModelScope 中启动协程,以避免泄漏。简单的数据观察可使用 LiveData,更复杂的流程可使用 StateFlow。配置 Gradle 时,将 build.gradle 重命名为 build.gradle.kts 并更新语法,以切换到 KTS。通过在 build.gradle.kts 中添加依赖来集成 KTX,例如 implementation "androidx.core:core-ktx:1.7.0"。

常用命令/API

  • Gradle 命令:运行 ./gradlew build --stacktrace 进行调试;使用 ./gradlew assembleDebug 构建调试 APK。
  • ViewModel API:扩展 ViewModel 类;示例:class MyViewModel : ViewModel() { val data = MutableLiveData<String>() }。
  • 协程 API:导入 kotlinx.coroutines;使用 viewModelScope.launch { delay(1000); data.value = "Updated" } 延迟更新。
  • LiveData/StateFlow:使用 val liveData = MutableLiveData<String>() 创建;或使用 val stateFlow = MutableStateFlow("") 创建。
  • KTX 扩展:使用来自 androidx.fragment.app.Fragment KTX 的 requireContext().toast("Message") 显示 Toast。
  • 配置格式:在 build.gradle.kts 中,将依赖项定义为 dependencies { implementation("com.android.tools.build:gradle:7.0.0") };使用环境变量设置 API 密钥,例如 buildConfigField "String", "API_KEY", "\"$SYSTEM_ENV_API_KEY\""。

集成说明

若要集成 ViewModel,请将 androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0 添加到 build.gradle.kts,然后使用 ViewModelProvider(this).get(MyViewModel::class.java) 注入。使用协程时,请添加 org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0,并确保在 ViewModel 子类中使用 viewModelScope。使用 StateFlow 时,在 Fragment 中结合 lifecycleScope.launchWhenStarted { viewModel.stateFlow.collect { updateUI(it) } }。对于身份验证,请将 API 密钥设为环境变量(例如 $ANDROID_API_KEY),并通过 BuildConfig.API_KEY 访问。请迁移出支持库,以确保与 AndroidX 兼容。

错误处理

在协程中使用 try-catch 块处理异常:viewModelScope.launch { try { val result = apiCall() } catch (e: Exception) { data.value = "Error: ${e.message}" } }。对于 LiveData,使用 observe 并指定生命周期所有者,同时处理 null 值:viewModel.data.observe(this) { if (it != null) updateUI(it) else showError() }。在 Gradle 中,使用 --stacktrace 或 --debug 标志调试构建,例如:./gradlew build --stacktrace。在收集 StateFlow 时,通过在发射值的过程中使用 try-catch 来监控错误。始终检查 KTX 扩展中的 null 值,例如:if (context != null) context.startActivity(intent)。

具体用法示例

  1. 使用 LiveData 的 ViewModel:创建一个用于用户数据的 ViewModel:class UserViewModel : ViewModel() { val userData = MutableLiveData<String>() fun loadData() { userData.value = "Loaded" } }。在 activity 中:val viewModel: UserViewModel by viewModels(); viewModel.userData.observe(this) { textView.text = it }。在按钮点击时调用 viewModel.loadData()。
  2. ViewModel 中的协程:异步获取数据:class DataViewModel : ViewModel() { fun fetchData() = viewModelScope.launch { val result = withContext(Dispatchers.IO) { apiService.getData() } data.value = result } }。在 fragment 中观察:viewModel.data.observe(viewLifecycleOwner) { if (it.isSuccess) showData(it) else handleError() }。

图谱关系

  • 相关项:mobile 集群(作为子技能)、kotlin-core 技能(共享语言基础)、android-core 技能(平台方面存在重叠)、viewmodel 技能(直接依赖)、coroutines 技能(用于异步处理)。
  • 关联:与 mobile 生态系统集成;依赖 kotlin 语法;关联 android 平台细节;与 viewmodel 和 coroutines 标签协作,实现高级功能。

评论

支持 Markdown