Google Play服务GCM 9.2.0要求“更新”回9.0.0


178

所以今天早上我开始更新到我的项目库的最新版本。

我正在尝试将GCM更新到最新版本9.2.0,但出现此错误:

错误:任务':app:processDebugGoogleServices'的执行失败。请通过更新google-services插件的版本来解决版本冲突(有关最新版本的信息,访问https://bintray.com/android/android-tools/com.google.gms.google-services/)或将com.google.android.gms的版本更新为9.0.0。

这就是我的代码:

dependencies {
    classpath 'com.android.tools.build:gradle:2.1.2'
    classpath 'com.google.gms:google-services:3.0.0'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}

然后:

dependencies {
    ...

    compile "com.google.android.gms:play-services-gcm:9.2.0"

    ...
}

是否有人遇到相同问题/已解决相同问题?

谢谢。

编辑

显然,您必须在app / build.gradle文件的底部应用GSM插件。否则,版本9.2.0将在您的项目中引起冲突。

作为参考,这是我的app / build.gradle文件的外观:

apply plugin: "com.android.application"
apply plugin: "com.neenbedankt.android-apt"

android {
    ...
}

dependencies {
    ...

    // Google Cloud Messaging
    compile "com.google.android.gms:play-services-gcm:9.2.0"

    ...
}

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

同样的问题,我回滚到9.0.0
mbonnin

@mbonnin我最终也做了同样的事情。但是肯定想知道这里发生了什么。还不是很幸运找到答案。
herrmartell '16

2
然后9.0.0有了这个bug stackoverflow.com/questions/37361651 / ...,解决方案似乎是更新到9.2.0...。由于这里的错误,这是不可能的:-(
mbonnin

6
如果我在build.gradle文件的末尾应用插件,如Gusthema所说的,那么它就起作用了
mbonnin

此处阅读如何以正确的方式纠正此问题。
Pedro Varela

Answers:


507

你有线吗

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

应用程序的build.gradle文件底部的第几行?

当它在顶部并且写在这里时,我看到了一些错误,应该在底部。


11
事实并非如此,gms插件应位于文件的底部,如您在
gms

1
我站得住了。无论如何,这将无法解决问题。
herrmartell '16

1
我不确定为什么第一次尝试时它不起作用。由于@mbonnin的评论,再次尝试了一下,它现在可以正常工作。谢谢。
herrmartell '16

9
我已经在文件的开头添加了这一行,但是在将其放在底部之后仍然有效。
SHA2NK

2
在底部添加插件解决了版本冲突。
Pratima

54

只需将此行放在应用程序模块(而不是项目根目录)gradle文件的底部。

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

然后重建您的项目。


11

我遇到了同样的问题,今天是2016年-10月-06日,我解决了这个问题:

我更改了所有以9.开头的依赖项。到9.6.1,我使用sdk版本24和目标版本17进行了编译。

我的解决方案中还有另一个软件包,因为我使用了更多的东西,而不仅仅是身份验证。

用下面的代码更改build.gradle(Module:app)后,请执行以下操作:

  1. 将您的包裹NAME放在一行applicationId“ com.YOUR_PACKAGE_HERE”

  2. 同步项目(Ctrl + alt + v),然后再次构建。

这是对我有用的文件buid.gradle(Module:app)的代码:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"
    defaultConfig {
        applicationId "com.YOUR_PACKAGE_HERE"
        minSdkVersion 24
        targetSdkVersion 17
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile 'com.google.firebase:firebase-core:9.6.1'
    compile 'com.google.firebase:firebase-database:9.6.1'

    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'

    compile 'com.google.firebase:firebase-crash:9.6.1'
    testCompile 'junit:junit:4.12'

    compile 'com.google.firebase:firebase-messaging:9.6.1'

    compile 'com.google.firebase:firebase-ads:9.6.1'


    compile 'com.google.firebase:firebase-auth:9.6.1'


    compile 'com.google.android.gms:play-services:9.6.1'

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

6

以前的版本也是如此。令人讨厌的是,新版本的com.google.android.gms库始终在插件之前发布,并且由于与旧插件不兼容而无法使用新版本。我不知道现在是否需要插件(谷歌文档很烂)。我记得没有的时候。唯一的方法是等待新的插件版本,或者您可以尝试删除插件依赖项,但是正如我所说,我不确定gcm是否可以在没有它的情况下工作。我知道9.2.0版本的主要功能是新的Awareness API https://inthecheesefactory.com/blog/google-awareness-api-in-action/en,如果不需要它,则可以使用9.0。 0版本没有任何麻烦。


啊,去吧。由于没有文档说明,我假设最新版本将随所需的插件一起推出。AFAIK,您确实需要使GCM正常工作的插件,所以我想这是一个手动检查更新解决方案。
herrmartell '16

1
可以肯定,@ yaneq谷歌文档很烂,现在遇到了同样的问题
Lutaaya Huzaifah Idris 16-10-7

5

Gustavomcls将com.google。*版本更改为相同版本的解决方案为我工作。

我在buid.gradle(Module:app)中将两个依赖关系都更改为9.2.1

compile 'com.google.firebase:firebase-ads:9.2.1'
compile 'com.google.android.gms:play-services:9.2.1'

我也有这个问题,这是由于Firebase引起的,但是我不喜欢这种将Firebase版本降级到9.2.1的解决方案
Sam Bellerose

2

app/build.gradle从您的应用程序模块打开,然后在依赖项块之后的行下方重写。这使插件可以确定您使用的Play服务的版本

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

我从这里得到了这个主意。在本教程中,第二点要说的是,插件行以上位于app/build.gradle文件的底部,因此不会引入依赖项冲突。希望它能对您有所帮助。


为什么要重复半年前给出的答案?
Bevor

2

对于Cordova或Ionic Hybrid App

在集成Firebase Cloud Messaging(FCM)之后,我的Ionic 1 Cordova Build出现了非常相似的问题

我通过以下步骤解决了此问题

因此,一个解决方法是:在platform / android中打开project.properties(它是一个文件),您将得到类似的内容

cordova.system.library.1=com.google.android.gms:play-services-ads:+
cordova.system.library.2=com.google.firebase:firebase-core:+
cordova.system.library.3=com.google.firebase:firebase-messaging:+

更换

+

使用您的目标版本号签名-如下所示

cordova.system.library.1=com.google.android.gms:play-services-ads:9.0.0
cordova.system.library.2=com.google.firebase:firebase-core:9.0.0
cordova.system.library.3=com.google.firebase:firebase-messaging:9.0.0

保存文件

然后使用

 ionic cordova run android

我希望这对每个人都有效


这只是改变了错误。很好,因为即使尝试了成千上万的解决方案,我也只收到相同的错误。
太空人


1

如果您还包括Firebase,则使它们具有与错误提示相同的版本。


0

在尝试使用定位服务之前,我对此没有任何问题,这时我不得不将放置apply plugin: 'com.google.gms.google-services'在文件的底部而不是顶部。原因是当您将其放在顶部时会发生碰撞问题,而将其放在底部时,可以避免这些问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.