Плагин слишком старый, обновите его до более поздней версии или установите для переменной среды ANDROID_DAILY_OVERRIDE значение

176

сегодня я просто импортировал пример приложения из 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()
    }
}
Марио Норато
источник
4
Вам нужна Gradle 2.2.1 для Android Studio 1.1.0. Плагин Gradle для Android 1.1 теперь доступен, поэтому вам больше не нужен -rc1.
CommonsWare
Прежде всего, спасибо за ваш немедленный ответ, я постараюсь изменить настройки проекта и выложу результаты здесь. Еще раз спасибо! :-)
Марио Норато
1
Это сработало! Я только что удалил часть "-rc1" из пути к классам. Теперь это синхронизировано. Еще раз спасибо! PS Я не очень хорош в использовании stackoverflow, как я могу выразить ваш ответ или отметить его как правильный?
Марио Норато
1
Вы всегда можете найти последнюю версию Gradle здесь developer.android.com/tools/revisions/gradle-plugin.html
Бхаратеш
Как грубо для Android Studio. Если что-то автоматически генерируется из графического интерфейса, оно НИКОГДА не должно нуждаться в помощи программиста.
Хамелеон

Ответы:

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: 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 .

Джаред Барроуз
источник
Хорошо, после прочтения ответа Commonsware я просто убрал часть -rc1 части пути к классам, и после индексации теперь она работает нормально (ой, я потерял почти 2 часа, чтобы не беспокоить никого из вас здесь при переполнении стека :-)), теперь я Попробую обновить плагин, как вы предлагаете. :-) Еще раз спасибо.
Марио Норато
1
@MarioNorato Нет проблем, я буду публиковать ссылки, где вы всегда можете найти последнюю версию. Кроме того, Android Studio должна предупредить вас о новой версии, если вы обновляете менеджер Android SDK.
Джаред Берроуз
была такая же проблема. переместив плагин с 1.4. + на 1.3. + сделал свое дело. Кроме того, я использую Gradle 2.8 и у меня есть скрипт, который всегда загружает последнюю версию, очевидно, у него есть цена ...
codeScriber
18
Я должен был пойти, чтобы https://jcenter.bintray.com/com/android/tools/build/gradle/выяснить, какая была последняя версия gradle. Обновление моего верхнего файла gradle последней доступной версией с этого URL решило проблему. Ваше решение не дало мне достаточно информации, чтобы найти это!
exhuma
1
Стоит добавить ссылку на это место (имхо, это лучше, чем на веб-сайте Gradle), в котором указана последняя версия релиза Gradle: developer.android.com/tools/revisions/gradle-plugin.html
Booger
46

Решение (Обновлено: 24 мая 2016 г.): Изменить 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
}

XXX-lastVersionGradle : например: 2.1.0

XXX-lastVersionGServices : Например: 3.0.0 (поддержка Firebase Analytics)

Примечание: если вы используете плагин google-services, должна быть та же версия (если есть)

Предупреждение!! -> 2.2.0-alpha бросает Неподдерживаемый Major.minor версии 52.0, если вы не используете java JDK 8u91 и NetBeans 8.1

SergioLucas
источник
31

Как примечание, я получаю ту же ошибку в совершенно не связанной ситуации - после того, как мои системные часы года были изменены (т.е. 2015 -> 2016); изменение часов назад на правильное решило проблему.

Примечание 1: я публикую это в основном потому, что у меня было точно такое же сообщение об ошибке, но рабочее решение оказалось не таким, как просто обновление версии плагина (как опубликовано Jared Burrows).

Примечание 2: использование

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

может сделать версию плагина по умолчанию самой новой. Имейте в виду, что ваша сборка может нарушать изменения API (и по этой причине не рекомендуется документами API Android), поэтому используйте ее на свой страх и риск, только если вы все равно постоянно обновляете версию.


источник
4
Intellij / Android Studio предупредит вас не делать этого, так как вы должны знать, какую версию вы используете.
Джаред Берроуз
1
@JaredBurrows Я знаю, какую версию я использую - самую новую. Я не вижу особой причины привязывать себя к конкретному выпуску, и обновление версии вручную каждый раз, когда делается новый выпуск, вряд ли является более разумным вариантом, чем использование +версии IMO. Предупреждения выдаются, чтобы помочь с программированием, если бы они ссылались на жесткие, несгибаемые правила, они были бы не предупреждениями, а ошибками. Тем не менее, вы сделали абсолютно верное замечание, я включил эту информацию в свой пост.
1
использование оператора «+» создает непредсказуемые сборки, и их всегда следует избегать. Это опасный ответ.
agrosner
@agrosner см. мой комментарий выше для обоснования. Правда, этого следует избегать в заключительных выпусках и в серьезном производственном коде, но нет реального недостатка в его использовании при непрерывной разработке небольших приложений. Перефразировано, чтобы сделать это более очевидным. Как примечание, эта информация была дана как возможное решение реальной проблемы , а не как лучшая практика - и это не ответ здесь - ответ - проверить часы.
Ну ... у меня сегодня такая проблема, а сейчас действительно 2016 год ... Есть ли шанс, что это может быть связано? Кроме того, есть ли способ исправить это без изменения часов? В настоящее время я становлюсь мокрым от Android и среды сборки. Это все еще ново для меня, и я отчасти заблудился с этой ошибкой :(
exhuma
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/

Фелипе Дуарте
источник
9

Замените ваш путь к классу чем-то двусмысленным, как это. Это решение, и оно работает, но оно не может быть хорошим решением.

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

Лучший способ - заменить + последней версией gradle

Виктор Мвенда
источник
Ну, только если вы действительно хотите использовать альфа или бета-версии тоже.
JacksOnF1re
Прочитайте предупреждение здесь: developer.android.com/studio/releases/gradle-plugin.html «Предупреждение. Не следует использовать динамические зависимости в номерах версий, например, com.android.tools.build:gradle:2.+». . Использование этой функции может привести к неожиданным обновлениям версии и затруднить разрешение различий между версиями
Уэстон
6

Проверьте последнюю версию Gradle Plugin здесь:

Скачать

Вы должны изменить это в зависимости от настроек приложения

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:[PLACE VERSION CODE HERE]'

}

}

