谷歌 gms:play 服务与 firebase 冲突

Posted

技术标签:

【中文标题】谷歌 gms:play 服务与 firebase 冲突【英文标题】:google gms:play service conflict with firebase 【发布时间】:2017-06-20 10:46:41 【问题描述】:

我正在尝试在我已经使用谷歌地图的项目中添加 firebase-messaging。所以当我添加 firebase 依赖时

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

我收到以下错误。

错误:.dex 文件中的方法引用数不能超过 64K。 在https://developer.android.com/tools/building/multidex.html 了解如何解决此问题 错误:任务“:app:transformClassesWithDexForDebug”执行失败。 com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException

我该如何解决这个问题 这是我的 build.gradle

apply plugin: 'com.android.application'

android 
compileSdkVersion 25
buildToolsVersion "23.0.1"

defaultConfig 
    applicationId "com.edesign.astutesol.sallaticustomerapp"
    minSdkVersion 19
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"

buildTypes 
    release 
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    



dependencies 
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:25.1.1'
compile 'com.mcxiaoke.volley:library:1.0.15'
compile 'com.github.lecho:hellocharts-library:1.5.8@aar'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

compile 'com.google.android.gms:play-services:10.0.1'
compile 'com.google.android.gms:play-services-auth:10.0.1'
apply plugin: 'com.google.gms.google-services'
compile 'com.google.firebase:firebase-messaging:10.0.1'

compile 'com.android.support:cardview-v7:25.+'
compile 'org.lucasr.twowayview:twowayview:0.1.4'


这些是谷歌依赖项

compile 'com.google.android.gms:play-services:10.0.1'
compile 'com.google.android.gms:play-services-auth:10.0.1'
apply plugin: 'com.google.gms.google-services'
compile 'com.google.firebase:firebase-messaging:10.0.1'

【问题讨论】:

嗨。你有没有看到像one这样讨论错误的帖子? @AL。是的,我尝试了 multiDexEnabled,但它也没有帮助。 如果不需要compile 'com.google.android.gms:play-services:10.0.1',请删除此依赖项。因为,它有 79958 个方法计数。 我需要这个来制作地图。我在我的应用程序中使用 latlong。 那你需要用这个.... compile 'com.google.android.gms:play-services-maps:10.0.1' 【参考方案1】:

在您的默认配置中启用 multidex。

defaultConfig 
    applicationId "com.edesign.astutesol.sallaticustomerapp"
    minSdkVersion 19
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled true

【讨论】:

我尝试了 multiDexEnabled 但并没有解决问题【参考方案2】:

如果启用 multidex 支持对您不起作用,可能是因为您可能已经为您的应用定义了自定义应用程序类。清单文件中的应用程序名称是什么?如果您通过扩展 Application 定义了自定义应用程序类(例如集成 ACRA 或谷歌分析),那么您将必须覆盖 attachBaseContext 方法。

@Override
    protected void attachBaseContext(Context context) 
        super.attachBaseContext(context);
        MultiDex.install(this);
    

【讨论】:

【参考方案3】:

简短回答:删除compile 'com.google.android.gms:play-services:10.0.1'


您的 build.gradle

中不应包含以下行
compile 'com.google.android.gms:play-services:10.0.1'

该行将包含您应用程序中的所有 google 库,这将超出方法限制(您报告的错误),并且会使您的应用程序变大而没有任何好处。

您应该只包含您需要的子库。

例子:

compile 'com.google.android.gms:play-services-auth:10.0.1

没问题,因为您只包含库的 -auth 部分。

【讨论】:

以上是关于谷歌 gms:play 服务与 firebase 冲突的主要内容,如果未能解决你的问题,请参考以下文章

谷歌框架是啥,对手机有啥影响

使用GCM时Firebase崩溃

解决! 华为鸿蒙安装Google Play,GMS三件套,设备未获得Play保护机制认证。(越过谷歌play保护机制认证,解除Google play保护机制弹窗)

谷歌播放服务aar下载11.0.4以上

如何解决 Google GMS 在被锁定失效后,无法再使用 Google Play Store的问题;亦适用于在不使用 Google GMS 的情况下,如何正常使用Google Play 商店

如何解决 Google GMS 在被锁定失效后,无法再使用 Google Play Store的问题;亦适用于在不使用 Google GMS 的情况下,如何正常使用Google Play 商店