buildTypes को groovy.lang.Closure पर लागू नहीं किया जा सकता है


241

मुझे यह प्रॉजेक्ट मेरे प्रॉजेक्ट फ़ाइल में मिल रहा है:

चेतावनी: (16, 5) 'buildTypes' पर लागू नहीं किया जा सकता (groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>) '

मेरा बिल्डटाइप्स अनुभाग है:

    buildTypes {
        debug {
            debuggable true
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        }
    }

मैं वर्तमान में Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 और targetSdkVersion 22 का उपयोग कर रहा हूं। मैंने 21 से नीचे जाने की कोशिश की, लेकिन अभी भी चेतावनी मिल रही थी।

इस चेतावनी का क्या कारण है और यह कैसे तय किया गया है?


क्या आपने प्लगइन लागू किया है: 'com.android.aplication' या 'com.android.library'?
किरिल बोयारशिनोव

@ किरिल: com.android.application
जिम विटेक

जवाबों:


471

मेरे लिए उपरोक्त समाधान को लागू करने से समस्या हल नहीं हुई थी। इसके बजाय मुझे एंड्रॉइड स्टूडियो के भीतर सेटिंग में जाना था और "यूज ग्रेडेल रैपर" चुनें:

Android Studio में: फ़ाइल \ Settings \ Build, निष्पादन, परिनियोजन \ Build टूल \ Gradle

(मैक उपयोगकर्ता: Android Studio \ Preferences ... \ Build, निष्पादन, परिनियोजन \ Build टूल \ Gradle )

मार्क: डिफ़ॉल्ट ग्रेडर आवरण (डिफ़ॉल्ट) का उपयोग करें

यह सभी 'हटाया नहीं जा सकता है' (groovy.lang.Closure ') बिल्ड फ़ाइलों में चेतावनी।


2
यह सही उत्तर है, समस्या तब हुई जब मैंने विंडोज पर प्रोजेक्ट खोला और फिर लिनक्स पर (ड्रॉपबॉक्स के माध्यम से) यह ग्रेडल वितरण के स्थान को बदल देता है, इसलिए डिफ़ॉल्ट ग्रेडर रैपर का उपयोग करना बेहतर है।
रॉड्रिगो डायरिटो

1
मेरी भी यही समस्या थी। मेरी टीममेट एक विंडोज़ मशीन पर काम करती है। अद्यतन ला रहा है मुझे इस मुद्दे को दे रहे हैं
चिप

@Waterbear मैंने इसके कारण मूल उत्तर को संपादित किया है (मैंने इसके लिए कुछ समय खोजा है: D)। एक सहकर्मी समीक्षा के बाद यह उपलब्ध होगा :) देखें: i.imgur.com/BtCijIW.png
StefMa

किसी तरह 1.3.1 मैक पर इस सेटिंग को बिल्ड -> क्लीन पर रीसेट करें। इसे वापस सेट करना बिल्ड को ठीक करता है। धन्यवाद!
डेन ड्रोबियाजो

11
एंड्रॉइड स्टूडियो के साथ कुछ बेवकूफ, यह मुझे चेतावनी दिखाना शुरू कर दिया जब मैंने निर्माण लक्ष्य 22 और buildToolsVersion 22.0.1 द्वारा बनाया .... मेरे लिए 'डिफ़ॉल्ट ग्रेडर आवरण का उपयोग करें' पहले से ही डिफ़ॉल्ट (एएस 2.0 बीटा) के रूप में चिह्नित किया गया था ... मैं बस मेरे कोड ब्लॉक को काट दिया और बहुत ही जगह पर चिपकाया गया (कोई कोड परिवर्तन नहीं, कोई कॉन्फ़िगरेशन नहीं बदलता है) .... चेतावनी हटा दी गई है!
उमैर

127

मेरी भी यही समस्या थी। BuildTypes को आगे बढ़ाते हुए android सेक्शन में अंतिम प्रविष्टि के रूप में काम किया।

android {
    ...
    buildTypes {
    }
}

2
अजीब बात है कि इसकी स्थिति में फर्क होना चाहिए लेकिन जाहिर तौर पर ऐसा होता है।
जेसन क्रॉस्बी

