今天我刚从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()
}
}
答案 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:
您应该在应用设置的依赖关系
中更改此设置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>
答案 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
要么需要:
制作一个自动化脚本来生成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):
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升级到最新版本的方法。 您可以做两件事-
答案 17 :(得分:-1)
您应升级gradle版本。例如:com.android.build.gradle 1.3.0
当更改gradle版本时会出现此问题。