Plugin terlalu tua, perbarui ke versi yang lebih baru, atau setel variabel lingkungan ANDROID_DAILY_OVERRIDE ke


176

hari ini saya baru saja mengimpor aplikasi sampel dari Android SDK sebagai modul dalam proyek saya (analitik) dan tiba-tiba saya mendapatkan kesalahan gradle ini ketika mencoba menyinkronkannya: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE envrinment variable to...

Ini adalah gradlefile aplikasi saya :

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

Apakah Anda tahu penyebabnya (saya menggunakan plugin versi 1.1.0-rc1 dan gradleversi 2.2 dan Android Studioversi 1.1.0)?

EDIT:

Ini top saya 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
Anda membutuhkan Gradle 2.2.1 untuk Android Studio 1.1.0. Plugin Gradle untuk Android 1.1 sekarang tersedia, jadi Anda tidak perlu lagi -rc1.
CommonsWare

Pertama-tama terima kasih atas jawaban langsung Anda, saya akan mencoba mengubah pengaturan proyek dan saya akan memposting hasilnya di sini. Terima kasih lagi! :-)
Mario Norato

1
Berhasil! Saya baru saja menghapus bagian "-rc1" dari classpath. Sekarang sudah disinkronkan. Terima kasih lagi! PS Saya tidak terlalu baik dalam menggunakan stackoverflow, bagaimana cara saya meningkatkan jawaban Anda atau menandainya sebagai jawaban yang benar?
Mario Norato

1
Anda selalu dapat menemukan versi gradle terbaru di sini developer.android.com/tools/revisions/gradle-plugin.html
Bharatesh

Betapa kasarnya untuk Android Studio. Jika sesuatu dihasilkan secara otomatis dari gui, pasti TIDAK PERNAH membutuhkan bantuan programmer.
Bunglon

Jawaban:


132

Sama seperti yang disarankan CommonsWare, pastikan Anda memiliki Gradle 2.2.1+ (yang terbaru 2.3).

Pastikan Anda meningkatkan Android Studio Anda, tetapi di sini ada "plugin" yang perlu diperbarui:

Puncak build.gradle :

Perubahan:

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

Untuk:

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

Aplikasi build.gradle:

Perubahan:

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

Untuk:

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

Selalu periksa Android SDK Manager untuk revisi terbaru:

Plugin Android Build Tools: http://tools.android.com/tech-docs/new-build-system

Perpustakaan Dukungan Android: http://developer.android.com/tools/support-library/features.html

Untuk melihat rilis plugin terbaru, lihat halaman Bintray Jcenter secara langsung: https://bintray.com/android/android-tools/com.android.tools.build.gradle/view .


Ok, setelah membaca jawaban Commonsware saya hanya mengambil bagian -rc1 dari classpath dan setelah pengindeksan sekarang tampaknya berfungsi dengan baik (aduh saya kehilangan hampir 2 jam untuk tidak mengganggu kalian di sini di stack overflow :-)), sekarang saya Saya akan mencoba memperbarui plugin seperti yang Anda sarankan. :-) Terima kasih lagi.
Mario Norato

1
@MarioNorato Tidak masalah, saya akan memposting tautan ke tempat Anda dapat menemukan versi terbaru setiap saat. Selain itu, studio Android harus memperingatkan Anda tentang versi yang lebih baru jika Anda terus memperbarui Android SDK manager.
Jared Burrows

memiliki masalah yang sama. Memindahkan plugin dari 1.4. + ke 1.3. + berhasil. Saya juga menggunakan gradle 2.8 dan memiliki skrip yang selalu mengunduh versi terbaru, tampaknya memiliki harga ...
codeScriber

18
Saya harus https://jcenter.bintray.com/com/android/tools/build/gradle/mencari tahu apa versi gradle terbaru itu. Memperbarui file kelas atas saya dengan versi terbaru yang tersedia dari URL itu telah memperbaiki masalahnya. Solusi Anda tidak memberi saya informasi yang cukup untuk menemukan ini!
exhuma

1
Layak untuk ditautkan ke lokasi ini (IMHO, lebih baik daripada situs web Gradle) - yang memiliki versi rilis Gradle terbaru yang tercantum: developer.android.com/tools/revisions/gradle-plugin.html
Booger