यह मेरे लिए भी काम करता है। क्या आपके पास कोई विचार है कि यह कैसे काम करता है? धन्यवाद।
myNameCoad

4
यह मेरे लिए भी काम करने लगता था, लेकिन फिर मैंने उन परिवर्तनों को रद्द कर दिया और उस ब्लॉक को उसी स्थान पर कॉपी / पेस्ट कर दिया और चेतावनी भी चली गई। फिर मैंने यह सब पूर्ववत करने की कोशिश की और चेतावनी को दोहराने के लिए परियोजना को बंद और फिर से खोल दिया, लेकिन यह चला गया था। मुझे लगता है कि यह उन प्रकार की चेतावनियों में से एक है।
elliptic1 14

मेरे लिए, पीटर के जवाब के बारे में चेतावनी के अलावा लगभग चेतावनी को मंजूरी दे दी गई थी buildTypes। फिर, इस समाधान ने पिछले एक के लिए काम किया!
हठ

76

1 कट और "android" अनुभाग में एक ही स्थिति में "buildTypes" पेस्ट करें

2 री सिंक प्रोजेक्ट


16

इस समस्या को हल करने के लिए, अपने Android स्टूडियो में फ़ाइल -> सेटिंग पर जाएँ । सेटिंग्स में बिल्ड, एक्ज़ीक्यूशन, डिप्लॉयमेंट -> बिल्ड टूल्स -> ग्रैडल चुनें और "डिफ़ॉल्ट ग्रेडल रैपर (अनुशंसित)" विकल्प का चयन करें

पुनर्निर्माण के बाद आपका बिल्ड.ग्रेड पूरी तरह से ठीक हो जाएगा।


1
यह सही उत्तर है या आप उचित ढाल स्थान का चयन कर सकते हैं
शून्य सूचक

1
यह कैसे अलग है तो @ पीटर का जवाब।
एंडीव

13

यदि उपरोक्त विकल्पों में से कोई भी काम नहीं करता है, तो निम्नलिखित करें

  1. करने के लिए परियोजना बदलें Project"प्रोजेक्ट एक्सप्लोरर" में परिप्रेक्ष्य में ।
  2. हटाएं .gradleऔरbuild फ़ोल्डर्स।
  3. फ़ाइल पर क्लिक करें -> अमान्य कैश / पुनः आरंभ करें ... -> अमान्य और पुनः प्रारंभ करें
  4. अब इसका काम, खुश कोडिंग।

7

मैं बस ऐसा करके अपनी समस्या को हल करने में कामयाब रहा: "फाइल" पर क्लिक करें फिर "अमान्य कैश / पुनरारंभ करें" चुनें


6

इस ग्रैडल मुद्दों को ठीक करने का सबसे आसान तरीका एंड्रॉइड स्टूडियो को ग्रैडल को फिर से कॉन्फ़िगर करने की परियोजना को फिर से बनाना है।

बस "एक मौजूदा एंड्रॉइड स्टूडियो प्रोजेक्ट खोलें" चुनें और अपना प्रोजेक्ट फ़ोल्डर चुनें।

अधिक जानकारी यहाँ


4

यह मेरे लिए काम किया:

buildTypes.debug {
    ext.enableCrashlytics = false
}

buildTypes.release {
    debuggable false
    zipAlignEnabled true
    minifyEnabled false
    signingConfig signingConfigs.release
}

4

जब आप किसी प्रोजेक्ट को अपने वातावरण में आयात करते हैं तो समस्या प्रस्तुत होती है और ग्रेडल प्लग को मूल स्थान से अलग स्थान पर स्थापित किया जाता है। आपको केवल यह बताने की जरूरत है कि आपका ग्रेडल इंस्टॉलेशन कहां है।

BuildTypes या DefaultConfig या एक दूसरे के बीच जो भी चल रहा है वह पूर्ण समाधान नहीं है


