Android: Getting Error:Execution failed for task ':app:processDebugGoogleServices' after adding a new dependency

Android: Getting Error:Execution failed for task ':app:processDebugGoogleServices' after adding a new dependency

完整错误跟踪:

Error:Execution failed for task ':app:processDebugGoogleServices'.
> Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 11.4.2.

添加最后一个依赖时出现错误:

compile 'com.google.firebase:firebase-ml-model-interpreter:16.2.0'

这是我的 gradle 依赖项:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.jakewharton:butterknife:8.6.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
    compile 'com.facebook.android:facebook-login:4.27.0'
    compile 'com.firebaseui:firebase-ui-database:2.0.1'
    compile 'com.firebaseui:firebase-ui-storage:2.0.1'
    compile 'com.firebase:firebase-jobdispatcher:0.6.0'
    compile 'com.google.firebase:firebase-core:11.4.2'
    compile 'com.google.firebase:firebase-auth:11.4.2'
    compile 'com.google.firebase:firebase-ads:11.4.2'
    compile 'com.google.firebase:firebase-database:11.4.2'
    compile 'com.google.firebase:firebase-storage:11.4.2'
    compile 'com.google.firebase:firebase-messaging:11.4.2'
    compile 'com.android.support:design:25.4.0'
    compile 'com.android.support:appcompat-v7:25.4.0'
    compile 'com.android.support:recyclerview-v7:25.4.0'
    compile 'com.android.support:cardview-v7:25.4.0'
    compile 'com.android.support:support-v4:25.4.0'
    implementation 'com.android.support:support-v4:25.4.0'
    implementation 'com.android.support:support-vector-drawable:25.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'com.github.chrisbanes:PhotoView:2.1.3'
    //network
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true
    }
    //billing
    compile 'com.anjlab.android.iab.v3:library:1.0.44'
    //tutorial
    compile 'com.github.popalay:tutors:1.0.6'
    //rate dialog
    compile 'io.github.kobakei:ratethisapp:1.2.0'
    compile 'com.github.tozny:java-aes-crypto:1.1.0'
    compile 'com.flurry.android:analytics:8.1.0'
    compile 'com.github.ceryle:RadioRealButton:v2.1.1'
    compile 'com.github.drawers:SpinnerDatePicker:1.0.6'
/*    compile 'com.siclo.ezphotopick:library:1.0.8'
    implementation project(':EZPhotoPickerLib')*/
    compile project(path: ':EZPhotoPickerLib')

    compile "commons-io:commons-io:2.6"

    compile "com.github.hotchemi:permissionsdispatcher:3.1.0"
    annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.1.0"

    compile 'org.tensorflow:tensorflow-lite:+'

    compile 'com.google.firebase:firebase-ml-model-interpreter:16.2.0'

}

apply plugin: 'com.google.gms.google-services'

已尝试同步库,但无论我做什么,我都会不断收到此错误。

转到您的项目级别构建并替换

    classpath 'com.google.gms:google-services:3.x.x'

    classpath 'com.google.gms:google-services:4.0.0'

并同步您的代码 因为在您的应用程序 gradle 中,您使用的是 mi-modal-interpreter lastes,它具有与 gsm 最新版本兼容的依赖版本。而您使用的是旧版本 google.gsm,这会混淆版本冲突。

如果您将 google.gsm 更新为 4.x.x,那么您可能必须将 google 的其他所有依赖项更新为最新版本。而且您还使用 firebase.ui:2.x.x 将这些 UI 更新为 firebase.ui:3.x.x 那么您也需要更改代码,因为一些其中的方法是 ui:2。x.x 也被替换为新方法 refernce

对于 Firebase 依赖项:

  1. 始终查看 "Getting Started" SDK/插件版本指南: https://firebase.google.com/docs/android/setup 截至 2018 年 8 月的最新 google-services 插件版本为 4.0.1

  2. 从 2018 年 5 月开始,Google Play 服务和 Firebase Android SDK 开始采用符合语义版本控制的新版本控制系统。将所有相关 SDK 升级到 15.0.0+ 后(查看每个 API 的文档),您不再需要为每个 API 使用相同的版本控制。有关详细信息,请参阅下面的博客 post(但请忽略 post 中的特定版本,因为它们不再是最新的。请参阅 Firebase 文档了解最新版本): http://www.googblogs.com/announcing-new-sdk-versioning-in-google-play-services-and-firebase/

此外,Firebase SDK 版本: https://firebase.google.com/support/release-notes/android

参考:https://firebase.google.com/docs/ml-kit/android/use-custom-models

作为最后的答案更新gradle
再次查看官方站点文档

使用 TensorFlow Lite 模型在 Android 上使用 ML Kit 进行推理 您可以使用 ML Kit 通过 TensorFlow Lite 模型执行设备上的推理。

This API requires Android SDK level 16 (Jelly Bean) or newer.

请参阅 GitHub 上的 ML Kit 快速入门示例,了解正在使用的 API 示例,或尝试代码实验室。

开始之前 如果您尚未将 Firebase 添加到您的应用程序,请按照 getting started guide 中的步骤进行操作。 在您的应用级 build.gradle 文件中包含 ML Kit 的依赖项:

dependencies {
  // ...

  implementation 'com.google.firebase:firebase-ml-model-interpreter:16.2.0'
}

将您要使用的 TensorFlow 模型转换为 TensorFlow Lite (tflite) 格式。参见 TOCO: TensorFlow Lite Optimizing Converter.

托管或捆绑您的模型 在您可以在您的应用程序中使用 TensorFlow Lite 模型进行推理之前,您必须使该模型可用于 ML Kit。 ML Kit 可以使用使用 Firebase 远程托管的 TensorFlow Lite 模型,本地存储在设备上,或两者兼而有之。

通过在 Firebase 上托管模型并将模型存储在本地,您可以确保在可用时使用最新版本的模型,但当 Firebase 托管的模型不可用时,您应用的 ML 功能仍然有效不可用。

模型安全 无论您如何使您的 TensorFlow Lite 模型可供 ML Kit 使用,ML Kit 都会将它们以标准序列化 protobuf 格式存储在本地存储中。

理论上,这意味着任何人都可以复制您的模型。然而,在实践中,大多数模型都是特定于应用程序的,并且被优化所混淆,以至于风险类似于竞争对手反汇编和重用您的代码的风险。不过,在您的应用程序中使用自定义模型之前,您应该意识到这种风险。

On Android API level 21 (Lollipop) and newer, the model is downloaded to a directory that is excluded from automatic backup.

在 Android API 级别 20 及更早时,模型将下载到应用程序私有内部存储中名为 com.google.firebase.ml.custom.models 的目录中。如果您使用 BackupAgent 启用文件备份,您可以选择排除此目录。

更多详情请查看https://firebase.google.com/docs/ml-kit/android/use-custom-models