Plugin quá cũ, vui lòng cập nhật lên phiên bản mới hơn hoặc đặt biến môi trường ANDROID_DAILY_OVERRIDE thành


176

hôm nay tôi vừa nhập một ứng dụng mẫu từ SDK Android dưới dạng một mô-đun trong dự án của mình (phân tích) và đột nhiên tôi gặp lỗi này khi tôi cố gắng đồng bộ hóa nó: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE envrinment variable to...

Đây là gradletập tin ứng dụng của tôi :

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')
}

Bạn có biết nguyên nhân nào có thể là nguyên nhân không (tôi đang sử dụng plugin phiên bản 1.1.0-rc1 và gradlephiên bản 2.2 và Android Studiophiên bản 1.1.0)?

BIÊN TẬP:

Đây là đầu trang của tôi 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
Bạn cần Gradle 2.2.1 cho Android Studio 1.1.0. Plugin Gradle cho Android 1.1 hiện đã có, vì vậy bạn không còn cần đến -rc1.
CommonsWare

Trước hết cảm ơn câu trả lời ngay lập tức của bạn, tôi sẽ cố gắng thay đổi cài đặt của dự án và tôi sẽ đăng kết quả tại đây. Cảm ơn một lần nữa! :-)
Mario Norato 15/03/2015

1
Nó đã làm việc! Tôi vừa xóa phần "-rc1" khỏi đường dẫn lớp. Bây giờ nó đồng bộ. Cảm ơn một lần nữa! PS Tôi không giỏi trong việc sử dụng stackoverflow, làm thế nào để tôi nâng cao câu trả lời của bạn hoặc đánh dấu nó là câu trả lời đúng?
Mario Norato 15/03/2015

1
bạn luôn có thể tìm thấy phiên bản lớp mới nhất tại đây developer.android.com/tools/revutions/gradle-plugin.html
Bharatesh

Làm thế nào thô lỗ cho Android Studio. Nếu một cái gì đó được tạo tự động từ gui, nó KHÔNG BAO GIỜ cần sự trợ giúp của lập trình viên.
Tắc kè hoa

Câu trả lời:


132

Giống như CommonsWare đề xuất, hãy đảm bảo bạn có Gradle 2.2.1+ (mới nhất là 2.3).

Đảm bảo bạn đã nâng cấp Android Studio của mình nhưng đây là các "plugin" cần được cập nhật:

Hàng đầu build.gradle:

Thay đổi:

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

Đến:

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

Ứng dụng build.gradle:

Thay đổi:

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

Đến:

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

Lớp: https://gradle.org/doads

Luôn kiểm tra Trình quản lý SDK Android để biết các phiên bản mới nhất:

Plugin Công cụ xây dựng Android: http://tools.android.com/tech-docs/new-build-system

Thư viện hỗ trợ của Android: http://developer.android.com/tools/support-l Library / tính năng.html

Để xem các bản phát hành plugin mới nhất, hãy xem trực tiếp trang Bintray Jcenter: https://bintray.com/android/android-tools/com.android.tools.build.gradle/view .


Ok, sau khi đọc câu trả lời của Commonsware, tôi mới lấy đi phần -rc1 của đường dẫn lớp và sau khi lập chỉ mục bây giờ nó có vẻ hoạt động tốt (tôi đã mất gần 2 giờ để không làm phiền bất kỳ ai trong số các bạn ở đây trong stack overflow :-)), bây giờ tôi Sẽ cố gắng cập nhật plugin như bạn đề xuất. :-) Cảm ơn một lần nữa.
Mario Norato

1
@MarioNorato Không có vấn đề gì, tôi sẽ đăng các liên kết đến nơi bạn có thể tìm thấy phiên bản mới nhất mọi lúc. Ngoài ra, studio Android sẽ cảnh báo bạn về phiên bản mới hơn nếu bạn luôn cập nhật trình quản lý SDK Android.
Jared Burrows