यह कैसे मैं अंत में इस समस्या को हल ... 1. Android स्टूडियो में नेविगेट करें: फ़ाइल | सेटिंग्स | फ़ाइल | सेटिंग्स | निर्माण, निष्पादन, तैनाती | बिल्ड टूल्स | ग्रैडल 2. सुनिश्चित करें कि यह अनियंत्रित है, इसके बावजूद इसे रखने की सलाह दी जाती है ... डिफॉल्ट ग्रैडल रैपर (अनुशंसित) 3. का उपयोग करें और यह कि यह चेक किया गया है ... स्थानीय ग्रेडेल वितरण का उपयोग करें 4. और यह कि ग्रेडल होम सेट है। यह संभवतया, बाद के ग्रेडल-एनएन ... सी: / प्रोग्राम फाइल्स / एंड्रॉइड / एंड्रॉइड स्टूडियो 1 / ग्रेडल / ग्रेडल-2.4 के साथ आपको एंड्रॉइड स्टूडियो को पुनरारंभ करना, प्रोजेक्ट का पुनर्निर्माण करना, आदि हो सकता है लेकिन समस्या हल हो गई है।
मिक

3

हाथ में मुद्दा यह है कि आपके एंड्रॉइड स्टूडियो सेटिंग्स जो आप शायद करते हैं अपग्रेड पर आयात किया था, अभी भी एंड्रॉइड स्टूडियो 1.5 की अपेक्षा कुछ अन्य संस्करणों को ग्रेड-2.4 या कुछ अन्य संस्करणों की ओर इशारा कर रहा था।

इस समस्या को हल करने के लिए, आपको सेटिंग्स को खोलना चाहिए और बिल्ड, एक्ज़ीक्यूशन, परिनियोजन> बिल्ड टूल्स> ग्रेडल पर जाएं और अपने स्थानीय ग्रेडल वितरण के होम पथ को बदलें या डिफ़ॉल्ट ग्रेडर रैपर का चयन करें।

लागू करें और अपनी परियोजना को फिर से सिंक करें।


2

मुझे भी यही समस्या थी। मैंने एक नई परियोजना शुरू की और यह काम किया, इसलिए मैंने बिल्ड.ग्रेड फ़ाइल की प्रतिलिपि बनाई। मेरे मामले में केवल अंतर संकलन अनुभागों की कमी थी। मैंने इसे अपनी परियोजना से हटा दिया, सिंक किए गए ग्रेडल, संकलन अनुभागों को फिर से डाला और फिर से फिर से सिंक को सिंक किया।


2

अपने एंड्रॉइड स्टूडियो में फ़ाइल -> सेटिंग्स पर जाएं। इसके बाद बिल्ड, एक्ज़ीक्यूशन, डिप्लॉयमेंट -> बिल्ड टूल्स -> ग्रैडल चुनें और "डिफ़ॉल्ट ग्रेडर रैपर का उपयोग करें (अनुशंसित)" चुनें।

परियोजना का पुनर्निर्माण।


2

मेरे मामले में मेरा buildTypesखंड मेरे ऊपर थाproductFlavors । उनके पदों को बदल देने से चेतावनी से छुटकारा मिल गया:

इससे पहले:

buildTypes {

        debug {
            minifyEnabled false
            shrinkResources false
            ...//etc
        }
 }

 productFlavors {
    demo {
        ...//etc
    }
 }

उपरांत:

 productFlavors {
    demo {
        ...//etc
    }
 }    

 buildTypes {

        debug {
            minifyEnabled false
            shrinkResources false
            ...//etc
        }
 }

मैं अपने androidअनुभाग के शीर्ष पर निम्नलिखित कॉन्फिगर के साथ एंड्रॉइड स्टूडियो 2.1.2 का उपयोग कर रहा हूं :

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.xyz.abc"
        minSdkVersion 14
        targetSdkVersion 24
        //..etc

1

एंड्रॉइड स्टूडियो को अपडेट करने के बाद मुझे यह चेतावनी मिली।

जब मैं Settings >> Build Tools >> Gradle में गया तो मैंने पाया कि स्थानीय Gradle पाथ अमान्य था, क्योंकि gradle वर्जन को 2.6 से 2.8 तक अपडेट किया गया था।

नया रास्ता तय किया और फिर से सिंक सिंकेल ने चेतावनी को हटा दिया।

दूसरा तरीका उपयोग करना है gradlewrapper


0

वितरण में परिवर्तन करना = https: //services.gradle.org/distributions/gradle-2.1-bin.zip to gradle-2.1-all.zip in gradle-wrapper.properties ने मेरे लिए समस्या हल की।


