플러그인이 너무 오래되었습니다. 최신 버전으로 업데이트하거나 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
Android Studio 1.1.0에는 Gradle 2.2.1이 필요합니다. 이제 Android 용 Gradle 플러그인 1.1을 사용할 수 있으므로 더 이상이 필요하지 않습니다 -rc1.
CommonsWare

우선 귀하의 즉각적인 답변에 감사드립니다. 프로젝트 설정을 변경하려고 시도하고 결과를 여기에 게시 할 것입니다. 다시 감사합니다! :-)
Mario Norato

1
효과가 있었다! 방금 클래스 경로에서 "-rc1"부분을 삭제했습니다. 이제 동기화되었습니다. 다시 감사합니다! 추신 : 나는 stackoverflow를 사용하는 데별로 좋지 않습니다. 대답을 어떻게 표명하거나 올바른 답으로 표시합니까?
Mario Norato

1
여기에서 항상 최신 gradle 버전을 찾을 수 있습니다. developer.android.com/tools/revisions/gradle-plugin.html
Bharatesh

안드로이드 스튜디오에 대한 무례. GUI에서 무언가가 자동 생성되면 프로그래머의 도움이 필요하지 않습니다.
카멜레온

답변:


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 관리자를 확인하십시오.

Android 빌드 도구 플러그인 : http://tools.android.com/tech-docs/new-build-system

안드로이드 지원 라이브러리 : 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 시간을 잃었습니다) :) 제안한대로 플러그인을 업데이트하려고합니다. :-) 다시 감사합니다.
Mario Norato

1
@MarioNorato 문제 없습니다. 항상 최신 버전을 찾을 수있는 링크를 게시하겠습니다. 또한 Android SDK 관리자를 최신 상태로 유지하면 Android Studio에서 최신 버전을 경고해야합니다.
Jared Burrows

같은 문제가있었습니다. 플러그인을 1.4. +에서 1.3. +로 옮기는 것이 트릭이었습니다. 또한 gradle 2.8을 사용하고 있으며 항상 최신 버전을 다운로드하는 스크립트가 있습니다. 분명히 가격이 있습니다 ...
codeScriber

18
나는 가야했다 https://jcenter.bintray.com/com/android/tools/build/gradle/Gradle을 최신 버전이 무엇인지 알아 내려고. 해당 URL에서 사용 가능한 최신 버전으로 내 최상위 gradle 파일을 업데이트하면 문제가 해결되었습니다. 귀하의 솔루션이 이것을 찾을 수있는 충분한 정보를 제공하지 못했습니다!
exhuma

1
최신 Gradle 릴리스 버전이 나열된이 위치 (IMHO, Gradle 웹 사이트보다 낫습니다)에 연결하는 것이 좋습니다. developer.android.com/tools/revisions/gradle-plugin.html
Booger

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
}

XXX-lastVersionGradle : 예 : 2.1.0

XXX-lastVersionGServices : 예 : 3.0.0 (Firebase Analytics 지원)

참고 : google-services 플러그인을 사용하는 경우 동일한 버전이어야합니다 (있는 경우)

경고!! -> 2.2.0-alpha 는 java JDK 8u91 및 NetBeans 8.1을 사용하지 않으면 지원되지 않는 major.minor 버전 52.0을 발생 시킵니다.


31

참고로, 시스템 시계 연도 설정이 변경된 후 (예 : 2015-> 2016) 완전히 관련이없는 상황에서 동일한 오류가 발생했습니다. 시계를 올바른 시계로 다시 변경하면 문제가 해결되었습니다.

참고 1 : 나는 정확히 동일한 오류 메시지가 있었기 때문에 주로 게시하고 있지만 작동하는 솔루션은 플러그인 버전을 업데이트하는 것 ()이 게시 한 것과 다릅니다 Jared Burrows.

참고 2 : 사용

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

플러그인 버전을 최신 버전으로 만들 수 있습니다. 빌드가 API 변경으로 인해 중단 될 수 있으므로 (Android API 문서에서 권장하지 않기 때문에) 어쨌든 지속적으로 버전을 업데이트하는 경우에만 위험을 감수해야합니다.


4
사용중인 버전을 알아야하므로 Intellij / Android Studio에서이 작업을 수행하지 말 것을 경고합니다.
Jared Burrows

1
@JaredBurrows 최신 버전을 사용하고 있습니다. 특정 릴리스에 자신을 묶을 특별한 이유가 없으며 새 릴리스가 완료 될 때마다 수동으로 버전을 업데이트하는 것이 +버전 IMO를 사용하는 것보다 합리적인 옵션이 아닙니다 . 프로그래밍에 도움을주기 위해 경고가 발생합니다. 단단하고 구부릴 수없는 규칙을 참조하는 경우 경고가 아니라 처음에는 오류가되었을 것입니다. 아직도, 당신은 완전히 유효한 지적을 내 게시물에 그 정보를 포함 시켰습니다.

1
'+'연산자를 사용하면 예측할 수없는 빌드가 생성되므로 항상 피해야합니다. 이것은 위험한 답변입니다.
agrosner

@agrosner 는 이론적 근거에 대한 위의 의견을 참조하십시오 . 사실, 최종 관련성과 심각한 생산 코드에서는 피해야하지만 소규모 응용 프로그램을 지속적으로 개발할 때이를 사용하는 데 실질적인 단점은 없습니다. 더 분명하게 표현했습니다. 부수적으로, 그 정보는 모범 사례가 아닌 실제 문제에 대한 가능한 해결책 으로 주어졌으며 대답은 여기에 없습니다. 대답은 시계를 확인하는 것입니다.

글쎄 .. 나는 오늘이 문제를 겪고있다. 그리고 지금은 2016 년이다. 또한 시계를 변경하지 않고이를 해결할 수있는 방법이 있습니까? 나는 현재 안드로이드와 빌드 환경으로 발을 젖게하고있다. 그것은 여전히 ​​나에게
새롭고이

29

누군가이 문제로 어려움을 겪고있는 경우를 대비하여 Gradle 1.4 베타 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

클래스 경로를 이와 같이 모호한 것으로 바꾸십시오. 그 해결책과 효과가 있지만 좋은 해결책이 아닐 수도 있습니다.

클래스 경로 'com.android.tools.build:gradle:+'

가장 좋은 방법은 +를 최신 버전의 gradle로 바꾸는 것입니다.


실제로 알파 또는 베타 버전을 사용하려는 경우에만 가능합니다.
JacksOnF1re

주의 사항을 읽으십시오. developer.android.com/studio/releases/gradle-plugin.html "주의 : 버전 번호에 'com.android.tools.build:gradle:2.+'와 같은 동적 종속성을 사용해서는 안됩니다. 이 기능을 사용하면 예기치 않은 버전 업데이트가 발생하여 버전 차이를 해결하기가 어려울 수 있습니다. "
weston

6

Gradle Plugin 최신 버전을 확인하십시오.

다운로드

앱 설정따라 변경해야합니다

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

}

}



1

내가 사용하고 바인딩 안드로이드 데이터 와 오늘 같은 문제가 있습니다.

이를 해결하려면 다음을 변경하십시오.

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

에:

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

1.0 RC0 여전히에서 볼 수 있습니다 jcenter 지금, 나는 그것을 사용 할 수없는 이유를 모르겠어요.


1

나는 이것을 마지막으로 해결하는 방법을 얻었다. 1. 최상위 build.gradle에서 calsspath를 확인하십시오 . bintray.com/com/android/tools/build/gradle/ 당신보다 새로운 릴리스를 찾으십시오. 여기서 2.1.0-beta3 변경 클래스 경로를 아래로 선택한 다음 빌드를 시작하십시오. 클래스 경로 'com.android.tools.build:gradle:2.1.0-beta3'


1

최신 개발 버전을 계속 사용하려면 버전이 최신 버전이 아닐 때마다이 문제가 다시 발생할 수 있습니다.

나는이 비슷한 질문에 대한 대답에 대한 최신 버전뿐만 아니라 최신 개발 버전의 최신 목록을 유지하여 새로운 경고를받을 때마다 수정할 수 있습니다.

Android Studio 2.0-플러그인이 너무 오래되었습니다. 최신 버전으로 업데이트하거나 ANDROID_DAILY_OVERRIDE를 설정하십시오.


0

환경 변수 ANDROID_DAILY_OVERRIDE를 동일한 값으로 설정 예-b9471da4f76e0d1a88d41a072922b1e0c257745c

이것은 나를 위해 작동합니다.


그리고이 변수는 어디에 있습니까 ??
MobileEvangelist

ANDROID_DAILY_OVERRIDE를 어디에 설정해야합니까?
MiguelAngel_LV

1
@MiguelAngel_LV, AndriodNewbie, Google 운영 체제에서 환경 변수를 내보내는 방법. 이것은 OS 기능입니다
Yaroslav Mytkalyk


0

지난 몇 달 동안 "미리보기"버전의 Android Studio를 사용했습니다. 소프트웨어 업데이트에 대한 "안정된"릴리스로 다시 전환하려고했지만 충분하지 않아서이 유명한 오류에 대해 이야기했습니다.

내 Android Studio 2.2.preview를 제거하고 최신 안정된 Android Studio (2.1)를 설치 하면 해결되었습니다. :)


0

내 경우에는 앱 레벨 gradle 파일에서 안정적인 버전 또는 gradle로 이동하십시오 .'com.android.tools.build : gradle : 2.2.0-alpha3
'

나는 그것을 바꿨다.

클래스 경로 'com.android.tools.build:gradle:2.1.2'


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);

자바의 예제 앱 (소스 + JAR) :

  1. 일반 ADO-JVM이있는 모든 OS에 적합
  2. 리눅스 용 SET ENV

https://github.com/c3ph3us/ado

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

env를 내보내고 idea / 또는 studio을 시작하는 bash 함수의 예 :

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

0

이것은 gradle을 최신 버전으로 업그레이드하라는 Android의 방법입니다. 두 가지 일을 할 수 있습니다.

  1. 최신 버전의 gradle로 업그레이드하십시오. 업그레이드 후 새 오류가 발생할 수 있습니다 (예 : 4.1로 업그레이드하는 경우 새 구문에 적응해야합니다- "컴파일"이 더 이상 유효하지 않습니다. "구현"사용).
  2. ANDROID_DAILY_OVERRIDE 변수를 제공된 값으로 업데이트하십시오. 컴퓨터-> 특성-> 고급 시스템 설정-> 환경 변수로 이동하여 기존 ANDROID_DAILY_OVERRIDE의 새 변수 또는 업데이트 값을 작성하십시오. 이름에서 알 수 있듯이이 값은 하루 동안 만 유효하며 다음 날에는 변수를 다시 정의해야합니다.

-1

gradle 버전을 업그레이드해야합니다. 예 : com.android.build.gradle 1.3.0

이 문제는 gradle 버전이 변경 될 때 발생합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.