无法解析 com.squareup.sqldelight:runtime:1.1.3
Could not resolve com.squareup.sqldelight:runtime:1.1.3
我尝试将 sqldelight 集成到我的 Android/iOS 多平台库项目中,但在同步 gradle 时遇到几个未解决的依赖性错误。
ERROR: Unable to resolve dependency for ':SharedCode@debug/compileClasspath': Could not resolve com.squareup.sqldelight:runtime:1.1.3.
ERROR: Unable to resolve dependency for ':SharedCode@debug/compileClasspath': Could not resolve com.squareup.sqldelight:runtime-jvm:1.1.3.
ERROR: Unable to resolve dependency for ':SharedCode@release/compileClasspath': Could not resolve com.squareup.sqldelight:runtime:1.1.3.
ERROR: Unable to resolve dependency for ':SharedCode@release/compileClasspath': Could not resolve com.squareup.sqldelight:runtime-jvm:1.1.3.**
Gradle 版本 5.1.1
Gradle 插件 3.4.0
sqldelight 1.1.3
enableFeaturePreview('GRADLE_METADATA')
出现在我的 settings.gradle
中
我的项目 gradle 文件如下所示:
buildscript {
ext {
kotlin_version = '1.3.31'
ktor_version = '1.2.1'
ktor_json_version = '1.2.1'
kotlinx_coroutines_version = '1.2.1'
serialization_version = '0.11.0'
sqldelight_version = '1.1.3'
dokka_version = '0.9.16'
}
repositories {
google()
jcenter()
mavenCentral()
gradlePluginPortal()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:$dokka_version"
classpath "com.squareup.sqldelight:gradle-plugin:$sqldelight_version"
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url "https://kotlin.bintray.com/kotlinx" }
}
}
task clean(type: Delete) {
setDelete rootProject.buildDir
}
我的 SharedCode 库 gradle 文件:
apply plugin: 'kotlinx-serialization'
apply plugin: 'com.android.library'
apply plugin: 'org.jetbrains.kotlin.multiplatform'
apply plugin: 'com.squareup.sqldelight'
group = 'com.example.multiplatform'
version = '1.0'
android {
compileSdkVersion 27
defaultConfig {
minSdkVersion 15
}
buildTypes {
release {
minifyEnabled false
}
}
}
dependencies {
// Specify Kotlin/JVM stdlib dependency.
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7'
implementation "com.squareup.sqldelight:runtime:1.1.3"
testImplementation 'junit:junit:4.12'
testImplementation 'org.jetbrains.kotlin:kotlin-test'
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'org.jetbrains.kotlin:kotlin-test'
androidTestImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
kotlin {
targets {
final def iOSTarget = System.getenv('SDK_NAME')?.startsWith("iphoneos") \
? presets.iosArm64 : presets.iosX64
fromPreset(iOSTarget, 'ios') {
binaries {
framework('SharedCode')
}
}
fromPreset(presets.android, 'androidLib')
}
sourceSets {
commonMain {
dependencies {
//HTTP
implementation "io.ktor:ktor-client-json:$ktor_json_version"
implementation "io.ktor:ktor-client-serialization:$ktor_version"
//Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$kotlinx_coroutines_version"
//Kotlinx serialization
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version"
//sqldelight
implementation "com.squareup.sqldelight:runtime:$sqldelight_version"
}
}
androidLibMain {
dependencies {
//HTTP
implementation "io.ktor:ktor-client-json-jvm:$ktor_json_version"
implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
//Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinx_coroutines_version"
//Kotlinx serialization
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"
//sqldelight
implementation "com.squareup.sqldelight:android-driver:$sqldelight_version"
}
}
iosMain {
dependencies {
//HTTP
implementation "io.ktor:ktor-client-ios:$ktor_version"
implementation "io.ktor:ktor-client-json-native:$ktor_json_version"
implementation "io.ktor:ktor-client-serialization-native:$ktor_version"
//Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$kotlinx_coroutines_version"
//kotlinx serialization
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version"
//sqldelight
implementation "com.squareup.sqldelight:ios-driver:$sqldelight_version"
}
}
}
}
sqldelight {
MyApp {
packageName = 'com.example.multiplatform'
}
}
configurations {
compileClasspath
}
task packForXCode(type: Sync) {
final File frameworkDir = new File(buildDir, "xcode-frameworks")
final String mode = project.findProperty("XCODE_CONFIGURATION")?.toUpperCase() ?: 'DEBUG'
final def framework = kotlin.targets.ios.binaries.getFramework("SharedCode", mode)
inputs.property "mode", mode
dependsOn framework.linkTask
from { framework.outputFile.parentFile }
into frameworkDir
doLast {
new File(frameworkDir, 'gradlew').with {
text = "#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew $@\n"
setExecutable(true)
}
}
}
tasks.build.dependsOn packForXCode
改变这个
classpath "com.squareup.sqldelight:gradle-plugin:$sqldelight_version"
正在关注
classpath "com.squareup.sqldelight:runtime:$sqldelight_version"
您将错误的元数据传递给 sqldelight
改变我的解决方案它会起作用
库自述文件的 Gradle 部分表明,需要 gradle 插件。没有像 runtime 这样的 sqldelight 库。他们只有android-driver、ios-driver和sqlite-driver .
以 DroidConKotlin app project 为例,我将 gradle 从 5.1.1 升级到 5.3.1,它解决了所有依赖项问题。
您可能正在尝试使用对依赖库甚至应用程序的依赖,而不仅仅是在 commonMain 模块中。只需更改:
commonMain {
dependencies {
...
implementation "com.squareup.sqldelight:runtime:$sqldelight_version"
}
}
到
commonMain {
dependencies {
...
api "com.squareup.sqldelight:runtime:$sqldelight_version"
}
}
同时在 依赖项 部分
更改它
并对任何其他未正确解决的依赖项执行相同操作
例如,如果您定义一个 class 来实现依赖项提供的接口,并且您在依赖库或应用程序上使用或扩展该 class(这只是数百万个例子)可能是)。
如果是这种情况,为了进一步了解,只需查看 :
在我看来,这是由于离线 gradle 或缓存无效而发生的错误,因为此错误并非特定于 com.squareup.sqldelight。要解决此问题,请执行以下步骤:
- 文件
- 设置
- 构建、执行、部署
- Gradle
- 取消选中离线工作
然后尝试使缓存无效并从文件菜单重新启动。希望对您有所帮助!
我解决了这个问题。
第一:对所有项目申请sqldelight插件权限:
apply plugin: 'com.squareup.sqldelight'
sqldelight {
MyDatabase {
packageName = "ru.trendagent.database"
sourceFolders = ["sqldelight"]
}
}
在 android 部分添加:
packagingOptions {
...
exclude 'META-INF/*.kotlin_module'
}
从 CommonMain
部分删除 sqldelight 的所有实现
将实现添加到 AndroidMain 部分:
implementation "com.squareup.sqldelight:android-driver:1.1.3" //DataBase
如果需要,将实现添加到 iosMain 部分:
implementation "com.squareup.sqldelight:ios-driver:1.1.3"//DataBase
将 gradle 的元数据设置添加到 settings.gradle
文件:
enableFeaturePreview("GRADLE_METADATA") // IMPORTANT!
完全清理 gradle 文件,重置 gradle 包装器和其他。
不要使用科特林 1.4.0。不支持sqldelight 1.1.3版本
将 gradle 更改为最新版本。您可以手动下载最新的 gradle 并将其设置为 IDE。您需要 gradle 5.3.1 或最新版本(5.1.1 不受支持)
如果错误仍然存在 - 将 IDE 更改为 intellij idea 社区版
我尝试将 sqldelight 集成到我的 Android/iOS 多平台库项目中,但在同步 gradle 时遇到几个未解决的依赖性错误。
ERROR: Unable to resolve dependency for ':SharedCode@debug/compileClasspath': Could not resolve com.squareup.sqldelight:runtime:1.1.3.
ERROR: Unable to resolve dependency for ':SharedCode@debug/compileClasspath': Could not resolve com.squareup.sqldelight:runtime-jvm:1.1.3.
ERROR: Unable to resolve dependency for ':SharedCode@release/compileClasspath': Could not resolve com.squareup.sqldelight:runtime:1.1.3. ERROR: Unable to resolve dependency for ':SharedCode@release/compileClasspath': Could not resolve com.squareup.sqldelight:runtime-jvm:1.1.3.**
Gradle 版本 5.1.1
Gradle 插件 3.4.0
sqldelight 1.1.3
enableFeaturePreview('GRADLE_METADATA')
出现在我的 settings.gradle
我的项目 gradle 文件如下所示:
buildscript {
ext {
kotlin_version = '1.3.31'
ktor_version = '1.2.1'
ktor_json_version = '1.2.1'
kotlinx_coroutines_version = '1.2.1'
serialization_version = '0.11.0'
sqldelight_version = '1.1.3'
dokka_version = '0.9.16'
}
repositories {
google()
jcenter()
mavenCentral()
gradlePluginPortal()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:$dokka_version"
classpath "com.squareup.sqldelight:gradle-plugin:$sqldelight_version"
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url "https://kotlin.bintray.com/kotlinx" }
}
}
task clean(type: Delete) {
setDelete rootProject.buildDir
}
我的 SharedCode 库 gradle 文件:
apply plugin: 'kotlinx-serialization'
apply plugin: 'com.android.library'
apply plugin: 'org.jetbrains.kotlin.multiplatform'
apply plugin: 'com.squareup.sqldelight'
group = 'com.example.multiplatform'
version = '1.0'
android {
compileSdkVersion 27
defaultConfig {
minSdkVersion 15
}
buildTypes {
release {
minifyEnabled false
}
}
}
dependencies {
// Specify Kotlin/JVM stdlib dependency.
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7'
implementation "com.squareup.sqldelight:runtime:1.1.3"
testImplementation 'junit:junit:4.12'
testImplementation 'org.jetbrains.kotlin:kotlin-test'
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'org.jetbrains.kotlin:kotlin-test'
androidTestImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
kotlin {
targets {
final def iOSTarget = System.getenv('SDK_NAME')?.startsWith("iphoneos") \
? presets.iosArm64 : presets.iosX64
fromPreset(iOSTarget, 'ios') {
binaries {
framework('SharedCode')
}
}
fromPreset(presets.android, 'androidLib')
}
sourceSets {
commonMain {
dependencies {
//HTTP
implementation "io.ktor:ktor-client-json:$ktor_json_version"
implementation "io.ktor:ktor-client-serialization:$ktor_version"
//Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$kotlinx_coroutines_version"
//Kotlinx serialization
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version"
//sqldelight
implementation "com.squareup.sqldelight:runtime:$sqldelight_version"
}
}
androidLibMain {
dependencies {
//HTTP
implementation "io.ktor:ktor-client-json-jvm:$ktor_json_version"
implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
//Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinx_coroutines_version"
//Kotlinx serialization
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"
//sqldelight
implementation "com.squareup.sqldelight:android-driver:$sqldelight_version"
}
}
iosMain {
dependencies {
//HTTP
implementation "io.ktor:ktor-client-ios:$ktor_version"
implementation "io.ktor:ktor-client-json-native:$ktor_json_version"
implementation "io.ktor:ktor-client-serialization-native:$ktor_version"
//Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$kotlinx_coroutines_version"
//kotlinx serialization
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version"
//sqldelight
implementation "com.squareup.sqldelight:ios-driver:$sqldelight_version"
}
}
}
}
sqldelight {
MyApp {
packageName = 'com.example.multiplatform'
}
}
configurations {
compileClasspath
}
task packForXCode(type: Sync) {
final File frameworkDir = new File(buildDir, "xcode-frameworks")
final String mode = project.findProperty("XCODE_CONFIGURATION")?.toUpperCase() ?: 'DEBUG'
final def framework = kotlin.targets.ios.binaries.getFramework("SharedCode", mode)
inputs.property "mode", mode
dependsOn framework.linkTask
from { framework.outputFile.parentFile }
into frameworkDir
doLast {
new File(frameworkDir, 'gradlew').with {
text = "#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew $@\n"
setExecutable(true)
}
}
}
tasks.build.dependsOn packForXCode
改变这个
classpath "com.squareup.sqldelight:gradle-plugin:$sqldelight_version"
正在关注
classpath "com.squareup.sqldelight:runtime:$sqldelight_version"
您将错误的元数据传递给 sqldelight
改变我的解决方案它会起作用
库自述文件的 Gradle 部分表明,需要 gradle 插件。没有像 runtime 这样的 sqldelight 库。他们只有android-driver、ios-driver和sqlite-driver .
以 DroidConKotlin app project 为例,我将 gradle 从 5.1.1 升级到 5.3.1,它解决了所有依赖项问题。
您可能正在尝试使用对依赖库甚至应用程序的依赖,而不仅仅是在 commonMain 模块中。只需更改:
commonMain {
dependencies {
...
implementation "com.squareup.sqldelight:runtime:$sqldelight_version"
}
}
到
commonMain {
dependencies {
...
api "com.squareup.sqldelight:runtime:$sqldelight_version"
}
}
同时在 依赖项 部分
更改它并对任何其他未正确解决的依赖项执行相同操作
例如,如果您定义一个 class 来实现依赖项提供的接口,并且您在依赖库或应用程序上使用或扩展该 class(这只是数百万个例子)可能是)。
如果是这种情况,为了进一步了解,只需查看
在我看来,这是由于离线 gradle 或缓存无效而发生的错误,因为此错误并非特定于 com.squareup.sqldelight。要解决此问题,请执行以下步骤:
- 文件
- 设置
- 构建、执行、部署
- Gradle
- 取消选中离线工作
然后尝试使缓存无效并从文件菜单重新启动。希望对您有所帮助!
我解决了这个问题。 第一:对所有项目申请sqldelight插件权限:
apply plugin: 'com.squareup.sqldelight'
sqldelight {
MyDatabase {
packageName = "ru.trendagent.database"
sourceFolders = ["sqldelight"]
}
}
在 android 部分添加:
packagingOptions {
...
exclude 'META-INF/*.kotlin_module'
}
从 CommonMain
部分删除 sqldelight 的所有实现
将实现添加到 AndroidMain 部分:
implementation "com.squareup.sqldelight:android-driver:1.1.3" //DataBase
如果需要,将实现添加到 iosMain 部分:
implementation "com.squareup.sqldelight:ios-driver:1.1.3"//DataBase
将 gradle 的元数据设置添加到 settings.gradle
文件:
enableFeaturePreview("GRADLE_METADATA") // IMPORTANT!
完全清理 gradle 文件,重置 gradle 包装器和其他。 不要使用科特林 1.4.0。不支持sqldelight 1.1.3版本 将 gradle 更改为最新版本。您可以手动下载最新的 gradle 并将其设置为 IDE。您需要 gradle 5.3.1 或最新版本(5.1.1 不受支持)
如果错误仍然存在 - 将 IDE 更改为 intellij idea 社区版