簡體   English   中英

排除Realm插件添加的Gradle依賴項

[英]Exclude a Gradle dependency that is added by the Realm plugin

偶爾,我的Gradle同步會失敗。 我將收到無益的消息,“第三方Gradle插件”可能是原因。 如果我打開事件日志,我會看到以下消息:

Outdated Kotlin Runtime
                                Your version of Kotlin runtime in 'Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.2.10@jar' library is 1.2.10-release-109 (1.2.10), while plugin version is 1.2.51-release-Studio3.1-1.
                                Runtime library should be updated to avoid compatibility problems.

不匹配的數字既不是我的Gradle文件中的Kotlin版本,也不是Android Studio中我的Kotlin插件的版本。

運行Gradle依賴樹后,我找到了罪魁禍首:

+--- io.realm:realm-android-kotlin-extensions:5.1.0
|    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.10 -> 1.2.51

我不包括任何realm-android-kotlin-extensions庫。 我假設它是由classpath "io.realm:realm-gradle-plugin:5.1.0"apply plugin: "realm-android"

這使問題變得困難。 如果它是一個常規的依賴,我可以嘗試類似的東西

implementation "io.realm:realm-android-kotlin-extensions:5.1.0" {
    transitive = false
}

要么

implementation "io.realm:realm-android-kotlin-extensions:5.1.0" {
    exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib-jdk7"
}

從理論上說,這可能會奏效。 它將被迫使用較新版本的Kotlin,錯誤將消失,希望Gradle同步可以工作,並且一切都將與世界相處得很好。 但是,如果我嘗試這種方法,我的Gradle同步失敗,我在事件日志中收到此錯誤:

Gradle sync failed: Could not find method io.realm:realm-android-kotlin-extensions:5.1.0() for arguments [build_2krw7i3nwfkd5lrq1ly9b8huw$_run_closure3$_closure29@7b5b2081] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

我假設這是因為這不是我添加的依賴項(可能不是公共依賴項?),它失敗了,因為依賴項是通過插件而不是直接在我的Gradle文件中添加的。

那么我該如何解決這個問題呢? 也許我可以添加一行來告訴Realm插件排除過時的依賴? 或者我完全咆哮錯誤的樹,我的Kotlin版本沖突問題的解決方案完全是另外一個?

(順便說一句,如果你想知道我為什么使用Realm 5.1.0,5.3.1會在我們的應用程序中引起一些奇怪的錯誤,所以我們等待更新的版本發布,希望不再導致的問題。)

我個人“我希望我在一年前就知道這個”列表中的一件事就是你可以手動添加Realm添加到項目中的內容而不是依賴Gradle插件。

 buildscript {
    ext.kotlin_version = '1.2.51'
    ext.realm_version = '5.3.1'

    repositories {
        jcenter()
        mavenCentral()
    }

   dependencies {
       classpath "io.realm:realm-transformer:5.1.0"
       classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
   }
 }

 apply plugin: 'com.android.application'
 apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-kapt'

 import io.realm.transformer.RealmTransformer
 android.registerTransform(new RealmTransformer(project))

 dependencies {
   implementation "io.realm:realm-annotations:$realm_version"
   implementation "io.realm:realm-android-library:$realm_version"
   implementation "io.realm:realm-android-kotlin-extensions:$realm_version" {
       exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib-jdk7"
   }
   kapt "io.realm:realm-annotations-processor:$realm_version"
 }

按照文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM