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"
所以现在我的app
和common-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 或版本冲突执行失败