'phụ thuộc' không thể được áp dụng cho '(groovy.lang.Closure)'


121

Tôi không thể sửa lỗi này:

dependencies cannot be applied to '(groovy.lang.Closure)

Đây là tệp gradle của tôi:

buildscript {
     repositories {
         maven { url 'http://download.crashlytics.com/maven' }
     }

     dependencies {
         classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
     }
 }
apply plugin: 'android'
apply plugin: 'crashlytics'

repositories {
   maven { url 'http://download.crashlytics.com/maven' }
}

dependencies {
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':FRNDzTER_core')
    compile project(':cropper')
    compile project(':stickyListHeaders')
    compile "com.nostra13.universalimageloader:universal-image-loader:${rootProject.universalImageLoaderVersion}"
    compile "com.google.android.gms:play-    services:${rootProject.googlePlayServicesVersion}"
    compile "de.keyboardsurfer.android.widget:crouton:${rootProject.croutonVersion}"
    compile "com.nineoldandroids:library:${rootProject.nineoldandroidsVersion}"
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
    compile 'com.crashlytics.android:crashlytics:1.+'
}

android{
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion
    defaultConfig {
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode rootProject.versionCode
        versionName rootProject.versionName
    } 
    buildTypes {
        release {
            debuggable rootProject.prodDebug
            proguardFile 'proguard.cfg'
        }
    }

    dependencies {
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        abortOnError false
    }
 }

1
Tôi khá chắc rằng những điều này có liên quan rất nhiều và như câu trả lời của tôi ở đó cho thấy, tôi nghĩ rằng việc đánh dấu lỗi là một lỗi do đó sự chênh lệch của các giải pháp. stackoverflow.com/questions/29133601/... Đó không phải là để nói rằng đầu trả lời ở đây không thực hiện một số điểm chung rất có giá trị về "hiện tại" gradle buildscript của bạn
Seb Andraos

Câu trả lời:


22

Dựa trên những gì Android Studio tạo ra, bạn cần có một tệp dự án cấp cao nhất build.gradlevà một tệp khác cho ứng dụng của mình build.gradle.

Cấp cao nhất:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        maven { url 'http://download.crashlytics.com/maven' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'http://download.crashlytics.com/maven' }
    }
}

Mức độ ứng dụng:

apply plugin: 'com.android.application'
apply plugin: 'crashlytics'

