插件太旧,请更新到较新的版本,或将 ANDROID_DAILY_OVERRIDE 环境变量设置为

Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to

今天我刚刚从 Android SDK 中导入了一个示例应用程序作为我的项目(分析)中的一个模块,当我尝试同步它时突然遇到了这个 gradle 错误:Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE envrinment variable to...

这是我的应用 gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.0"
    defaultConfig {
        applicationId "xxx.xxxxxx.xxxxx"
        versionCode 1
        versionName '1'
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName '1'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'com.android.support:cardview-v7:21.0.0'
    compile 'com.facebook.android:facebook-android-sdk:3.21.1'
    testCompile 'junit:junit:4.12'
    compile project(':volley')
}

您是否知道可能是哪个原因(我使用的是插件版本 1.1.0-rc1、gradle 版本 2.2 和 Android Studio 版本 1.1.0)?

编辑:

这是我的上衣build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0-rc1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

就像 CommonsWare 建议的那样,确保你有 Gradle 2.2.1+(最新的是 2.3)。

确保升级您的 Android Studio,但这里有 "plugins" 需要 待更新:

置顶build.gradle:

变化:

classpath 'com.android.tools.build:gradle:1.1.0-rc1'

收件人:

classpath 'com.android.tools.build:gradle:1.1.3' // latest 1.5.0

应用build.gradle:

变化:

compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:cardview-v7:21.0.0'

收件人:

compile 'com.android.support:recyclerview-v7:22.0.0' // latest 23.1.1
compile 'com.android.support:cardview-v7:22.0.0' // latest 23.1.1

Gradle: https://gradle.org/downloads

始终检查 Android SDK 管理器以获得最新修订:

Android 构建工具插件:http://tools.android.com/tech-docs/new-build-system

Android 支持库:http://developer.android.com/tools/support-library/features.html

查看最新的插件版本,直接查看Bintray Jcenter页面:https://bintray.com/android/android-tools/com.android.tools.build.gradle/view.

附带说明一下,我在完全不相关的情况下遇到了同样的错误——在我的系统时钟年份设置更改后(即 2015 -> 2016);将时钟改回正确的时钟解决了这个问题。

注意 1:我发布这个主要是因为我有完全相同的错误消息,但事实证明工作解决方案不同于仅仅更新插件版本(如 Jared Burrows).

注2:使用

classpath 'com.android.tools.build:gradle:+'

可以使插件版本默认为最新版本。请记住,您的构建可能会因 API 更改而中断(并且正是出于这个原因,Android API 文档不鼓励这样做),因此只有在您无论如何都会不断更新版本。

我正在使用 Android Data Binding,但我今天遇到了同样的问题。

要解决它,更改:

classpath "com.android.databinding:dataBinder:1.0-rc0"

收件人:

classpath "com.android.databinding:dataBinder:1.0-rc1"

现在jcenter上还能找到1.0-rc0,不知道为什么不能用

设置环境变量 ANDROID_DAILY_OVERRIDE 相同的值示例 - b9471da4f76e0d1a88d41a072922b1e0c257745c

这对我有用。

以防万一有人为此苦苦挣扎,就我而言,我使用的是 Gradle 1.4 beta 1,我需要保留它。因此,为了让 Android Studio 作品进入终端和 运行 这个:

launchctl setenv ANDROID_DAILY_OVERRIDE <your-value-on-error-message>

重新启动 Android Studio,项目将再次生成。

在此感谢更新 2:https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

解决方案(更新时间:2016 年 5 月 24 日): 更改 build.gradle(项目)

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:X.X.X-lastVersionGradle'
    classpath 'com.google.gms:google-services:X.X.X-lastVersionGServices' // If use google-services

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

X.X.X-lastVersionGradle:例如:2.1.0

X.X.X-lastVersionGServices:例如:3.0.0(支持Firebase Analytics)

注意:如果您使用的是 google-services 插件,则必须是同一版本(如果有)

Warning!! -> 2.2.0-alpha throws Unsupported major.minor version 52.0 if you don't use java JDK 8u91 and NetBeans 8.1

此问题是由于 Gradle 版本更改引起的,由于您的应用程序使用旧版本 gradle,您需要更新到新版本。

此更改需要在 build.gradle 文件中完成,请查看此 link http://www.feelzdroid.com/2015/11/android-plugin-too-old-update-recent-version.html。了解如何更新 gradle 并提供了详细步骤。那里。

