编译appcompat v7:26。为融合位置提供程序

时间:2017-06-20 01:24:55

标签: android gradle android-gradle

我有一个问题并且已经查看了可能重复的问题和答案,我认为这个问题没有得到其他人的回答,所以在这里提出来。

我更新了我的播放服务以使用融合位置提供程序,现在我的gradle中的appcompat显示错误。

所以我创建了一个新项目并在新项目上检查了build.gradle并且具有完全相同的appcompat但是我的项目显示错误。

apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
    applicationId "au.com.itmobilesupport.sqltwo"
    minSdkVersion 17
    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')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support:recyclerview-v7:26.+'
compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services-maps:11.0.0'
compile 'com.google.android.gms:play-services:11.0.1'
}

这一行显示错误:

compile 'com.android.support:appcompat-v7:26.+'

但是在一个新项目中它很好。为什么我收到错误?

更新:

如果删除这两行,则错误消失:

compile 'com.google.android.gms:play-services-maps:11.0.0'
compile 'com.google.android.gms:play-services:11.0.1'

但是我需要它们所以仍然有错误。

3 个答案:

答案 0 :(得分:5)

最后在ZeroOne's answer的帮助下解决了类似问题。

让我看看ZeroOnes答案的原因是Google给了我原因但不是错误。我的问题是,以下行太过包含,并且添加了许多额外的依赖项,这会使应用程序不必要地变大。

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

我只需要更具体,错误消失了。

这是最后的格斗。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "au.com.itmobilesupport.sqltwo"
        minSdkVersion 17
        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')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support:recyclerview-v7:26.+'
    compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services-maps:11.0.1'
    compile 'com.google.android.gms:play-services-location:11.0.1'
}

这是我将上述内容更改为:

的特定行
compile 'com.google.android.gms:play-services-location:11.0.1'

希望能帮助遇到同样问题的人。

答案 1 :(得分:5)

将这些行添加到build.gradle文件中,以根据Google site获取您没有的库。

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

Caution: Using dynamic dependencies (for example, palette-v7:23.0.+) can cause unexpected version updates and regression incompatibilities. We recommend that you explicitly specify a library version (for example, palette-v7:25.4.0)

答案 2 :(得分:0)

使用compile&com.google.android.gms更具体:play-services-location:11.0.1'而不是编译com.google.android.gms:play-services:11.0.1'保存了我的项目,很多人。