Jetpack Compose项目集成kotlin-csv构建失败解决方法
问题根因
构建失败完全是依赖引入错误导致的:
- Jetpack Compose安卓项目运行在Android JVM/ART环境,仅需要适配JVM平台的库产物。你额外引入的
kotlin-csv-js是面向Kotlin/JS平台的依赖,和安卓项目要求的androidJvm运行时变体不兼容,这类跨平台依赖不能随意在单平台项目中引入,会直接触发依赖解析失败、构建变体匹配错误。 - 资料里提到的pom.xml配置是Maven构建工具的专属配置文件,安卓项目默认用Gradle构建,项目里找不到pom.xml是正常情况,完全不需要为了这个库创建或修改pom文件。
正确配置步骤
- 清理错误依赖
打开app模块级的build.gradle(Groovy语法)或build.gradle.kts(Kotlin DSL语法),在dependencies块中删除JS平台的依赖行,仅保留JVM平台的kotlin-csv依赖:
// Groovy语法示例 dependencies { // 删掉下面这行错误依赖 // implementation 'com.github.doyaaaaaken:kotlin-csv-js:1.3.0' implementation 'com.github.doyaaaaaken:kotlin-csv-jvm:1.3.0' }
// Kotlin DSL语法示例 dependencies { // 删掉下面这行错误依赖 // implementation("com.github.doyaaaaaken:kotlin-csv-js:1.3.0") implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.3.0") }
- 确认仓库配置
AGP 7.1.3版本的仓库配置默认在项目根目录的settings.gradle文件中,打开后确认mavenCentral()已加入仓库列表,否则会无法拉取到库文件:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // 必须配置,kotlin-csv通过Maven中央仓分发 } }
- 点击Gradle同步按钮,等待同步完成即可消除构建错误。
测试代码运行说明
你写的独立main函数不能直接在安卓工程的main源码集下运行,你可以把CSV解析逻辑放到Compose的副作用或者事件回调中测试,示例:
@Composable fun CsvTestPage() { LaunchedEffect(Unit) { val csvData: String = "a,b,c\nd,e,f" val rows: List<List<String>> = csvReader().readAll(csvData) // 控制台日志会输出 [[a, b, c], [d, e, f]] android.util.Log.d("CSV_TEST", rows.toString()) } }
避坑提示
- Kotlin多平台库会发布面向不同运行环境的产物,纯安卓单平台项目不需要手动引入JS、Native、Common平台的依赖,否则必然出现运行时变体不匹配的构建错误。
- kotlin-csv 1.3.0版本和AGP 7.1.3、Jetpack Compose完全兼容,不需要额外升级Gradle、AGP或者Kotlin插件版本。
- 不要照搬Maven项目的配置逻辑到Gradle项目中,两类构建工具的配置文件、依赖规则不通用。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

