如何为Kotlin多平台库接入SqlDelight驱动?
解决SqlDelight插件找不到的问题
核心问题
Gradle提示“Plugin with id 'com.squareup.sqldelight' not found”,原因是Gradle不知道该插件的下载来源,且当前配置未指定插件版本。结合你使用的Gradle 5.6.1和Kotlin 1.3.41,需适配对应的SqlDelight 1.1.4版本。
修改步骤
1. 配置插件仓库与声明
项目根目录的build.gradle需要先让Gradle找到插件仓库,推荐用以下两种方式之一配置:
方式一:plugins块(推荐)
替换原plugins块,添加插件版本声明与仓库配置:
pluginManagement { repositories { gradlePluginPortal() mavenCentral() google() } } plugins { id 'org.jetbrains.kotlin.multiplatform' version '1.3.41' id 'com.squareup.sqldelight' version '1.1.4' }
方式二:buildscript块
如果方式一不生效,可使用传统buildscript配置:
buildscript { repositories { gradlePluginPortal() mavenCentral() google() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.41" classpath "com.squareup.sqldelight:gradle-plugin:1.1.4" } } plugins { id 'org.jetbrains.kotlin.multiplatform' version '1.3.41' }
2. 清理重复配置
删除原配置中的apply plugin: 'com.squareup.sqldelight',避免重复应用插件。
3. 完善多平台与SqlDelight配置
因为你要开发Kotlin Native,需添加对应Native目标(如macosX64、iosArm64),并配置SqlDelight的驱动与代码生成:
kotlin { jvm() // 添加你需要的Native目标,示例为macOS macosX64("macos") sourceSets { commonMain { dependencies { implementation kotlin('stdlib-common') implementation "com.squareup.sqldelight:runtime:1.1.4" } } commonTest { dependencies { implementation kotlin('test-common') implementation kotlin('test-annotations-common') } } jvmMain { dependencies { implementation kotlin('stdlib-jdk8') implementation "com.squareup.sqldelight:sqlite-driver:1.1.4" } } macosMain { dependencies { implementation "com.squareup.sqldelight:native-driver:1.1.4" } } jvmTest { dependencies { implementation kotlin('test') implementation kotlin('test-junit') } } } } // 配置SqlDelight数据库代码生成 sqldelight { database("MyDatabase") { packageName = "com.example.test.db" } }
4. 验证同步
修改完成后点击Gradle的「Sync Now」按钮同步项目。若仍有问题,检查:
- Gradle 5.6.1是否能正常访问gradlePluginPortal、mavenCentral仓库
- 插件版本与Kotlin版本是否匹配(SqlDelight 1.1.4兼容Kotlin 1.3.x)
内容的提问来源于stack exchange,提问作者Tsypk
相关产品推荐
相关产品推荐