android{
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion
    defaultConfig {
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode rootProject.versionCode
        versionName rootProject.versionName
    } 
    buildTypes {
        release {
            debuggable rootProject.prodDebug
            proguardFile 'proguard.cfg'
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        abortOnError false
    }
 }     `

dependencies {
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':FRNDzTER_core')
    compile project(':cropper')
    compile project(':stickyListHeaders')
    compile "com.nostra13.universalimageloader:universal-image-          l                        loader:${rootProject.universalImageLoaderVersion}"
    compile "com.google.android.gms:play-    services:${rootProject.googlePlayServicesVersion}"
    compile "   "de.keyboardsurfer.android.widget:crouton:${rootProject.croutonVersion}"
    compile "com.nineoldandroids:library:${rootProject.nineoldandroidsVersion}"
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
    compile 'com.crashlytics.android:crashlytics:1.+'
}

Nhưng ngay cả khi không có tất cả những thứ đó, vấn đề của bạn là bạn có cấu hình plugin dependenciesbên trong của mình android.

android {
    dependencies {
    }
}

loại bỏ dependencieskhối trống đó .

CHỈNH SỬA: Tôi cũng bắt đầu gặp lỗi này với Android Studio mới nhất, tất cả những gì tôi phải làm là thêm phiên bản mới hơn của plugin Gradle và compileSdkVersion 22.

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

11
Tôi đã làm điều đó vấn đề vẫn còn cùng :(
Ashwani Kottapalli

thành thật mà nói, tôi nghĩ bạn nên sửa các dấu ngoặc kép và khoảng trống trong các phần phụ thuộc Crouton, Universal-Image-Loader và googleplayServices của bạn. Bạn cũng chỉ nên sử dụng một phần Dịch vụ của Google Play theo developer.android.com/google/play-services/setup.html
EpicPandaForce

nó không hoạt động ... bạn có thể cho tôi id fb hoặc bất kỳ cái nào khác ... để chúng ta có thể tập luyện được không? xin vui lòng?
Ashwani Kottapalli

... trong trường hợp đó, tôi không biết lỗi của bạn là gì. :( Lần cuối cùng này xảy ra với tôi, plugin android và gradle của tôi đã lỗi thời, và tôi đã sử dụng một loại cấu hình mà không còn tồn tại
EpicPandaForce

1
Phụ thuộc vào việc bạn đang sử dụng Dòng lệnh hay IDE. Và nếu IDE, thì IDE nào.
EpicPandaForce

247

Bạn có thể vào Preferences và chọn "sử dụng trình bao bọc gradle mặc định" sau đó xây dựng lại dự án. Nó hoạt động tốt cho tôi: nhập mô tả hình ảnh ở đây


4
Có ai có lời giải thích tại sao điều này xảy ra không?
racs

1
Có vẻ như sau khi cập nhật từ 1.4 lên 1.5, cài đặt này đã được "đặt lại" để sử dụng bản phân phối cục bộ thay thế trên máy của tôi. Câu trả lời này chắc chắn đã giải quyết được vấn đề.
dường như.amusing

3
Kể từ phiên bản 143.2532994, vấn đề này dường như xảy ra một lần nữa ... có ai giống tôi không ...? Thật khó chịu ..
Arst

Mặc dù câu trả lời được lựa chọn là rất xây dựng và trung thực, có một lý do tại sao câu trả lời này có thứ tự của tầm quan trọng hơn upvotes
Pavel Zdenek

Ồ, vâng, có lý do - người dùng mac. Trên windows, trang này khác. "Không có gì để hiển thị". Câu trả lời được đánh dấu ít nhất là hữu ích bằng cách nào đó.
Gangnus

37

Đi đến

các cửa sổ

Tệp -> Cài đặt -> Xây dựng, Thực thi, Triển khai -> Công cụ Xây dựng -> Gradle

Mac

Preference -> Build, Execution, Deployment -> Build Tools -> Gradle

và chọn Sử dụng trình bao bọc gradle mặc định


1
Các cửa sổ. Không có gì để chọn.
Gangnus

2
Đầu tiên bạn phải mở dự án trước.
Raptor

Và trên Linux, nó cũng giống như trên Windows: File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle. Bạn có thể chỉnh sửa câu trả lời của mình và viết "Windows / Linux".
lenooh

18

Vấn đề của tôi là toàn bộ tệp build.setting đã bị chiếm giữ với cannot be applied to '(groovy.lang.Closure)'các thông báo cảnh báo thay vì xảy ra trên bất kỳ biến cụ thể nào.

Tôi đã thử tất cả các giải pháp được cung cấp bởi những người khác nhưng không có giải pháp nào phù hợp với tôi. Tôi đã kết thúc việc thực hiện các bước này sau đó nó hoạt động như một sự quyến rũ. Nếu bạn đang gặp phải vấn đề tương tự, hãy thử.

  1. Mở và chỉnh sửa tập tin: yourproject/gradle/wrapper/gradle-wrapper.properties. Chỉnh sửa nội dung để cập nhật phiên bản phân phối gradle như trong hình bên dưới sau đó lưu lại.
  2. Xóa thư mục này: yourproject/.gradle.
  3. Nhấp vào Sync project with gradle files, sau đó bạn tốt để đi.

nhập mô tả hình ảnh ở đây


1
Không cần xóa thư mục yourproject / .gradle. Nếu bạn chọn làm như vậy, hãy nhớ lưu mọi tùy chỉnh mà bạn đã thực hiện ở đó, chẳng hạn như thêm tệp gradle.properties với org.gradle.daemon = true (một cách tối ưu hóa phổ biến). Tuy nhiên, bạn có thể xây dựng lại một cách đơn giản và trình bao bọc gradle sẽ tải xuống phiên bản mới được chỉ định trong phân phối, cùng với các phiên bản cũ hơn. Sẽ tốt cho các thư mục phiên bản cũ hơn vẫn còn trong thư mục gradle của dự án.
Mark McClelland

Cập nhật phiên bản gradle đã gradle-wrapper.propertiesgiải quyết được vấn đề của tôi. Cảm ơn!
BVB

18

Nếu bạn đã sử dụng "trình bao bọc gradle mặc định" và nó không hữu ích:

In Menu click: File -> Invalidate Caches / Restart...

Nếu nó cũng không hữu ích, hãy thử trong 2 bước:

1) Delete ".gradle" folder (and "build" folder if you have it already)

2) In Menu click: File -> Invalidate Caches / Restart...

Sau khi khởi động lại, cảnh báo sẽ biến mất.

(Đối với tôi, nó hoạt động và cho Android Studio và cho IntelliJ Idea)


Đã làm cho tôi. Điều duy nhất cần lưu ý là: Nếu bạn đang sử dụng gradle của riêng mình thay vì dùng chung, bạn cũng phải xóa .gradletrong thư mục chính của mình.

1
Chỉ làm theo hướng dẫn 2) làm việc cho tôi. Cảm ơn!!
manolodewiner

2
đã hoạt động ... trong 5 giây. sau đó tôi lại gặp lỗi đó.
Yar

Hơi bực bội về việc IntelliJ gần đây đã nhận được những dự án phân tích cú pháp đúng cách. Điều này đã từng là sở trường của nó ... bây giờ nó có cảm giác như nó vấp phải điều nhỏ nhặt nhất.
smaudet

4

Tôi đã đi vào các tùy chọn để thử một trong các câu trả lời khác khi tôi nhận thấy cảnh báo rằng thư mục chính của tôi gradlebị sai. Vì vậy, tôi đã mở trình duyệt tệp và chọn gradlephiên bản mới hơn , và tất cả các lỗi đã biến mất. Hình ảnh hiển thị bên dưới.

nhập mô tả hình ảnh ở đây


1

Tôi cá với bạn rằng vấn đề hoàn toàn không liên quan đến đoạn mã đang đưa ra cảnh báo cho bạn, rất có thể đó là tệp proguard của bạn. Tôi có nội dung sau trong mã của mình và nhận được cảnh báo tương tự:

buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

Bằng cách bình luận ra ngoài runProguard false, tất cả các vấn đề của tôi sẽ biến mất, hãy xem xét :)


Daniel Wilson có giúp gì không nếu bạn đổi runProguardsang minifyEnabled? Thông tin thêm được cung cấp tại đây
Sergii N.

1

Tôi gặp vấn đề tương tự trong android studio 2.2 , nó hoạt động với tôi:

nguyên:

android {
...
}

dependencies {
...
}

chuyển dependenciesđến android:

android {
...
   dependencies {
   ...
   }
}

1

Tôi đã giải quyết sự cố trong Android Studio bằng cách Làm mất hiệu lực bộ nhớ cache và khởi động lại.

File-> Invalidate Caches / Restart..

nhập mô tả hình ảnh ở đây


1

Tôi đã gặp sự cố tương tự như vấn đề này trong IntelliJ cho một dự án Kotlin. Có vẻ như vấn đề là trong dự án của tôi, mặc dù nó được đặt để sử dụng JDK 8, nhưng bằng cách nào đó, ngôn ngữ và phiên bản API đã được đặt thành 1.3. Xem Tùy chọn dự án> Các khía cạnh. Trong trường hợp của tôi, tôi đã đánh dấu "sử dụng cài đặt dự án", nhưng cài đặt thủ công theo từng khía cạnh cũng có thể hoạt động.


0
  1. Đóng dự án (Tệp / Đóng dự án),
  2. Chọn “Mở dự án Android Studio hiện có” trên menu bắt đầu và chọn thư mục chứa dự án Android của bạn.

Công việc này đối với tôi.


0

Các tệp Gradle có thể được làm rõ ràng ở một số nơi để tránh những lỗi như vậy. Ví dụ: thay đổi

configurations {

đến

project.configurations {

hoặc là

task {
    description 'foo'

đến

task {
    setDescription 'foo'

0

Để khắc phục sự cố, chỉ cần đóng dự án, sau đó chọn “Mở dự án Android Studio hiện có” trên menu bắt đầu và chọn thư mục chứa dự án Android của bạn. Hãy cẩn thận, chọn thư mục , không phải tệp dự án .iml.


0

Cắt và sau đó dán "buildTypes" vào cùng một vị trí trong phần "android" và Re-Sync (refresh) Project


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.