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

Posted

技术标签:

【中文标题】Google Play Services GCM 9.2.0 要求“更新”回 9.0.0【英文标题】:Google Play Services GCM 9.2.0 asks to "update" back to 9.0.0 【发布时间】:2016-11-02 18:46:18 【问题描述】:

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

我正在尝试将 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 我最终也做了同样的事情。但肯定想知道这里发生了什么。还没有幸运地找到答案。 然后 9.0.0 有这个错误 ***.com/questions/37361651/… 并且解决方案似乎是更新到 9.2.0...。由于这里的错误,这是不可能的:-( 如果我像 Gusthema 所说的那样在 build.gradle 文件的末尾应用插件,它就可以工作 在我的帖子here 中阅读如何正确解决此问题。 【参考方案1】:

你有电话吗

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

应用的 build.gradle 文件底部的行?

当它在顶部时我看到了一些错误,因为它写成here,它应该在底部。

【讨论】:

这不是真的,gms 插件应该在文件的底部,你可以在 gms 的文档中看到:developers.google.com/android/guides/google-services-plugin 我的立场是正确的。无论如何,这不会解决问题。 我不知道为什么我第一次尝试它时,它不起作用。由于@mbonnin 的评论而再次尝试,它现在正在工作。谢谢。 我在文件开头添加了这一行,但放在底部后它就起作用了。 在底部添加插件解决了版本冲突。【参考方案2】:

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

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

然后重建你的项目。

【讨论】:

【参考方案3】:

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

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

我的解决方案中还有另一个包,因为我使用了更多的东西,然后只使用了身份验证。

使用下面的代码更改您的 build.gradle (Module:app) 后:

    将您的包名称与 applicationId "com.YOUR_PACKAGE_HERE" 放在一行中

    同步您的项目 (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'

【讨论】:

【参考方案4】:

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

【讨论】:

啊,算了。由于没有文档另有说明,我认为最新版本将与所需的插件一起推出。 AFAIK,您确实需要该插件才能使 GCM 工作,所以我猜这是一个手动检查更新解决方案。 肯定@yaneq google docs 很烂,现在遇到了同样的问题【参考方案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 的解决方案【参考方案6】:

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

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

我从here 得到这个想法。在本教程中,第二点是说上面的插件行位于 app/build.gradle 文件的底部,这样就不会引入依赖冲突。希望对你有所帮助。

【讨论】:

为什么要重复半年前给出的答案?【参考方案7】:

对于 Cordova OR Ionic Hybrid 应用程序

在集成 Firebase 云消息传递 (FCM) 后,我的 Ionic 1 Cordova Build 遇到了非常相似的问题

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

所以一个解决方法是:在 platforms/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

我希望这对每个人都有效

【讨论】:

这只是改变了错误。这很好,因为即使尝试了数千种解决方案,我也只收到相同的错误。【参考方案8】:

将此行添加到 gradle 的底部。

应用插件:'com.google.gms.google-services'

因为它不起作用。我遇到了类似的问题。

【讨论】:

【参考方案9】:

如果您还包含 Firebase,请将它们设置为与错误所述相同的版本。

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

您的目标SDK 可能高于设备的SDK,请更改它。 例如,您的设备运行 API 23,但您的目标 SDK 是 25。 将 25 更改为 23。

【讨论】:

以上是关于Google Play Services GCM 9.2.0 要求“更新”回 9.0.0的主要内容,如果未能解决你的问题,请参考以下文章

如何为项目使用不同版本的 google-play-services 库

使用GCM时Firebase崩溃

从 C2DM 迁移到 GCM for Android SDK 19

如何使用“google.gcm”服务?

将自定义JAR库添加到Android项目时Delphi10.2中的编译器错误

Google Play 服务库更新和缺少符号 @integer/google_play_services_version