Flutter `w: файлы JAR во время выполнения в пути к классу должны иметь одинаковую версию`

#android #flutter #kotlin #gradle #flutter-dependencies

Вопрос:

Когда я пытаюсь сделать Флаттер assembleRelease для создания APK из Android Studio, я получаю эту кучу предупреждений.

 w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.50/50ad05ea1c2595fb31b800e76db464d08d599af3/kotlin-stdlib-jdk7-1.3.50.jar (version 1.3)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.5.10/da6a904b132f0402fa4d79169a3c1770598d4702/kotlin-stdlib-1.5.10.jar (version 1.5)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.31/6dd50665802f54ba9bc3f70ecb20227d1bc81323/kotlin-stdlib-common-1.4.31.jar (version 1.4)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.50/b529d1738c7e98bbfa36a4134039528f2ce78ebf/kotlin-stdlib-1.3.50.jar (version 1.3)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.50/3d9cd3e1bc7b92e95f43d45be3bfbcf38e36ab87/kotlin-stdlib-common-1.3.50.jar (version 1.3)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.71/e71c3fef58e26affeb03d675e91fd8abdd44aa7b/kotlin-stdlib-common-1.3.71.jar (version 1.3)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.10/ea29e063d2bbe695be13e9d044dcfb0c7add398e/kotlin-stdlib-1.4.10.jar (version 1.4)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.71/9180d3aec3f0b2ea6ef0dcf01b464a6e2219e381/kotlin-stdlib-jdk7-1.3.71.jar (version 1.3)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.71/898273189ad22779da6bed88ded39b14cb5fd432/kotlin-stdlib-1.3.71.jar (version 1.3)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.31/e613be5465ef1e6fd0468707690b7ebf625ea2fe/kotlin-stdlib-jdk8-1.4.31.jar (version 1.4)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.31/84ce8e85f6e84270b2b501d44e9f0ba6ff64fa71/kotlin-stdlib-jdk7-1.4.31.jar (version 1.4)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.31/a58e0fb9812a6a93ca24b5da75e4b5a0cb89c957/kotlin-stdlib-1.4.31.jar (version 1.4)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.5.10/c49d0703d16c6cb1526cc07b9b46486da1dd8a60/kotlin-stdlib-jdk7-1.5.10.jar (version 1.5)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.5.10/6b84d926e28493be69daf673e40076f89492ef7/kotlin-stdlib-common-1.5.10.jar (version 1.5)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.10/30e46450b0bb3dbf43898d2f461be4a942784780/kotlin-stdlib-jdk7-1.4.10.jar (version 1.4)
    C:/Users/abc/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.10/6229be3465805c99db1142ad75e6c6ddeac0b04c/kotlin-stdlib-common-1.4.10.jar (version 1.4)
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath
 

Похоже, что по какой-то причине включаются конфликтующие версии Kotlin.

Один из ответов, которые я нашел здесь, предлагал проверить build.gradle, чтобы убедиться, что в gradle верхнего уровня включена та же версия Kotlin, что и в каталоге /app, что и есть. Он использует Kotlin 1.5.10, указанный через свойство верхнего уровня $kotlin_version следующим образом:

 buildscript {
    ext.kotlin_version = '1.5.10'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.8'
    }
}
 

Во app/build.gradle мне есть это:

 dependencies {

    // Import the Firebase BoM
    implementation platform('com.google.firebase:firebase-bom:28.4.0')

    // Add the dependency for the Firebase SDK for Google Analytics
    // When using the BoM, don't specify versions in Firebase dependencies
    implementation 'com.google.firebase:firebase-analytics-ktx'
    implementation 'com.google.firebase:firebase-messaging'

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.multidex:multidex:2.0.1'
}
 

Я взглянул на дерево зависимостей приложений gradle, и, похоже, что для пути к выпуску Runtimeclasspath я могу видеть только те версии kotlin, которые предназначены для собственных библиотек Facebook и Google:

  --- project :flutter_facebook_auth