đã có cùng một vấn đề. di chuyển plugin từ 1.4. + sang 1.3. + đã thực hiện thủ thuật. Ngoài ra, tôi đang sử dụng lớp 2.8 và có một tập lệnh luôn tải xuống phiên bản mới nhất, rõ ràng là nó có giá ...
codeScacker

18
Tôi đã phải đi để https://jcenter.bintray.com/com/android/tools/build/gradle/tìm ra phiên bản mới nhất của gradle là gì. Cập nhật tệp lớp trên cùng của tôi với phiên bản mới nhất có sẵn từ URL đó đã khắc phục sự cố. Giải pháp của bạn đã không cung cấp cho tôi đủ thông tin để tìm thấy điều này!
shoutuma

1
Sẽ đáng để liên kết đến vị trí này (IMHO, tốt hơn là trang web Gradle) - có phiên bản phát hành Gradle mới nhất được liệt kê: developer.android.com/tools/revutions/gradle-plugin.html
Booger

46

Giải pháp (Cập nhật: 24 tháng 5 năm 2016): Thay đổi build.gradle (dự án)

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 : Ví dụ: 2.1.0

XXX-lastVersionGService : Ví dụ: 3.0.0 (hỗ trợ Phân tích Firebase)

Lưu ý: nếu bạn đang sử dụng plugin google-services phải là cùng một phiên bản (nếu có)

Cảnh báo!! -> 2.2.0-alpha ném Major.minor phiên bản 52.0 không được hỗ trợ nếu bạn không sử dụng java JDK 8u91 và NetBeans 8.1


31

Là một lưu ý phụ, tôi đã nhận được cùng một lỗi trong tình huống hoàn toàn không liên quan - sau khi cài đặt năm đồng hồ hệ thống của tôi đã được thay đổi (tức là 2015 -> 2016); thay đổi đồng hồ trở lại chính xác đã giải quyết vấn đề.

Lưu ý 1: Tôi đang đăng bài này chủ yếu vì tôi có cùng thông báo lỗi, nhưng giải pháp hoạt động được chứng minh là khác với việc chỉ cập nhật phiên bản của plugin (như được đăng bởi Jared Burrows).

Lưu ý 2: sử dụng

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

có thể làm cho phiên bản plugin mặc định thành phiên bản mới nhất. Hãy nhớ rằng bản dựng của bạn có thể phá vỡ các thay đổi API (và vì lý do đó, không được khuyến khích bởi các tài liệu API của Android), do đó, chỉ nên tự chịu rủi ro khi sử dụng phiên bản này nếu bạn liên tục cập nhật phiên bản.


4
Intellij / Android Studio sẽ cảnh báo bạn không nên làm điều này, vì bạn nên biết bạn đang sử dụng phiên bản nào.
Jared Burrows

1
@JaredBurrows Tôi biết tôi đang sử dụng phiên bản nào - phiên bản mới nhất. Tôi thấy không có lý do cụ thể nào để ràng buộc bản thân với một bản phát hành cụ thể và cập nhật phiên bản theo cách thủ công mỗi khi bản phát hành mới được thực hiện hầu như không phải là một lựa chọn hợp lý hơn so với sử dụng +phiên bản IMO. Các cảnh báo được phát ra để giúp lập trình, nếu chúng đề cập đến các quy tắc cứng, không thể chịu được thì chúng sẽ không phải là cảnh báo mà là lỗi ngay từ đầu. Tuy nhiên, bạn đã đưa ra một điểm hoàn toàn hợp lệ, tôi đã đưa thông tin đó vào bài viết của mình.

1
sử dụng toán tử '+' sẽ tạo ra các bản dựng không thể đoán trước và phải luôn luôn tránh. Đây là một câu trả lời nguy hiểm.
agrosner

@agrosner xem bình luận của tôi ở trên cho hợp lý. Đúng, nên tránh trong các phiên bản cuối cùng và trong mã sản xuất nghiêm túc, nhưng không có nhược điểm thực sự nào khi sử dụng nó trong việc phát triển liên tục các ứng dụng nhỏ. Rephrased để làm cho điều đó rõ ràng hơn. Một lưu ý phụ, thông tin đó được đưa ra như một giải pháp khả thi cho vấn đề thực sự , không phải là một cách thực hành tốt nhất - và đó không phải là câu trả lời ở đây - câu trả lời là kiểm tra đồng hồ.