46

Solusi (Diperbarui: 24-Mei-2016): Ubah build.gradle (proyek)

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 : Misalnya: 2.1.0

XXX-lastVersionGServices : Misalnya: 3.0.0 (mendukung Firebase Analytics)

Catatan: jika Anda menggunakan plugin google-services harus versi yang sama (jika ada)

Peringatan!! -> 2.2.0-alpha melempar major.minor versi 52.0 yang tidak didukung jika Anda tidak menggunakan java JDK 8u91 dan NetBeans 8.1


31

Sebagai catatan, saya mendapatkan kesalahan yang sama dalam situasi yang sama sekali tidak terkait - setelah pengaturan tahun sistem saya berubah (yaitu 2015 -> 2016); mengubah jam kembali ke yang benar memecahkan masalah.

Catatan 1: Saya memposting ini terutama karena saya memiliki pesan kesalahan yang persis sama, tetapi solusi yang bekerja terbukti berbeda dari hanya memperbarui versi plugin (seperti yang diposting oleh Jared Burrows).

Catatan 2: menggunakan

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

dapat menjadikan versi plugin sebagai default untuk yang terbaru. Ingatlah bahwa bangunan Anda dapat merusak perubahan API (dan karena alasan itu, tidak disarankan oleh Android API docs), jadi gunakan ini dengan risiko Anda sendiri hanya jika Anda terus-menerus memperbarui versi.


4
Intellij / Android Studio akan memperingatkan Anda untuk tidak melakukan ini, karena Anda harus tahu versi apa yang Anda gunakan.
Jared Burrows

1
@JaredBurrows Saya tahu versi apa yang saya gunakan - yang terbaru. Saya tidak melihat alasan tertentu untuk mengikat diri Anda ke rilis tertentu, dan memperbarui versi secara manual setiap kali rilis baru dilakukan bukanlah pilihan yang lebih masuk akal daripada menggunakan +versi IMO. Peringatan dipancarkan untuk membantu pemrograman, jika mereka mengacu pada aturan yang keras dan tidak dapat ditegakkan, mereka tidak akan menjadi peringatan melainkan kesalahan sejak awal. Tetap saja, Anda membuat poin yang benar-benar valid, saya sudah memasukkan info itu dalam posting saya.

1
menggunakan operator '+' menghasilkan bangunan yang tidak dapat diprediksi dan harus selalu dihindari. Ini jawaban yang berbahaya.
agrosner

@agrosner lihat komentar saya di atas untuk alasan. Benar, itu harus dihindari dalam relasi akhir dan kode produksi serius, tetapi tidak ada kelemahan nyata untuk menggunakannya dalam pengembangan aplikasi kecil yang berkelanjutan. Diulang untuk membuatnya lebih jelas. Sebagai catatan tambahan, info itu diberikan sebagai solusi yang memungkinkan untuk masalah nyata , bukan sebagai praktik terbaik - dan bukan jawabannya ada di sini - jawabannya adalah memeriksa jam.

Yah ... Saya mengalami masalah ini hari ini, dan ini benar-benar tahun 2016 sekarang ... Apakah ada kemungkinan ini terkait? Juga, apakah ada cara untuk memperbaikinya tanpa mengubah jam? Saat ini saya mulai basah dengan Android dan lingkungan build. Semuanya masih baru bagi saya dan saya agak
bingung



9

Ganti jalur kelas Anda dengan sesuatu yang ambigu seperti ini. Ini adalah solusi dan berfungsi tetapi mungkin itu bukan solusi yang baik.

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

Cara terbaik adalah mengganti + dengan versi gradle terbaru


Yah, hanya jika Anda benar-benar ingin menggunakan versi alfa atau beta juga.
JacksOnF1re

Baca hati-hati di sini: developer.android.com/studio/releases/gradle-plugin.html "Perhatian: Anda tidak boleh menggunakan dependensi dinamis dalam nomor versi, seperti 'com.android.tools.build:gradle:.+' Menggunakan fitur ini dapat menyebabkan pembaruan versi yang tidak terduga dan kesulitan menyelesaikan perbedaan versi. "
barat