|     --- com.facebook.android:facebook-login:11.1.1
|    |     --- com.facebook.android:facebook-core:11.1.1
|    |    |     --- androidx.annotation:annotation:1.1.0
|    |    |     --- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
|    |    |     --- com.android.installreferrer:installreferrer:1.0
|    |    |     --- androidx.core:core-ktx:1.3.2
|    |    |    |     --- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 1.5.10
|    |    |    |    |     --- org.jetbrains:annotations:13.0
|    |    |    |    |    --- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.10
|    |    |    |     --- androidx.annotation:annotation:1.1.0
|    |    |    |    --- androidx.core:core:1.3.2 (*)
|    |    |    --- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10 -> 1.5.10
|    |    |         --- org.jetbrains.kotlin:kotlin-stdlib:1.5.10 (*)
 
  --- project :firebase_messaging
|     --- project :firebase_core (*)
|     --- com.google.firebase:firebase-bom:28.3.1 -> 28.4.0 (*)
|     --- com.google.firebase:firebase-messaging -> 22.0.0
|    |     --- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
|    |     --- androidx.core:core:1.0.0 -> 1.3.2 (*)
|    |     --- com.google.android.datatransport:transport-api:3.0.0 (*)
|    |     --- com.google.android.datatransport:transport-backend-cct:3.0.0 (*)
|    |     --- com.google.android.datatransport:transport-runtime:3.0.0 (*)
|    |     --- com.google.android.gms:play-services-basement:17.0.0 -> 17.6.0 (*)
|    |     --- com.google.android.gms:play-services-cloud-messaging:16.0.0 (*)
|    |     --- com.google.android.gms:play-services-stats:17.0.0 (*)
|    |     --- com.google.android.gms:play-services-tasks:17.0.0 -> 17.2.1 (*)
|    |     --- com.google.firebase:firebase-common:20.0.0 (*)
|    |     --- com.google.firebase:firebase-components:17.0.0 (*)
|    |     --- com.google.firebase:firebase-datatransport:18.0.0
|    |    |     --- androidx.annotation:annotation:1.1.0
|    |    |     --- com.google.android.datatransport:transport-api:3.0.0 (*)
|    |    |     --- com.google.android.datatransport:transport-backend-cct:3.0.0 (*)
|    |    |     --- com.google.android.datatransport:transport-runtime:3.0.0 (*)
|    |    |     --- com.google.firebase:firebase-common:20.0.0 (*)
|    |    |    --- com.google.firebase:firebase-components:17.0.0 (*)
|    |     --- com.google.firebase:firebase-iid-interop:17.1.0 (*)
|    |     --- com.google.firebase:firebase-installations:17.0.0 (*)
|    |     --- com.google.firebase:firebase-installations-interop:17.0.0 (*)
|    |    --- com.google.firebase:firebase-measurement-connector:19.0.0 (*)
|     --- androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 (*)
|     --- androidx.annotation:annotation:1.1.0
|    --- io.flutter:flutter_embedding_release:1.0.0-f0826da7ef2d301eb8f4ead91aaf026aa2b52881 (*)
 --- com.google.firebase:firebase-bom:28.4.0 (*)
 --- com.google.firebase:firebase-analytics-ktx -> 19.0.1
|     --- com.google.firebase:firebase-analytics:19.0.1 (*)
|     --- com.google.firebase:firebase-common:20.0.0 (*)
|     --- com.google.firebase:firebase-common-ktx:20.0.0
|    |     --- androidx.annotation:annotation:1.1.0
|    |     --- com.google.firebase:firebase-common:20.0.0 (*)
|    |     --- com.google.firebase:firebase-components:17.0.0 (*)
|    |    --- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72 -> 1.5.10 (*)
|     --- com.google.firebase:firebase-components:17.0.0 (*)
|    --- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50 -> 1.5.10 (*)
 --- com.google.firebase:firebase-messaging -> 22.0.0 (*)
 --- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.10 (*)
 

And a couple of other dependencies such as sentry and map_launcher. However according to this dependency tree, gradle is bringing the version up to 1.5.10 anyway.

Is there any way to fix the issue with these warnings? Is there anything wrong going on?