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

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'

当前回答

修改应用程序或模块的build.gradle

android {
    defaultConfig {
        ...
        minSdkVersion 21 <----- *here
        targetSdkVersion 26
        multiDexEnabled true <------ *here
    }
    ...
}

根据官方文件

Multidex support for Android 5.0 and higher Android 5.0 (API level 21) and higher uses a runtime called ART which natively supports loading multiple DEX files from APK files. ART performs pre-compilation at app install time which scans for classesN.dex files and compiles them into a single .oat file for execution by the Android device. Therefore, if your minSdkVersion is 21 or higher, you do not need the multidex support library. For more information on the Android 5.0 runtime, read ART and Dalvik.

https://developer.android.com/studio/build/multidex

其他回答

我知道我的答案晚了,但是,我确信这个问题主要是由一个依赖项引起的,“com.google.android.gms:play-services”。请阅读完整的答案,以便更好地理解问题和解决方案。

在我的情况下,我使用的是'com.google.android.gms:play-services-location:21.0.1',这是它的最新版本,当我写这个答案的时候。它有太多的方法计数。 我使用它的唯一动机是从用户的设备中获取位置。谷歌建议只使用play-services-location来获取位置,所以我不想替换这个依赖来完成我的工作。 经过无数次谷歌搜索,我发现,

您可以降低版本

之前的稳定版本,来完成你的工作。对于我来说,最适合我的版本是17.1.0。所以我建议你只使用这个特定的版本,如果你的用例使用play-services-location完全像我的。

做这些改变

implementation 'com.google.android.gms:play-services-location:21.0.1'

to

implementation 'com.google.android.gms:play-services-location:17.1.0'

尽管如此,在你的代码中总是有启用多索引的选项,但是,在我看来,这是解决这个问题最低效的方法。

如果你能找到导致dex文件大小变大的根本原因 method count,那么我想你应该调整或替换它 依赖。

当你使用依赖时,你的方法增加了! 谷歌有一个解。叫做Multidex!

注意:确保最小SDK大于14。

在你的构建中。gradle:

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}



  dependencies {
      implementation 'com.android.support:multidex:1.0.3'
    }

对于androidX使用:

 def multidex_version = "2.0.1"
 implementation 'androidx.multidex:multidex:$multidex_version'

欲了解更多信息,请访问原文链接:

https://developer.android.com/studio/build/multidex

在构建应用程序

apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.proyecto.marketdillo"
    minSdkVersion 14
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0-rc02'
implementation 'com.android.support:design:28.0.0-rc02'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.android.support:multidex:1.0.3'
}
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

只需要做以下几点:

build.gradle

(module:app)


android {
            ....
      defaultConfig {
              multiDexEnabled true // enable mun
      }
}

并在构建中添加以下依赖项。Gradle应用程序级别文件

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
}