Gradle - Lỗi Không thể tìm thấy phương thức triển khai () cho các đối số [com.android.support:appcompat-v7:26.0.0]


87

Tôi đang cố gắng mở dự án android hiện có trong android studio và nó không thể tạo ứng dụng mà không có lỗi

Lỗi android studio tiếp tục ném

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.

Mã của tôi trong build.gradle Có thể giúp hiểu vấn đề của tôi Các phụ thuộc của tôi

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"

}

Vui lòng giúp đỡ để giải quyết vấn đề


5
Bạn có đang sử dụng Android Studio 3.0 không?
Saurabh Thorat

Tôi mới sử dụng Android. Nhưng Có, tôi đã cập nhật lên 3.0 vì lỗi trước đó đã phàn nàn về nó.
cole

1
Nope android studio 2.3.3
cole

9
Hãy thử thay thế implementationvớicompile
Saurabh Thorat

Yup nó hoạt động .. Cảm ơn
cole

Câu trả lời:


87

Thay thế implementationbằng compile.

compilegần đây không được dùng nữa và được thay thế bằng implementationhoặcapi


18
Tiêu đề này nói 'Không thể tìm thấy phương pháp thực hiện ()' để sử dụng 'thực hiện' thay vì 'biên dịch' sẽ không thể giúp ích (trừ trường hợp được thông báo lỗi là hoàn toàn sai)
Mario Klebsch

Tôi đã sử dụng "triển khai" cho một mô-đun ivy có trong kho lưu trữ Artifactory của chúng tôi. Câu trả lời không giúp được gì
GaVaRaVa

Thực tế với mô tả là đúng nhưng KHÔNG dẫn đến lỗi hiển thị trong tiêu đề. Tra cứu câu trả lời của Sunil Kumar: bạn đang chỉnh sửa sai tập tin. Nếu được xác nhận, vui lòng từ chối câu trả lời này vì nó gây hiểu lầm. TY
FrankKrumnow

42

Đảm bảo phiên bản Gradle của bạn 3.*.*cao hơn hoặc cao hơn trước khi sử dụng "triển khai".

Mở tệp Gradle cấp dự án trong các phần phụ thuộc:

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

Mở tệp 'gradle-wrapper.properties' và đặt distributionUrl:

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

hoặc phiên bản mới nhất.

Đồng bộ hóa dự án. Tôi hy vọng điều này sẽ giải quyết vấn đề của bạn.


25

Bạn cần sử dụng ít nhất Gradle 3.4 hoặc mới hơn để có thể sử dụng implementation. Bạn không nên tiếp tục sử dụng phiên bản không dùng nữa compilevì điều này có thể dẫn đến thời gian xây dựng chậm hơn. Để biết thêm chi tiết, hãy xem hướng dẫn chính thức dành cho nhà phát triển Android:

Khi mô-đun của bạn định cấu hình phần phụ thuộc triển khai, nó cho Gradle biết rằng mô-đun không muốn rò rỉ phần phụ thuộc sang các mô-đun khác tại thời điểm biên dịch. Đó là, sự phụ thuộc chỉ có sẵn cho các mô-đun khác trong thời gian chạy. Sử dụng cấu hình phụ thuộc này thay vì api hoặc biên dịch có thể dẫn đến cải thiện thời gian xây dựng đáng kể vì nó làm giảm số lượng dự án mà hệ thống xây dựng cần phải biên dịch lại. Ví dụ: nếu một phần phụ thuộc triển khai thay đổi API của nó, Gradle chỉ biên dịch lại phần phụ thuộc đó và các mô-đun trực tiếp phụ thuộc vào nó. Hầu hết các ứng dụng và mô-đun thử nghiệm nên sử dụng cấu hình này.

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

Cập nhật: compile sẽ bị xóa vào cuối năm 2018, vì vậy hãy đảm bảo rằng bạn chỉ sử dụng implementationbây giờ:

Cảnh báo: Cấu hình 'biên dịch' đã lỗi thời và đã được thay thế bằng 'triển khai'. Nó sẽ bị xóa vào cuối năm 2018


2
Tôi đã sử dụng Gradle 4.4 nhưng vẫn gặp sự cố này.
Vòng lặp vô hạn vào

