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

时间:2015-03-15 17:39:59

标签: android android-studio gradle android-gradle

今天我刚从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()
    }
}

18 个答案:

答案 0 :(得分:132)

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

确保升级Android Studio,但这里是"插件"需要的 更新:

热门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 Manager以获取最新版本:

Android Build Tools插件: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

答案 1 :(得分:46)

解决方案(更新时间: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插件必须是相同版本(如果有)

  

警告! - >如果您不使用java JDK 8u91 and NetBeans 8.1

,则 2.2.0-alpha 会抛出不受支持的major.minor版本52.0

答案 2 :(得分:31)

作为旁注,我在完全不相关的情况下得到了同样的错误 - 在我的系统时钟年设置改变之后(即2015年 - > 2016年);将时钟更改回正确的时钟解决了问题。

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

注2:使用

Jared Burrows

可以使插件版本默认为最新版本。请记住,您的构建可能会因API更改而中断(并且由于这个原因,Android API文档不鼓励这样做),因此只有在您不断更新版本的情况下,使用此风险仍然需要您自担风险。

答案 3 :(得分:29)

万一有人正在努力解决这个问题,在我的情况下,我正在使用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/

答案 4 :(得分:15)

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

截至今天你应该使用:

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

相应。

答案 5 :(得分:9)

用类似这样的含糊不清的东西替换你的类路径。它是一个解决方案,它可以工作,但它可能不是一个好的解决方案。

classpath&#39; com.android.tools.build:gradle:+&#39;

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

答案 6 :(得分:6)

在此处查看最新版本的Gradle Plugin:

Download

您应该在应用设置的依赖关系

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

}

}

答案 7 :(得分:2)

出现此问题是因为Gradle版本更改,因为您的应用程序使用旧版本的gradle,您需要更新到新版本。

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

Thans

答案 8 :(得分:1)

我有办法最终解决这个问题 1.检查顶部build.gradle中的calsspath,例如我的 classpath'com.android.tools.build:grad:2.1.0-alpha3' 然后去 https://jcenter.bintray.com/com/android/tools/build/gradle/ 找到比你更新的版本,在这里我选择2.1.0-beta3 将classpath更改为下面,然后启动构建。 classpath'com.android.tools.build:grad:2.1.0-beta3'

答案 9 :(得分:1)

如果您想继续使用最新的开发版本,那么每当您的版本远远过时时,此问题就会再次发生。

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

<强> Android Studio 2.0 - Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE

答案 10 :(得分:1)

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

要解决此问题,请更改:

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

要:

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

1.0-rc0现在仍然可以在jcenter找到,我不知道为什么它无法使用。

答案 11 :(得分:0)

删除&#39; -rcX&#39;部分工作。我想提供一些关于错误发生原因的更多细节。问题出在https://android.googlesource.com/platform/tools/base/+/master/build-system/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.java#230

默认的40天退休年龄&#39;对于没有版本或包含&#39; rc&#39;,&#39; alpha&#39;或&#39; beta&#39;的插件。

答案 12 :(得分:0)

在过去的几个月里,我使用了Android Studio的“预览”版本。我试图切换回软件更新的“稳定”版本,但这还不够,我得到了你所说的这个着名的错误。

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

答案 13 :(得分:0)

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

这适合我。

答案 14 :(得分:0)

在应用级gradle文件中寻找稳定版或gradle 在我的情况下,它是
classpath&#39; com.android.tools.build:gradle:2.2.0-alpha3&#39;

我用

更改了它

classpath&#39; com.android.tools.build:gradle:2.1.2&#39;

答案 15 :(得分:0)

输出来自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. 在清单中替换“插件版本”
  3. 制作一个自动化脚本来生成env var并每天进行设置

         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. 用于生成ADO-用于所有具有JVM的操作系统
  2. 为LINUX设置ENV

https://github.com/c3ph3us/ado

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

bash函数示例,用于导出环境并启动创意/工作室:

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

答案 16 :(得分:0)

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

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

答案 17 :(得分:-1)

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

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