同一Flutter项目问题​​中的Firebase ML-vision和admob插件-播放服务版本冲突

问题描述

对此感到非常沮丧-所以我在Flutter中有一个项目,其中涉及以下方面:

firebase_admob: ^0.10.2
firebase_ml_vision: ^0.9.9

虽然我只有firebase_ml_vision一切都能顺利编译,但是添加admob改变了这一点,现在我得到的错误是:

FAILURE: Build Failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[19.0.
  2]",but isn't being resolved to that version. Behavior exhibited by the library will be unkNown.

  Dependency failing: com.google.android.gms:play-services-vision:20.0.0 -> com.google.android.gms:play-services-vision-co
  mmon@[19.0.2],but play-services-vision-common version was 19.1.0.

  The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
  ifact with the issue.
  -- Project 'app' depends onto com.google.firebase:firebase-ml-vision@{strictly 24.1.0}
  -- Project 'app' depends on project 'firebase_ml_vision' which depends onto com.google.firebase:firebase-ml-vision@20.0.
  0
  -- Project 'app' depends onto com.google.android.gms:play-services-vision-common@{strictly 19.1.0}
  -- Project 'app' depends onto com.google.android.gms:play-services-vision-image-label@{strictly 18.0.4}
  -- Project 'app' depends onto com.google.android.gms:play-services-vision@{strictly 20.0.0}

  For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep
  endency paths to the artifact. This error message came from the google-services Gradle plugin,report issues at https://
  github.com/google/play-services-plugins and disable by adding "googleServices { disabLeversionCheck = true }" to your bu
  ild.gradle file.

到目前为止,我已经尝试了所有我能想到的东西,包括杂耍版本等。

有什么办法可以解决这个问题?

更新

经过更多实验后,我在build.gradle中添加googleServices.disabLeversionCheck = true,因此,显然,除了许多弃用警告(Hello Firebase)之外,这是真正的问题:

FAILURE: Build Failed with an exception.

* What went wrong:
Execution Failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class com.google.android.gms.internal.vision.zze found in modules jetified-play-services-vision-20.0.0-runtime.jar (com.google.android.gms:play-services-vision:20.0.0) and jetified-play-services-vision-common-19.1.0-runtime.jar (com.google.android.gms:play-services-vision-common:19.1.0)
  Duplicate class com.google.android.gms.internal.vision.zzf found in modules jetified-play-services-vision-20.0.0-runtime.jar (com.google.android.gms:play-services-vision:20.0.0) and jetified-play-services-vision-common-19.1.0-runtime.jar (com.google.android.gms:play-services-vision-common:19.1.0)
  Duplicate class com.google.android.gms.internal.vision.zzg found in modules jetified-play-services-vision-20.0.0-runtime.jar (com.google.android.gms:play-services-vision:20.0.0) and jetified-play-services-vision-common-19.1.0-runtime.jar (com.google.android.gms:play-services-vision-common:19.1.0)
  Duplicate class com.google.android.gms.internal.vision.zzh found in modules jetified-play-services-vision-20.0.0-runtime.jar (com.google.android.gms:play-services-vision:20.0.0) and jetified-play-services-vision-common-19.1.0-runtime.jar (com.google.android.gms:play-services-vision-common:19.1.0)
  Duplicate class com.google.android.gms.internal.vision.zzi found in modules jetified-play-services-vision-20.0.0-runtime.jar (com.google.android.gms:play-services-vision:20.0.0) and jetified-play-services-vision-common-19.1.0-runtime.jar (com.google.android.gms:play-services-vision-common:19.1.0)
  Duplicate class com.google.android.gms.internal.vision.zzv found in modules jetified-play-services-vision-20.0.0-runtime.jar (com.google.android.gms:play-services-vision:20.0.0) and jetified-play-services-vision-common-19.1.0-runtime.jar (com.google.android.gms:play-services-vision-common:19.1.0)
  Duplicate class com.google.android.gms.internal.vision.zzw found in modules jetified-play-services-vision-20.0.0-runtime.jar (com.google.android.gms:play-services-vision:20.0.0) and jetified-play-services-vision-common-19.1.0-runtime.jar (com.google.android.gms:play-services-vision-common:19.1.0)

  Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.

虽然仍然没有解决办法。

更新2

在寻找解决方法时,我发现了解决“已知问题”的提示https://firebase.google.com/support/release-notes/android#mlkit-self-serve-fixes

我不知道Flutter插件的作者也可以尝试实现它们吗?!

所以我尝试实现它,很明显的地方是firebase_ml_vision库的build.gradle文件(我不想在github上创建fork,所以只是出于测试目的,在驱动器上编辑了该文件),一行,并从上面链接的“解决方案”中添加了另外两行:

        api 'com.google.firebase:firebase-ml-vision:24.1.0'
        implementation 'com.google.android.gms:play-services-vision:20.1.1'
        implementation 'com.google.android.gms:play-services-vision-common:19.1.1'

原始行包含firebase-ml-vision:20.0.0

编译再次失败,但是,我没有放弃,只走了一步,只是尝试使这项工作变得可行,并且出于任何原因决定尝试在项目的apply plugin: 'com.google.gms.google-services'中注释掉android/app/build.gradle文件。 进行此更改后,项目最终得以编译,但是,当然,禁用它会导致其他问题,例如应用程序未初始化Firebase插件,因此最终仍然是一个失败。搜索继续...

更新3

这是第三次的魅力-我决定再摆弄一点,然后再次将googleServices.disabLeversionCheck = true添加到我的gradle文件中。有效。项目会编译,Firebase初始化可以正常进行,甚至admob标语都会显示,尽管每次刷新都会产生错误。叹。这几乎不是解决方案,任何人决定何时将此类库(带有此类混乱的“自助式”修复程序)推入生产环境。

解决方法

我在Firebase库中遇到了同样的问题,您应该可以将any放在库的版本旁边,如下所示:

firebase_admob: any
firebase_ml_vision: any

然后运行flutter pub get

然后检查您的pubspec.lock文件并检查库的版本,然后将其填充到pubspec.yaml文件中。

那您的矛盾就应该消失了。

让我知道我是否误解了您的问题,或者您需要进一步解释!