关于 android-kotlin
面向 Kotlin Android 开发的技能,涵盖界面状态、异步任务和构建配置,适用于构建可维护的 Android 应用。
主要功能
- 01使用 ViewModel 管理界面状态
- 02通过 LiveData 或 StateFlow 观察数据
- 03用 viewModelScope 运行协程
- 04使用 Gradle KTS 配置构建
- 05借助 KTX 扩展 Android API
适用场景
- 01在 Activity 或 Fragment 中管理界面状态
- 02通过协程执行网络等异步任务
- 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.FragmentKTX 的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)。
具体用法示例
- 使用 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()。 - 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 标签协作,实现高级功能。