Android:添加新的依赖项后,任务“:app:processDebugGoogleServices”执行错误:执行失败

时间:2018-08-25 19:09:02

标签: android tensorflow gradle android-gradle firebase-mlkit

完整错误跟踪:

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'

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

3 个答案:

答案 0 :(得分:2)

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

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

使用

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

并同步您的代码 因为在您的应用程序gradle中,您使用的是mi-modal-explorer 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

答案 1 :(得分:1)

对于Firebase依赖项:

  1. 始终查看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使用相同的版本控制。有关详细信息,请参见下面的博客文章(但不再考虑文章中的特定版本,因为它们不再是最新版本。有关最新版本,请参阅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

答案 2 :(得分:0)

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

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

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

  

此API需要Android SDK级别16(Jelly Bean)或更高版本。

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

开始之前 如果您尚未将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可以使用TensorFlow Lite模型,这些模型是通过Firebase远程托管的,或者存储在设备上的本地存储,或者两者兼有。

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

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

理论上,这意味着任何人都可以复制您的模型。但是,实际上,大多数模型都是特定于应用程序的,并且由于优化而模糊不清,以至于风险与竞争对手拆卸和重用代码的风险相似。不过,在应用程序中使用自定义模型之前,您应该意识到这种风险。

  

在Android API级别21(Lollipop)和更高版本上,下载了模型   到directory that is excluded from automatic backup.

在20以上版本的Android API上,该模型已下载到应用程序专用内部存储中的com.google.firebase.ml.custom.models目录中。如果使用BackupAgent启用了文件备份,则可以选择排除此目录。

有关更多详细信息,请检查https://firebase.google.com/docs/ml-kit/android/use-custom-models