6

Periksa versi terbaru dari Plugin Gradle Di Sini:

Unduh

Anda harus mengubahnya dalam dependensi pengaturan aplikasi

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

}

}



1

Saya menggunakan Binding Data Android dan saya memiliki masalah yang sama hari ini.

Untuk mengatasinya, ubah:

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

Untuk:

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

1.0-rc0 masih bisa ditemukan di jcenter sekarang, saya tidak tahu mengapa itu tidak bisa digunakan.


1

Saya punya cara yang akhirnya menyelesaikan ini 1. periksa calsspath Anda di build.gradle atas, misal milik saya adalah classpath 'com.android.tools.build:gradle:.1.0-alpha3' lalu buka https: // jcenter. bintray.com/com/android/tools/build/gradle/ menemukan rilis yang lebih baru dari milik Anda, di sini saya memilih perubahan classpath 2.1.0-beta3 di bawah ini, kemudian meluncurkan build. classpath 'com.android.tools.build:gradle:.1.0-beta3'



0

setel variabel Lingkungan ANDROID_DAILY_OVERRIDE ke nilai yang sama Contoh - b9471da4f76e0d1a88d41a072922b1e0c257745c

ini bekerja untuk saya.


Dan di mana variabel ini berada ??
MobileEvangelist

Di mana saya harus menetapkan ANDROID_DAILY_OVERRIDE?
MiguelAngel_LV

1
@MiguelAngel_LV, AndriodNewbie, google cara mengekspor variabel lingkungan di sistem operasi Anda. Ini adalah fitur OS
Yaroslav Mytkalyk


0

Dalam beberapa bulan terakhir, saya menggunakan versi "pratinjau" dari Android Studio. Saya mencoba untuk beralih kembali ke rilis "stabil" untuk pembaruan perangkat lunak tetapi itu tidak cukup dan saya mendapatkan kesalahan terkenal yang Anda bicarakan.

Menghapus instalan Android Studio 2.2.preview saya dan menginstal Android Studio stabil terbaru (2.1) memperbaikinya untuk saya :)


0

Gunakan versi stabil atau gradle dalam file gradle level aplikasi dalam kasus saya, itu adalah
classpath 'com.android.tools.build:gradle:.2.0-alpha3'

Saya mengubahnya dengan

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


0

output dari NonFinalPluginExpiry.java

contoh 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

jika seseorang ingin menggunakan plugin dan tidak ingin melakukan google shi setiap hari ..

perlu:

  1. kompilasi ulang plugin
  2. ganti "Plugin-Version" dalam manifes
  3. buat skrip otomatisasi untuk menghasilkan env var dan atur setiap hari

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

CONTOH APLIKASI DI JAWA (sumber + JAR):

  1. FOR GENERATE ADO - untuk SEMUA OS'E DENGAN JVM
  2. SET ENV untuk LINUX

https://github.com/c3ph3us/ado

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

contoh fungsi bash untuk mengekspor env dan memulai ide / atau studio:

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

0

Ini adalah cara android memberi tahu Anda untuk memutakhirkan gradle ke versi terbaru. Anda dapat melakukan dua hal-

  1. Tingkatkan ke versi gradle yang lebih baru. Anda mungkin menghadapi kesalahan baru setelah peningkatan (misalnya, jika Anda meningkatkan ke 4.1, Anda harus beradaptasi dengan sintaks baru - "kompilasi" tidak lagi valid, gunakan "implementasi").
  2. Perbarui variabel ANDROID_DAILY_OVERRIDE Anda dengan nilai yang diberikan. Buka Komputer -> Properti -> Pengaturan Sistem Lanjut -> Variabel Lingkungan, dan buat variabel baru atau perbarui nilai ANDROID_DAILY_OVERRIDE yang ada. Seperti namanya, nilai ini hanya berlaku untuk satu hari dan hari berikutnya Anda harus mengganti variabel.

-1

Anda harus meningkatkan versi gradle. misalnya: com.android.build.gradle 1.3.0

masalah ini terjadi ketika versi gradle diubah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.