0

संपादित करें: यह कैसे मैं अंत में इस समस्या को हल ...

  1. Android Studio में नेविगेट करें:

    फ़ाइल | सेटिंग्स | निर्माण, निष्पादन, तैनाती | बिल्ड टूल्स | Gradle

  2. सुनिश्चित करें कि यह अनियंत्रित है, इसके बावजूद इसे रखने की सिफारिश की जाती है ...

    डिफ़ॉल्ट ग्रेडर आवरण (अनुशंसित) का उपयोग करें

  3. और यह कि यह जाँच की जाती है ...

    स्थानीय ग्रेडेल वितरण का उपयोग करें

  4. और यह कि ग्रेडल होम को इसके लिए सेट किया गया है, संभवतः बाद के ग्रेड-एनएन के साथ ...

    C: / प्रोग्राम फ़ाइलें / Android / Android Studio1 / gradle / gradle-2.4

आपको एंड्रॉइड स्टूडियो को फिर से शुरू करना पड़ सकता है, परियोजना का पुनर्निर्माण करना, आदि लेकिन समस्या हल हो गई है।

EDIT का अंत।

मैं इसे इस समस्या को अनदेखा करने के लिए किसी और नए को सलाह देने के लिए पोस्ट कर रहा हूं। परियोजना पूरी तरह से परवाह किए बिना चलती है। यह काफी सरलता से निर्माण प्रणाली में एक बग है, उम्मीद है कि जल्द ही तय किया जाएगा। मैंने एक टिप्पणी पोस्ट की और यहां मतदान किया जहां यह फिर से एक सक्रिय विषय है ...

https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=76719

कोशिश करने के बाद, असफल रूप से, निम्नलिखित तीन सूत्र में सुझाव, मैंने पूरी परियोजना को फिर से खरोंच से बनाया। मैंने एक नया एंड्रॉइड स्टूडियो प्रोजेक्ट शुरू किया, सभी मूल लिबास और मुख्य फाइलों को कॉपी किया, जिसमें किसी भी फाइल को अनदेखा किया गया जो कि बिल्ड सिस्टम द्वारा उत्पन्न की गई और प्रोजेक्ट को फिर से बनाया गया। सब कुछ ठीक था सिवाय इसके कि "" (groovy.lang.Closure) पर लागू नहीं किया जा सकता है "" चेतावनियां फिर से एक अस्पष्टता के साथ दिखाई दीं। फिर मैं इन सुझावों के लिए फिर से गया कि मैं कुछ अनदेखी नहीं की थी।

1 buildTypes को groovy.lang.Closing पर लागू नहीं किया जा सकता है, Android स्टूडियो में सेटिंग में जाएं और " यूट्रेक्ट ग्रेडल रैपर" का चयन करें: Android स्टूडियो में सेलेक्ट करें: फाइल \ सेटिंग्स \ बिल्ड, एक्सेप्शन, डिप्लॉयमेंट / बिल्ड टूल्स / ग्रेडल मार्क: डिफॉल्ट ग्रेडेल का उपयोग करें आवरण (डिफ़ॉल्ट) यह हटा दिया गया 'सभी' लागू नहीं किया जा सकता '(groovy.lang.Closure') बिल्ड फ़ाइलों में चेतावनी।

2 'निर्भरताएँ' पर लागू नहीं की जा सकती हैं (groovy.lang.Closure) ' फ़ाइल खोलें और संपादित करें: yourproject / gradle / आवरण / gradle-wrapper.propertie। नीचे दी गई छवि के रूप में सामग्री संपादित करें फिर सहेजें। यह फ़ोल्डर हटाएं: yourproject / .gradle सिंक फ़ाइलों के साथ सिंक प्रोजेक्ट पर क्लिक करें, फिर आप जाने के लिए अच्छे हैं।

3 https://github.com/DrKLO/Telegram/issues/870

मेरा कॉन्फ़िगरेशन है: Android Studio 1.3, compileSdk संस्करण 22, buildTools संस्करण "22.0.1"



0

मुझे हटाने के लिए सब करना पड़ा

productFlavors {
}

से

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

और चेतावनी चली गई।

फाइनल लुक ऐसा था

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.