我想添加融合的位置服务,但它告诉我一些错误。 帮助我。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "27.0.1"
    defaultConfig {
        applicationId "com.example.adil.bloodbankapplication"
        minSdkVersion 15
        targetSdkVersion 26
        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(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:26.1.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-auth:11.8.0'
    compile 'com.google.firebase:firebase-database:11.8.0'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'junit:junit:4.12'
    compile 'com.android.support:design:26.1.0'
    compile 'com.github.joielechong:countrycodepicker:2.1.5'
    compile 'com.jaredrummler:material-spinner:1.2.4'
    compile 'hanks.xyz:htextview-library:0.1.5'
    compile 'com.firebaseui:firebase-ui-database:1.2.0'
    compile 'com.google.android.gms:play-services:11.8.0'
}


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

当前回答

他的问题在这里,移除它

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

why?

注意:不要使用组合play-services目标。它带来了几十个库,使您的应用程序变得臃肿。相反,只指定应用程序使用的特定谷歌Play服务api。

使用你所需要的https://developers.google.com/android/guides/setup

比如位置服务

com.google.android.gms:play-services-location:11.8.0

对于云消息传递

com.google.android.gms:play-services-gcm:11.8.0

其他回答

我不知道为什么,也许是因为我在Kotlin开发,但要修复这个错误 我最后必须创建一个扩展MultiDexApplication的类,就像这样:

class MyApplication : MultiDexApplication() {
}

然后在manifest。xml中进行设置

<application
        ...
        android:name=".MyApplication">

为了不让任何人感到困惑,我也这样做:

multiDexEnabled true
implementation 'com.android.support:multidex:1.0.3'

对于androidx,这也适用于我:

implementation 'androidx.multidex:multidex:2.0.0'

...

<应用android: name = " android.support.multidex.MultiDexApplication " >

对我没用吗

如果你在Proguard中使用minifyEnabled,你可能不需要启用multi-dex。我同意MG Developer的观点,如果可能的话,你应该尽量避免使用多重索引。我的解决方案是只对调试版本启用multi-dex。minifyEnabled解决了发布版本的问题

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        // getting error: Cannot fit requested classes in a single dex file.  # methods: 65537 > 65536
        // https://developer.android.com/studio/build/multidex
        // minifyEnabled true (used with release) will fix this by getting rid of unused method calls, but this will hide debugging info on crash
        multiDexEnabled true
    }
}

如果你正在构建DEBUG APK,只需添加:

debug {
            multiDexEnabled true
        }

内部buildTypes

如果你正在构建RELEASE APK,添加 释放块multiDexEnabled为true为-

release {
                ...
                multiDexEnabled true
                ...
        }

在痛苦了两个小时后找到了解决办法。

文件路径:android/build.gradle

为我工作

defaultConfig {
    applicationId "com.something"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName "1.0"
    multiDexEnabled true --> This works for me
}

如果您的minSdkVersion设置为21或更高,则multidex默认启用,您不需要multidex支持库。-参考:https://developer.android.com/studio/build/multidex#mdex-gradle

我遇到过这个错误两次,解决方案是;检查你的应用程序gradle文件来查看你的目标SDk,如果它是20或更高,只需添加一行到你的defaultconfig {multiDexEnabled true}

否则,如果targetSDK小于20,则将该行添加到defaultConfig中,并添加一个依赖项

implementation 'com.android.support:multidex:1.0.3'.

点击这个链接了解更多。

https://developer.android.com/studio/build/multidex#mdex-gradle