为 Android 的 API 26 设置 Gradle

59

自从我把我的Nexus 5x升级到Android O DP3之后,我无法测试我的应用程序。我收到了一个错误,说我的Gradle文件没有配置为与新的API级别(26)一起使用。

所以我改变了这个和依赖关系,但是我仍然在所有支持库上遇到错误,比如

Failed to resolve: com.android.support:design:26.0.0-beta2

点击

Install repository and sync project

弹出进度对话框以下载正确的依赖项,但不会移除错误。清理项目,安装存储库,然后重新构建项目也不起作用。

appcompat-v7

在 appcompat-v7:26.0.0-beta2 上,在进行 Gradle 同步之前,我会收到带有以下错误的快速行:

When using a compileSdkVersion older than android-O revision 2,
the support library version must be 26.0.0-alpha1 or lower (was 26.0.0-beta2)

有人可以帮我正确地配置Gradle文件以适用于Android API 26吗?非常感谢您的任何帮助。

附注:目前我正在使用Gradle 3.0.0-alpha3,但在Gradle 2.3.2上也遇到了同样的错误。

我的Gradle文件:

apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion '26.0.0'

defaultConfig {
    applicationId "********"
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 3
    versionName "2.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.0-beta2'
compile 'com.android.support:design:26.0.0-beta2'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:cardview-v7:26.0.0-beta2'
compile 'com.android.support:recyclerview-v7:26.0.0-beta2'
compile 'com.redbooth:WelcomeCoordinator:1.0.1'
compile 'com.github.kittinunf.fuel:fuel-android:1.4.0'
compile 'com.pkmmte.view:circularimageview:1.1'
compile 'com.ramotion.foldingcell:folding-cell:1.1.0'
}

1
请参考我的回答,此处描述了如何让它正常工作。 https://dev59.com/BlcO5IYBdhLWcg3w5lUM#45706108 - bmacharia
6个回答

131

你是否已经添加了Google Maven端点

重要提示:支持库现在可通过Google的Maven存储库获得,您无需从SDK管理器下载支持库仓库。有关更多信息,请参见Support Library Setup

将此端点添加到build.gradle文件中:

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com'
        }
    }
}
可以使用快捷方式google()替换自Android Gradle v3以来的内容:
allprojects {
    repositories {
        jcenter()
        google()
    }
}
如果您已经在repositories中有任何maven url,您可以在它们后面添加引用,例如:
allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://jitpack.io'
        }
        maven {
            url 'https://maven.google.com'
        }
    }
}

1
您的代码有误,jcenter()在maven标签之前。 - greywolf82
1
错误信息仍在显示:“当使用低于Android-O修订版2的compileSdkVersion时,支持库版本必须为26.0.0-alpha1或更低版本(当前版本为26.0.0-beta2)”。但是我可以在手机上构建和运行应用程序,似乎没有问题。有什么想法吗? - GunnarK
1
@GunnarK 我已经安装了 AS 3.0,这里也出现了同样的情况。我猜版本表/ XML 中缺少某些内容...我们不必担心它。 - I.G. Pascual
在repositories部分添加google()与上述操作相同吗? - Banee Ishaque K
2
已升级到alpha7,但布局设计师在alpha7上无法工作(已提交错误,点击此处查看Layout Designer Not Working...)。现在,我降级到最新的稳定版本2.3.3。google()会起作用吗?我正在使用全局gradle分发,我的版本是:4.1-milestone-1。build.gradle文件中的com.android.tools.build:gradle:3.0.0-alpha7行怎么办? - Banee Ishaque K
显示剩余7条评论

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

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.keshav.retroft2arrayinsidearrayexamplekeshav"
        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'
        }
    }
}
 compile 'com.android.support:appcompat-v7:26.0.1'
    compile 'com.android.support:recyclerview-v7:26.0.1'
    compile 'com.android.support:cardview-v7:26.0.1'

8

除了将maven源URL设置为gradle,我建议同时添加design和appcompat库。目前最新版本为26.1.0。

maven {
    url "https://maven.google.com"
}

...

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'

7

您可以将 google() 添加到存储库块中

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://github.com/uPhyca/stetho-realm/raw/master/maven-repo'

        }
        maven {
            url "https://jitpack.io"
        }
        google()
    }
}

3
Android Gradle插件v3.0.0-alpha1以来,才在Android Studio 3中实现了。 - I.G. Pascual

6

这个问题似乎已经在Android Studio 3.0 Canary 4和Gradle 3.0.0-alpha4解决了。


5

您必须在模块级别build.gradle文件中添加以下内容:

//module-level build.gradle file
repositories {
    maven {
        url 'https://maven.google.com'

    }
}

请参考: Google的Maven库

我观察到在使用Android Studio 2.3.3时,我必须模块级别的build.gradle中添加repositories{maven{url 'https://maven.google.com'}}。而在Android Studio 3.0.0中,则无需在模块级别的build.gradle中添加此内容。只需要在其他帖子中提到的项目级别的build.gradle中添加即可。

//project-level build.gradle file
allprojects {
 repositories {
    jcenter()
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
  }
}

更新时间:2017年11月14日:本文介绍的解决方案在发布时是有效的。然而,此后有了多次更新(甚至涉及到我所提到的网站),我不确定现在是否仍然有效。在 Android Studio 3.0.0 推出之前,我曾使用上述解决方案一个月。


你看到了什么错误提示,促使你在模块级别添加额外的配置? - jk7
作为一个例子,我列举一些库的错误:无法解析:com.android.support:support-v4:26.1.0,无法解析:com.android.support.test.espresso:espresso-core:3.0.1,无法解析:com.android.support:appcompat-v7:26.1.0等。 - billst
@billst 你检查过你使用的版本是否一致并保持一致性了吗? - Rohan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接