如果使用Google Play服务,则不能在没有版本冲突的情况下使用最新的compileSdkVersion和targetSdkVersion

时间:2019-01-27 16:08:42

标签: android gradle android-gradle google-play-services

我正在使用Google附近的服务库。

我有以下Gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "rstudio.vedantroy.swarm"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    //Non-default Dependencies
    implementation 'com.google.android.gms:play-services-nearby:16.0.0'


    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    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'
}

在上述文件中,支持库已过时,因此迫使我编译我的应用并将其针对SDK 26:

implementation 'com.android.support:appcompat-v7:26.1.0'

问题是,如果我将支持库更新为28.0.0,则会收到“支持库必须具有完全相同的版本”错误,因为我相信Google Play附近服务库使用的是较旧的版本支持库。

有什么办法可以解决此问题,还是我坚持按照API 26编译应用程序?

1 个答案:

答案 0 :(得分:2)

我强烈建议您将compileSdkVersiontargetSdkVersion更新为28。

之后,您可以使用以下方法解决此问题:

configurations.all {
    resolutionStrategy.eachDependency { details ->
        if (details.requested.group == 'com.android.support'
                && !details.requested.name.contains('multidex') ) {
            details.useVersion "28.0.0"
        }
    }
}

这将强制每个支持库依赖项使用完全相同的版本28.0.0