您应该升级 gradle 的版本。例如:com.android.build.gradle 1.3.0

当 gradle 的版本更改时会出现此问题。

将您的 class 路径替换为类似这样的模棱两可的内容。它是一个解决方案并且有效,但它可能不是一个好的解决方案。

class路径'com.android.tools.build:gradle:+'

最好的方法是用 gradle 的最新版本替换 +

我终于找到了解决这个问题的方法 1. 检查顶部 build.gradle 中的 calsspath,例如我的是 类路径 'com.android.tools.build:gradle:2.1.0-alpha3' 然后去 https://jcenter.bintray.com/com/android/tools/build/gradle/ 找一个比你的更新的版本,这里我选择 2.1.0-beta3 将类路径更改为以下,然后启动构建。 类路径 'com.android.tools.build:gradle:2.1.0-beta3'

删除“-rcX”部分的解决方案有效。我想提供更多有关错误发生原因的详细信息。问题出在 https://android.googlesource.com/platform/tools/base/+/master/build-system/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.java#230

对于没有版本或包含 'rc'、'alpha' 或 'beta'.[=11= 的插件,默认 40 天 'retirement age' ]

在此处检查 Gradle 插件的最新版本:

[ ![下载] 1]2

您应该在应用程序设置的依赖项

中更改此设置
buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:[PLACE VERSION CODE HERE]'
    
}

}

在过去的几个月里,我使用了 "preview" 版本的 Android Studio。我试图切换回 "stable" 版本以进行软件更新,但这还不够,我遇到了你所说的这个著名错误。

正在卸载我的 Android Studio 2.2.preview 并安装最新的 stable Android Studio (2.1) 为我修复了它 :)

您随时可以在此处查看最新的 gradle 插件版本: https://bintray.com/android/android-tools/com.android.tools.build.gradle

所以从今天开始你应该使用:

classpath 'com.android.tools.build:gradle:2.2.2'

因此。

获取稳定版本或 gradle 在应用级别 gradle 文件 在我的例子中是
类路径 'com.android.tools.build:gradle:2.2.0-alpha3'

我改成了

类路径'com.android.tools.build:gradle:2.1.2'

如果您想继续使用最新的开发版本,那么每次您的版本已经过时时,这个问题都会再次出现。

我一直在保留最新开发版本的最新列表以及我对这个类似问题的回答中的稳定版本,以便每次收到新警告时都能修复它:

输出来自NonFinalPluginExpiry.java

示例 2.4.0-alpha7

https://github.com/c3ph3us/android-gradle-plugin-source-codes/blob/master/gradle-2.4.0-alpha7-sources/com/android/build/gradle/internal/NonFinalPluginExpiry.java

如果有人想使用插件但不想做每日 google shi..

要么需要:

  1. 重新编译插件
  2. 替换清单中的 "Plugin-Version"
  3. 制作一个自动化脚本来生成环境变量并每天设置它

         MessageDigest crypt = MessageDigest.getInstance("SHA-1");
         crypt.reset();
         crypt.update(String.format(
                         "%1$s:%2$s:%3$s",
                            now.getYear(),
                            now.getMonthValue() -1,
                            now.getDayOfMonth())
                            .getBytes("utf8"));
        String overrideValue = new BigInteger(1, crypt.digest()).toString(16);
    

JAVA 中的示例应用程序(来源 + JAR):

  1. FOR GENERATE ADO - 为所有 OS's WITH JVM
  2. 为 LINUX
  3. 设置环境

https://github.com/c3ph3us/ado

https://github.com/c3ph3us/ado/releases

example bash 导出环境并启动 idea/或 studio 的函数:

// eval export & start idea :) 
function sti() {
    export `java -jar AndroidDailyOverride.jar p`
    idea.sh
}

这是 android 告诉您将 gradle 升级到最新版本的方式。 你可以做两件事-

  1. 升级到 gradle 的较新版本。升级后您可能会遇到新的错误(例如,如果您要升级到 4.1,您将不得不适应新语法 - "compile" 不再有效,请使用 "implementation")。
  2. 将您的 ANDROID_DAILY_OVERRIDE 变量更新为给定的值。转到计算机 -> 属性 -> 高级系统设置 -> 环境变量,然后创建一个新变量或更新现有 ANDROID_DAILY_OVERRIDE 的值。顾名思义,此值仅在一天内有效,第二天您将不得不再次覆盖该变量。