Chà ... tôi đang gặp vấn đề này ngày hôm nay, và bây giờ thực sự là năm 2016 ... Bất kỳ cơ hội nào điều này có thể liên quan? Ngoài ra, có cách nào để khắc phục điều này mà không cần thay đổi đồng hồ không? Tôi hiện đang bị ướt chân với Android và môi trường xây dựng. Tất cả vẫn còn mới đối với tôi và tôi đã lạc
lối

29

Chỉ trong trường hợp ai đó đang vật lộn với điều này, trong trường hợp của tôi, tôi đang sử dụng Gradle 1.4 beta 1 và tôi CẦN giữ nó. Vì vậy, để làm cho Android Studio hoạt động, hãy đến thiết bị đầu cuối và chạy nó:

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

Khởi động lại Android Studio và dự án sẽ xây dựng lại.

Kudos để CẬP NHẬT 2 tại đây: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/



9

Thay thế đường dẫn lớp của bạn bằng một cái gì đó mơ hồ như thế này. Đó là một giải pháp và nó hoạt động nhưng nó có thể không phải là một giải pháp tốt.

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

Cách tốt nhất là thay thế + bằng phiên bản mới nhất của lớp


Chà, chỉ khi bạn thực sự muốn sử dụng phiên bản alpha hoặc beta.
JacksOnF1re

Đọc sự thận trọng ở đây: developer.android.com/studio/release/gradle-plugin.html "Thận trọng: Bạn không nên sử dụng phụ thuộc động trong số phiên bản, chẳng hạn như 'com.android.tools.build:gradle:2.+' Sử dụng tính năng này có thể gây ra các bản cập nhật phiên bản không mong muốn và khó giải quyết sự khác biệt của phiên bản. "
weston

6

Kiểm tra phiên bản mới nhất của Gradle Plugin Tại đây:

Tải xuống

Bạn nên thay đổi điều này trong phần phụ thuộc của cài đặt ứng dụng

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

}

}


2

Sự cố này xảy ra do phiên bản Gradle thay đổi, vì ứng dụng của bạn sử dụng phiên bản cũ của lớp, bạn cần cập nhật lên phiên bản mới.

Những thay đổi này cần được thực hiện trong tệp build.gradle, hãy xem liên kết này http://www.feelzdroid.com/2015/11/android-plugin-too-old-update-recent-version.html . để biết cách cập nhật các lớp và các bước chi tiết được cung cấp. ở đó

Thans


1

Tôi đang sử dụng liên kết dữ liệu Android và hôm nay tôi cũng gặp vấn đề tương tự.

Để giải quyết nó, thay đổi:

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

Đến:

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

Hiện tại vẫn có thể tìm thấy 1.0-RC0 trên jcenter , tôi không biết tại sao nó không thể được sử dụng.


1

Tôi đã có một cách cuối cùng giải quyết vấn đề này 1. kiểm tra calsspath của bạn trong bản dựng hàng đầu . bintray.com/com/android/tools/build/gradle/ tìm một bản phát hành mới hơn bản phát hành của bạn, ở đây tôi chọn đường dẫn thay đổi 2.1.0-beta3 bên dưới, sau đó khởi chạy bản dựng. classpath 'com.android.tools.build:gradle:2.1.0-beta3'


1

Nếu bạn muốn tiếp tục sử dụng các phiên bản phát triển mới nhất thì vấn đề này có thể tái diễn mỗi khi phiên bản của bạn đủ lỗi thời.

Tôi đã giữ một danh sách cập nhật các phiên bản phát triển mới nhất cũng như phiên bản ổn định trong câu trả lời của tôi cho câu hỏi tương tự này, để tôi có thể sửa nó mỗi khi tôi nhận được cảnh báo mới:

