为 api 26 (Android) 设置 Gradle

Posted

技术标签:

【中文标题】为 api 26 (Android) 设置 Gradle【英文标题】:Setting up Gradle for api 26 (Android) 【发布时间】:2017-11-13 23:21:45 【问题描述】:

由于我已将 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)

有人可以帮我为 Android API 26 正确配置 gradle 文件吗? 任何帮助将不胜感激。

PS:我目前正在使用 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'

【问题讨论】:

请参考我的回答我是如何工作的***.com/a/45706108/5268588 【参考方案1】:

你添加google maven endpoint了吗?

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

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

allprojects 
    repositories 
        jcenter()
        maven 
            url 'https://maven.google.com'
        
    

从 Android Gradle v3 开始可以用快捷方式google() 代替:

allprojects 
    repositories 
        jcenter()
        google()
    

如果您在repositories 中已经有任何maven url,您可以在它们之后添加引用,即:

allprojects 
    repositories 
        jcenter()
        maven 
            url 'https://jitpack.io'
        
        maven 
            url 'https://maven.google.com'
        
    

【讨论】:

你的代码错了,jcenter()是before maven标签 谢谢!这对我有用。指定的 url 是 jitpack.io 仍然显示错误“当使用早于 android-O 修订版 2 的 compileSdkVersion 时,支持库版本必须为 26.0.0-alpha1 或更低(原为 26.0.0-beta2)”。但是我可以在我的手机上构建和运行该应用程序而没有问题,看来.. 有什么想法吗? @GunnarK 我已经安装了 AS 3.0,这里也发生了同样的事情。我猜版本表/xml中缺少某事......我们不会担心它 已升级到 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 行呢?【参考方案2】:
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'

【讨论】:

【参考方案3】:

Appart 从将 maven 源 URL 设置为您的 gradle,我建议同时添加设计和 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'

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

仅从Android Gradle plugin v 3.0.0-alpha1开始,在Android Studio 3中【参考方案5】:

似乎由 Android Studio 3.0 Canary 4 和 Gradle 3.0.0-alpha4 解决。

【讨论】:

【参考方案6】:

您必须在 MODULE-LEVEL build.gradle 文件中添加:

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

    

见:Google's Maven repository

我观察到,当我使用 Android Studio 2.3.3 时,我必须MODULE- 中添加 repositoriesmavenurl 'https://maven.google.com'级别 build.gradle。 在 Android Studio 3.0.0 的情况下,不需要在模块级 build.gradle 中添加。 project-level 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 你检查过你使用相同的版本并保持一致性吗?

以上是关于为 api 26 (Android) 设置 Gradle的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Android 中的“调用需要 API 级别 26(当前最低为 25)”错误

调用需要 API 26(最小为 18):android.app.NotificationChannel

JobIntentService 不适用于 Oreo 以下的 API (API <= 26)

Android Play 商店最低目标 API 26

Android Google Maps Direction Api - Api 密钥限制不起作用

从 API 级别 < Android 26 (Oreo) 的 RGB 值创建颜色对象