Динеш Санни
источник
2

Эта проблема возникает из-за изменений версии Gradle, так как ваше приложение использует старую версию gradle, вам необходимо обновить ее до новой версии.

Эти изменения должны быть сделаны в файле build.gradle, посмотрите по этой ссылке http://www.feelzdroid.com/2015/11/android-plugin-too-old-update-recent-version.html . чтобы знать, как обновить Gradle и подробные шаги предоставляются. там.

Thans

Наруто
источник
1

Я использую привязку данных Android, и у меня сегодня та же проблема.

Чтобы решить это, измените:

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

Для того, чтобы:

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

1.0-rc0 все еще можно найти в jcenter , я не знаю, почему его нельзя было использовать.

Питер Чжао
источник
1

У меня есть способ, который в конце концов решает эту проблему: 1. проверьте ваш calsspath в верхнем build.gradle, например, мой это classpath 'com.android.tools.build:gradle:2.1.0-alpha3', затем перейдите к https: // jcenter. bintray.com/com/android/tools/build/gradle/ найдите версию, более новую, чем у вас, здесь я выбираю 2.1.0-бета3, измените путь к классу ниже, затем запустите сборку. classpath 'com.android.tools.build:gradle:2.1.0-beta3'

Хьюго
источник
1

Если вы хотите продолжать использовать новейшие версии для разработчиков, эта проблема может повторяться каждый раз, когда ваша версия достаточно устарела.

В моем ответе на этот похожий вопрос я держал актуальный список самых последних версий разработки, а также стабильную версию, чтобы я мог исправить это каждый раз, когда получаю новое предупреждение:

Android Studio 2.0 - плагин устарел, обновите его до более поздней версии или установите ANDROID_DAILY_OVERRIDE

Ник Кардосо
источник
0

установить переменную среды ANDROID_DAILY_OVERRIDE в то же значение Пример - b9471da4f76e0d1a88d41a072922b1e0c257745c

это работает для меня.

Virendra
источник
И где эта переменная находится ??
MobileEvangelist
Где я должен установить ANDROID_DAILY_OVERRIDE?
MiguelAngel_LV
1
@MiguelAngel_LV, AndriodNewbie, Google, как экспортировать переменные среды в вашей операционной системе. Это особенность ОС
Ярослав Мыткалык
0

Решение удаления части '-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», по умолчанию установлен «возраст выхода на пенсию», равный 40 дням.

ashoykh
источник
0

В последние месяцы я использовал «предварительную» версию Android Studio. Я попытался вернуться к «стабильным» версиям для обновлений программного обеспечения, но этого оказалось недостаточно, и я получил эту знаменитую ошибку, о которой вы говорите.

Деинсталляция моей Android Studio 2.2.preview и установка последней стабильной Android Studio (2.1) исправили это для меня :)

Гийом Жандр
источник
0

Перейти на стабильную версию или Gradle в файле Gradle уровня приложения, в моем случае это был
classpath 'com.android.tools.build:gradle:2.2.0-alpha3'

Я изменил это с

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

user3326676
источник
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. ДЛЯ GENERATE ADO - для ВСЕХ ОС с JVM
  2. SET ENV для LINUX

https://github.com/c3ph3us/ado

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

Пример функции bash для экспорта env и запуска идеи / или студии:

// eval export & start idea :) 
function sti() {
    export `java -jar AndroidDailyOverride.jar p`
    idea.sh
}
ceph3us
источник
0

Это способ Android сказать вам, чтобы обновить Gradle до последней версии. Вы можете сделать две вещи

  1. Обновите до новой версии Gradle. После обновления вы можете столкнуться с новыми ошибками (например, если вы обновляетесь до 4.1, вам придется адаптироваться к новому синтаксису - «compile» больше не действителен, используйте «внедрение»).
  2. Обновите переменную ANDROID_DAILY_OVERRIDE до указанного значения. Перейдите в Компьютер -> Свойства -> Расширенные настройки системы -> Переменные среды и создайте новую переменную или обновите значение существующего ANDROID_DAILY_OVERRIDE. Как следует из названия, это значение действительно только в течение одного дня, и на следующий день вам снова придется переопределить переменную.
kshubham07
источник
-1

Вам следует обновить версию Gradle. например: com.android.build.gradle 1.3.0

эта проблема возникает при изменении версии Gradle.

Ашиш Шривастава
источник