Android Studio 2.0 - Plugin quá cũ, vui lòng cập nhật lên phiên bản mới hơn hoặc đặt ANDROID_DAILY_OVERRIDE


0

đặt biến môi trường ANDROID_DAILY_OVERRIDE thành cùng giá trị Ví dụ - b9471da4f76e0d1a88d41a072922b1e0c257745c

cái này hiệu quả với tôi


Và biến này nằm ở đâu ??
Nhà truyền giáo di động

Tôi phải đặt ANDROID_DAILY_OVERRIDE ở đâu?
MiguelAngel_LV

1
@MiguelAngel_LV, AndriodNewbie, google cách xuất biến môi trường trong hệ điều hành của bạn. Đây là một tính năng của hệ điều hành
Yaroslav Mytkalyk

0

Giải pháp loại bỏ phần '-rcX' hoạt động. Tôi muốn cung cấp thêm một số chi tiết về lý do tại sao lỗi xảy ra. Vấn đề là với https://android.googlesource.com/pl platform / tools / base / + / master / build-system /gradle / src / main / groovy / com / android / build / nâng cấp / ChasePlugin.java # 230

Có 40 ngày 'tuổi nghỉ hưu' mặc định cho các plugin không có phiên bản hoặc chứa 'RC', 'alpha' hoặc 'beta'.


0

Trong những tháng qua, tôi đã sử dụng phiên bản "xem trước" của Android Studio. Tôi đã cố gắng chuyển trở lại các bản phát hành "ổn định" cho các bản cập nhật phần mềm nhưng nó không đủ và tôi đã gặp phải lỗi nổi tiếng mà bạn nói đến.

Gỡ cài đặt Android Studio 2.2.preview và cài đặt Android Studio ổn định mới nhất (2.1) đã sửa lỗi cho tôi :)


0

Chuyển sang phiên bản ổn định hoặc lớp trong tệp cấp độ ứng dụng trong trường hợp của tôi, đó là
classpath 'com.android.tools.build:gradle:2.2.0-alpha3'

Tôi đã thay đổi nó với

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


0

đầu ra là từ NonFinalPluginExpiry.java

ví dụ 2.4.0-alpha7

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

nếu ai đó muốn sử dụng plugin và không muốn làm google shi hàng ngày ..

hoặc cần phải:

  1. biên dịch lại plugin
  2. thay thế "Plugin-Version" trong tệp kê khai
  3. tạo một kịch bản tự động hóa để tạo var env và thiết lập nó hàng ngày

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

VÍ DỤ ỨNG DỤNG TRONG JAVA (nguồn + JAR):

  1. ĐỂ TẠO ADO - cho tất cả các hệ điều hành có JVM
  2. THIẾT LẬP ENV cho LINUX

https://github.com/c3ph3us/ado

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

ví dụ hàm bash để xuất env và bắt đầu ý tưởng / hoặc studio:

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

0

Đây là cách của Android để bảo bạn nâng cấp lớp lên phiên bản mới nhất. Bạn có thể làm hai điều-

  1. Nâng cấp lên phiên bản mới hơn của gradle. Bạn có thể phải đối mặt với các lỗi mới sau khi nâng cấp (ví dụ: nếu bạn đang nâng cấp lên 4.1, bạn sẽ phải điều chỉnh theo cú pháp mới - "biên dịch" không còn hợp lệ, hãy sử dụng "triển khai").
  2. Cập nhật biến ANDROID_DAILY_OVERRIDE của bạn thành giá trị đã cho. Chuyển đến Máy tính -> Thuộc tính -> Cài đặt hệ thống nâng cao -> Biến môi trường và tạo một biến mới hoặc giá trị cập nhật của ANDROID_DAILY_OVERRIDE. Như tên cho thấy, giá trị này chỉ có hiệu lực trong một ngày và ngày hôm sau bạn sẽ lại phải ghi đè biến.

-1

Bạn nên nâng cấp phiên bản của gradle. ví dụ: com.android.build.gradle 1.3.0

vấn đề này xảy ra khi phiên bản của lớp được thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.