google-services 插件无法检测到 com.google.android.gms 或 com.google.firebase 的任何版本 - 奇怪的行为

Posted

技术标签:

【中文标题】google-services 插件无法检测到 com.google.android.gms 或 com.google.firebase 的任何版本 - 奇怪的行为【英文标题】:google-services plugin could not detect any version for com.google.android.gms or com.google.firebase - strange behaviour 【发布时间】:2018-02-15 01:12:54 【问题描述】:

我有 4 个模块的项目:

应用(主) 通用库 C D

我在这里正确地将 firebase 设置为状态:https://firebase.google.com/docs/android/setup

在我的 app 模块中,我不使用任何额外的库,只使用模块依赖项:

dependencies 
    debugCompile project(path: ':common-lib', configuration: 'debug')
    releaseCompile project(path: ':common-lib', configuration: 'release')

在我的 common-lib 模块中,我使用 firebase 库:

dependencies 
    (...)
    compile 'com.google.firebase:firebase-core:11.2.0'
    compile 'com.google.firebase:firebase-crash:11.2.0'
    compile 'com.google.firebase:firebase-messaging:11.2.0'
    compile 'com.google.firebase:firebase-config:11.2.0'
    compile 'com.google.firebase:firebase-ads:11.2.0'

在这种情况下,项目编译但我收到消息:

google-services plugin could not detect any version for com.google.android.gms or com.google.firebase, default version: 9.0.0 will be used.
please apply google-services plugin at the bottom of the build file.

有趣的是,当我将 common-lib firebase 依赖项复制到我的应用模块时,消息消失了。

这是一个错误吗?我设置错了吗?我的应用程序输出文件是否包含正确的 11.2.0 版本的 firebase 库或消息中所说的 9.0.0 ?


已编辑

项目 build.gradle:

buildscript 
    repositories 
        jcenter()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.google.gms:google-services:3.1.0'
    


allprojects 
    repositories 
        jcenter()
        maven 
            url 'https://maven.google.com'
            // Alternative URL is 'https://dl.google.com/dl/android/maven2/'
        
        maven  url 'https://jitpack.io' 
    

应用模块 build.gradle

apply plugin: 'com.android.application'

android 
    (...)



dependencies 

    debugCompile project(path: ':common-lib', configuration: 'debug')
    debugTestCompile project(path: ':common-lib', configuration: 'debugTest')
    releaseCompile project(path: ':common-lib', configuration: 'release')



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

common-lib moudle build.gradle

apply plugin: 'com.android.library'


android 
    (...)

dependencies 
    (...)
    //firebase
    compile 'com.google.firebase:firebase-core:11.2.0'
    compile 'com.google.firebase:firebase-crash:11.2.0'
    compile 'com.google.firebase:firebase-messaging:11.2.0'
    compile 'com.google.firebase:firebase-config:11.2.0'
    compile 'com.google.firebase:firebase-ads:11.2.0'

【问题讨论】:

哦,我想你应该把它放在 common-lib 上。或任何实际具有 Firebase 依赖项的对象 @cricket_007 当我将“应用插件:'com.google.gms.google-services'”添加到我的 common-lib 时,我收到错误:“无法获取未知属性 'LibraryVariants ' 用于 com.android.build.gradle.LibraryExtension 类型的对象。" @AppiDevo 您是否尝试过使用 gradle app:dependencies 命令查看 gradle 依赖树? 为什么会发生这种情况?我遇到了同样的问题,我必须将 firebase 添加到应用程序的依赖项中才能解决此问题。我过去不需要这个,但只是在升级 gradle 等,这突然出现了 【参考方案1】:

你试过添加这个吗:

apply plugin: 'com.google.gms.google-services'在gradle文件的根目录?

【讨论】:

是的,我在 app 模块 build.gradle 文件的底部有这个(我没有 firebase 依赖项) 粘贴你的 gradle 文件以确保 quote: 然后,在你的模块 Gradle 文件(通常是 app/build.gradle)中,在文件底部添加 apply plugin 行以启用 Gradle 插件: 它在 app/build.gradle 中,而不是根目录 @Appi @Vyacheslav 我编辑了包含我的 build.gradle 文件的帖子。【参考方案2】:

我通过添加 app (main) 模块依赖项解决了这个问题:

implementation "com.google.firebase:firebase-core:$firebase_version"
implementation "com.android.support:appcompat-v7:$support_version"

所以现在我的appcommon-lib (library) 模块中有以上依赖项。 我还添加了$firebase_version$support_version,这样维护起来更容易。变量放在项目gradle.build

buildscript 

    ext 
        firebase_version = '11.8.0'
        support_version = '26.1.0'
    
    (...)

出现问题是因为 google-services 插件检查依赖项,但在应用程序 gradle 文件中找不到它。但它不会检查库依赖关系,即使您通过将 implementation 更改为 api 来显式公开它:

common-lib gradle.build:

api "com.google.firebase:firebase-core:$firebase_version"
api "com.android.support:appcompat-v7:$support_version"

还是不行。


更多关于how apply plugin: 'com.google.gms.google-services' works 如果您迁移到 Android Studio 3 和 Gradle 4,您还可以避免“Android 依赖项 '..' 的编译 (..) 和运行时 (..) 类路径的版本不同”错误如果您向应用程序模块添加其他依赖项。 More about this。

【讨论】:

以上是关于google-services 插件无法检测到 com.google.android.gms 或 com.google.firebase 的任何版本 - 奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

文件 google-services.json 丢失。没有它,Google 服务插件无法运行 ionic 3

Ionic 3 错误:“文件 google-services.json 丢失。没有它,Google 服务插件无法运行。”在 ionic cordova 构建/准备 android

收到“错误:未找到 ID 为 'com.google.gms.google-services' 的插件”错误

未找到插件 [id: 'com.google.gms.google-services']

通过更新 google-services 插件的版本,任务 processDebugGoogleServices 或版本冲突执行失败

错误:修复版本冲突(google-services 插件)