Gradle - Kesalahan Tidak dapat menemukan implementasi metode () untuk argumen [com.android.support:appcompat-v7:26.0.0]

92

Saya mencoba membuka proyek android yang ada di studio android dan gradle tidak dapat membangun aplikasi tanpa kesalahan

Kesalahan studio android terus terjadi

Error:(74, 1) A problem occurred evaluating project ':app'.
> Could not find method implementation() for arguments 
[com.android.support:appcompat-v7:26.0.0] on object of type 
org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Kode Saya di build.gradle Yang dapat membantu untuk memahami masalah saya Ketergantungan saya

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')

// google & support
implementation "com.android.support:appcompat-v7:$supportVersion"
implementation "com.android.support:cardview-v7:$supportVersion"
implementation "com.android.support:recyclerview-v7:$supportVersion"
implementation "com.android.support:design:$supportVersion"
implementation "com.android.support:palette-v7:$supportVersion"
implementation "com.android.support:customtabs:$supportVersion"
implementation "com.android.support:support-v4:$supportVersion"
implementation 'com.google.android.exoplayer:exoplayer:r2.0.4'

// utils
implementation 'com.github.bumptech.glide:glide:4.0.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
implementation 'com.koushikdutta.ion:ion:2.1.7'
implementation 'com.github.Commit451:bypasses:1.0.4'
implementation 'com.jakewharton:butterknife:8.8.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'
implementation 'com.drewnoakes:metadata-extractor:2.9.1'
implementation "com.orhanobut:hawk:2.0.1"

}

Tolong bantu untuk menyelesaikan masalah

cole
sumber
5
Apakah Anda menggunakan Android Studio 3.0?
Saurabh Thorat
Saya baru mengenal android. Tapi Ya, saya memperbarui ke 3.0 karena kesalahan sebelumnya mengeluhkannya.
Cole
2
Tidak android studio 2.3.3
Cole
9
Coba ganti implementationdengancompile
Saurabh Thorat
Yup berhasil .. Terima kasih
cole

Jawaban:

86

Ganti implementationdengan compile.

compilebaru-baru ini tidak digunakan lagi dan diganti oleh implementationatauapi

Saurabh Thorat
sumber
20
Judulnya mengatakan 'Tidak dapat menemukan implementasi metode ()' jadi menggunakan 'implementasi' daripada 'kompilasi' tidak akan membantu (kecuali jika pesan kesalahan benar-benar salah)
Mario Klebsch
Saya sudah menggunakan "implementasi" untuk modul ivy yang ada di repositori Artifactory kami. Jawabannya tidak membantu
GaVaRaVa
1
Fakta dengan deprication benar tetapi TIDAK mengarah ke pesan kesalahan yang ditampilkan di header. Cari jawaban Sunil Kumar: Anda mengedit file yang salah. Jika dikonfirmasi, harap kurangi jawaban ini karena menyesatkan. TY
FrankKrumnow
45

Pastikan versi Gradle Anda 3.*.*atau yang lebih tinggi sebelum menggunakan "implementasi".

Buka file Gradle level proyek di bawah dependensi:

dependencies{
    classpath 'com.android.tools.build:gradle:3.1.2'
}

Buka file 'gradle-wrapper.properties' dan setel distributionUrl:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

atau versi terbaru.

Sinkronkan proyek. Saya harap ini menyelesaikan masalah Anda.

krishnamurthy
sumber
27

Pastikan Anda menambahkan dependensi ini di android / app / build.gradle, bukan android / build.gradle

Sunil Kumar
sumber
3
Dikonfirmasi. Ini jawaban yang benar. Pesan kesalahan seperti yang dijelaskan di atas ditampilkan saat menambahkan dependensi ke file build.gradle yang salah.
FrankKrumnow
@FrankKrumnow Tidak dapat mengonfirmasi karena, mungkin ada alasan lain juga.
Sreekanth Karumanaghat
3
Ini adalah masalah saya, jadi ada baiknya Anda memeriksa apakah Anda menambahkan ke file yang benar!
Josh Undefined
Setuju. Yang ini seharusnya jawaban yang benar. Terimakasih banyak!
Mitrakov Artem
Ini juga masalah saya, setelah saya menghabiskan 2 hari mencoba memperbaikinya. Dependensi yang digunakan untuk hidup di android / build.gradle di Cordova versi sebelumnya jadi ini sangat membingungkan saya.
SigmaSteve
25

