You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中Koin v3.2.0的viewModelOf调用报错求助

Koin v3.2.0中使用viewModelOf报错的解决方法

问题场景

在Jetpack Compose项目中使用Koin v3.2.0,配置ViewModel依赖时调用viewModelOf(::MainActivityViewModel),出现函数参数匹配错误,报错提示:

one of the following functions can be called with the arguments supplied.
Module.viewModelOf(() → TypeVariable(R)) where R = TypeVariable(R) for inline fun Module.viewModelOf(crossinline constructor: () → R): KoinDefinition /* = Pair<Module, InstanceFactory> */ defined in org.koin.androidx.viewmodel.dsl

解决方案

1. 升级Koin版本至兼容版本

Koin v3.2.0的viewModelOf函数存在部分兼容性问题,建议将所有Koin相关依赖升级至v3.3.0及以上版本,确保与Jetpack Compose、AndroidX ViewModel的版本适配。

修改build.gradle中的Koin依赖:

implementation "io.insert-koin:koin-android:3.4.0"
implementation "io.insert-koin:koin-androidx-compose:3.4.0"

2. 切换至Koin传统ViewModel DSL写法

如果暂时无法升级版本,可以替换viewModelOf为Koin的传统viewModel DSL写法,同样可以完成ViewModel的注入:

修改AppModule.kt:

package com.vivek.sportsresult.di

import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
import com.vivek.sportsresult.viewmodel.MainActivityViewModel

val appModule = module {
    viewModel { MainActivityViewModel() }
}

3. 检查Kotlin版本兼容性

确保项目使用的Kotlin版本与Koin版本匹配:

  • Koin v3.2.0适配Kotlin 1.6.x版本
  • Koin v3.3.0+适配Kotlin 1.7.x及以上版本

在项目根目录的build.gradle中确认Kotlin插件版本:

plugins {
    id 'org.jetbrains.kotlin.android' version '1.7.20'
    // 其他插件...
}

4. 清理缓存并重新构建

Android Studio缓存可能导致依赖解析异常,执行以下操作:

  • 点击菜单栏 File -> Invalidate Caches... -> Invalidate and Restart
  • 重新同步项目并构建

内容的提问来源于stack exchange,提问作者Compose Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:48:22