1
Và phiên bản plugin gradle của bạn là gì ? @InfiniteLoops
donfuxx 23/02/18

phiên bản plugin là 171.4249.39. tools.build:Gradle phiên bản 3.0.1
Infinite Loops

Trong Android Studio, nếu bạn tạo một dự án mới từ đầu: Tệp gradle của nó có sử dụng implementationhay compilekhông? @InfiniteLoops
donfuxx

1
Đối với tôi, sự khác biệt là mili giây. Tại sao lại lộn xộn với một thứ gì đó khi nó chưa bị hỏng?
user1608385 07/04

22

Đảm bảo rằng bạn đang thêm các phần phụ thuộc này vào android / app / build.gradle, không phải android / build.gradle


2
Đã xác nhận. Đây là câu trả lời chính xác. Thông báo lỗi như được mô tả ở trên hiển thị khi thêm phần phụ thuộc vào tệp build.gradle sai.
FrankKrumnow

@FrankKrumnow Không thể xác nhận vì cũng có thể có những lý do khác.
Sreekanth Karumanaghat

2
Đây là vấn đề của tôi, vì vậy cần kiểm tra xem bạn đang thêm vào đúng tệp!
Josh Undefined

Đồng ý. Điều này phải là câu trả lời chính xác. Cảm ơn nhiều!
Mitrakov Artem

Đây cũng là vấn đề của tôi, sau khi tôi đã dành 2 ngày để cố gắng khắc phục. Các phụ thuộc từng tồn tại trong android / build.gradle trong các phiên bản trước của Cordova nên điều này rất khó hiểu đối với tôi.
SigmaSteve

9

thay đổi áp dụng plugin: 'java' để áp dụng plugin: 'java-library'

java-library-plugin


Mặc dù câu trả lời được chấp nhận dường như phổ biến nhất, nhưng nó không phải là câu trả lời đúng duy nhất. Trong trường hợp của tôi, đó là sự vắng mặt của "áp dụng plugin: 'java-library" dẫn đến cùng một ngoại lệ (tất nhiên là đối tượng khác). Vì vậy, cảm ơn @ xiqing-lau đã thêm giải pháp khả thi này.
pfurbacher

5

Thật nực cười, nhưng tôi vẫn muốn chia sẻ kinh nghiệm của mình để phòng trường hợp ai đó rơi vào trường hợp như tôi.

Vui lòng kiểm tra nếu bạn đã thay đổi: compileSdkVersion-> implementationSdkVersiondo nhầm lẫn


"Do nhầm lẫn" có nghĩa là chúng ta KHÔNG được phép thay đổi nó từ compileSdk .. sang implementSdk .. đúng không? Rằng nó phải ở lại compileSdkVersion? --- Bất cứ ai đọc nhận xét này câu trả lời là - Vâng, stackoverflow.com/a/49755251/4132182
ZenVentzi

Đây không phải là một giải pháp! thay đổi biên dịch thành thực thi chỉ áp dụng cho các phụ thuộc .
Jorgesys

2

Ma cua ban

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

Thay thế nó bằng

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

2

Như đã đề cập ở đây, https://stackoverflow.com/a/50941562/2186220 , sử dụng plugin gradle phiên bản 3 trở lên trong khi sử dụng 'thực hiện'.

Ngoài ra, hãy sử dụng google()kho lưu trữ trong buildscript.

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

Những thay đổi này sẽ giải quyết được vấn đề.


2

Thay thế của bạn implementationbằng classpath. Cần làm việc.


Xin chào Nander, tôi không nghĩ câu trả lời của tôi giống với câu đã được chấp nhận. Ngoài ra, tôi không làm việc cho tôi, đó là lý do tại sao tôi đăng những gì hiệu quả và có thể giúp các nhà phát triển khác.
Edward Mpanza

Chào Edward, xin lỗi, tôi đọc nhầm. Câu trả lời của bạn thực sự là khác nhau.
Nander Speerstra

1

Tôi đã chuyển implementationsang build.gradle cấp mô-đun từ build.gradle cấp gốc. Nó giải quyết vấn đề.


0

Nếu việc triển khai không được xác định, bạn đang viết trên một tệp sai. Trên Unity 2019+, tệp chính xác là main template grandlechứ không phải một số tệp khác.

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.