Anda harus menggunakan setidaknya Gradle 3.4 atau yang lebih baru agar bisa menggunakan implementation. Tidak disarankan untuk terus menggunakan yang sudah tidak digunakan lagi compilekarena hal ini dapat memperlambat waktu build. Untuk lebih jelasnya lihat panduan resmi pengembang android:

Saat modul Anda mengonfigurasi dependensi implementasi, itu memberi tahu Gradle bahwa modul tidak ingin membocorkan dependensi ke modul lain pada waktu kompilasi. Artinya, ketergantungan hanya tersedia untuk modul lain pada waktu proses. Menggunakan konfigurasi dependensi ini, bukan api atau kompilasi, dapat menghasilkan peningkatan waktu build yang signifikan karena mengurangi jumlah project yang perlu dikompilasi ulang oleh sistem build. Misalnya, jika dependensi implementasi mengubah API-nya, Gradle hanya mengompilasi ulang dependensi tersebut dan modul yang secara langsung bergantung padanya. Sebagian besar aplikasi dan modul pengujian harus menggunakan konfigurasi ini.

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations

Pembaruan: compile akan dihapus pada akhir 2018, jadi pastikan Anda hanya menggunakan implementationsekarang:

Peringatan: Konfigurasi 'kompilasi' sudah usang dan telah diganti dengan 'implementasi'. Ini akan dihapus pada akhir 2018

donfuxx
sumber
2
Saya sudah menggunakan Gradle 4.4, masih mengalami masalah ini tiba-tiba.
Infinite Loops
1
Dan apa versi plugin gradle Anda ? @InfiniteLoops
donfuxx
versi plugin adalah 171.4249.39. tools.build:Gradle version 3.0.1
Infinite Loops
Di Android Studio, jika Anda membuat proyek baru dari awal: Apakah file gradle-nya menggunakan implementationatau compile? @InfiniteLoops
donfuxx
1
Bagi saya, perbedaannya hanya dalam milidetik. Mengapa mengacaukan sesuatu jika tidak rusak?
pengguna1608385
9

ubah terapkan plugin: 'java' untuk menerapkan plugin: 'java-library'

java-library-plugin

xiqing lau
sumber
Meskipun jawaban yang diterima tampaknya yang paling populer, itu bukan satu-satunya jawaban yang benar. Dalam kasus saya, itu adalah tidak adanya "apply plugin: 'java-library" yang menghasilkan pengecualian yang sama persis (objek berbeda, tentu saja). Jadi, terima kasih kepada @ xiqing-lau untuk menambahkan kemungkinan solusi ini.
pfurbacher
5

Konyol sekali, tapi saya tetap ingin berbagi pengalaman saya seandainya ada orang yang mengalami situasi seperti saya.

Harap periksa apakah Anda mengubah: compileSdkVersion-> implementationSdkVersionkarena kesalahan

Nguyen Tan Dat
sumber
"Secara tidak sengaja" artinya kita TIDAK seharusnya mengubahnya dari compileSdk .. menjadi executionSdk .. kan? Bahwa itu seharusnya tetap menjadi compileSdkVersion? --- Siapa pun yang membaca komentar ini, jawabannya adalah - Ya, stackoverflow.com/a/49755251/4132182
ZenVentzi
Ini bukan solusi! mengubah kompilasi menjadi implementasi hanya berlaku untuk dependensi .
Jorgesys
2

Kode Anda

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

Gantikan dengan

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
Saurabh kumar
sumber
2

Seperti yang disebutkan di sini, https://stackoverflow.com/a/50941562/2186220 , gunakan plugin gradle versi 3 atau lebih tinggi saat menggunakan 'implementasi'.

Selain itu, gunakan google()repositori di buildscript.

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
    }
}

Perubahan ini seharusnya menyelesaikan masalah.

Bot
sumber
2

Gantikan implementationdengan classpath. Itu seharusnya berhasil.

Edward Mpanza
sumber
Hai Nander, saya rasa jawaban saya tidak mirip dengan yang diterima. Selain itu, saya tidak bekerja untuk saya, itulah sebabnya saya memposting apa yang berhasil dan dapat membantu pengembang lain juga.
Edward Mpanza
Hai Edward, maaf, saya salah membaca. Jawaban Anda memang berbeda.
Nander Speerstra
1

Saya pindah implementationke build.gradle level modul dari build.gradle level root. Ini menyelesaikan masalah.

pengguna8783065
sumber
0

Jika implementasi tidak ditentukan, Anda menulis pada file yang salah. Pada Unity 2019+, file yang benar adalah main template grandledan bukan yang lainnya.

George T
sumber