उस नाम के साथ कार्य के रूप में कार्य 'आवरण' को जोड़ नहीं सकता


112

'प्रतिक्रिया-मूलक init AwesomeProject' स्थापित करते समय मुझे यह त्रुटि आती है कि मैं कब दौड़ूंreact-native run-android :

Could not determine java version from '11.0.1'.

एक त्वरित Google बताता है कि मुझे distributionUrlग्रैडल-रैपर में अपडेट करने की आवश्यकता है । ऐसा करने के बाद मुझे एक नई त्रुटि का सामना करना पड़ रहा है:

Cannot add task 'wrapper' as a task with that name already exists.

यह सुझाव है कि समस्या फ़ाइल में है:

/AwesomeProject/android/build.gradle' line: 36

जो इस तरह दिखता है

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

मैं आगे और पीछे यह पता लगाने की कोशिश कर रहा हूं कि यह क्या करता है। यह अजीब लगता है कि कुछ सीधे बॉक्स से बाहर काम नहीं करेगा। क्या कोई इसी तरह के मुद्दे का सामना कर रहा है?


4
क्या कोई अद्यतन है या जो एक सही जवाब है? यदि नहीं तो आपने इसे कैसे हल किया? किसी उत्तर पर टिक-राइट आइकन पर क्लिक करें। >> :-)
ganeshdeshmukh

जवाबों:


160

आप अपडेट भी कर सकते हैं

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'    
    distributionUrl = distributionUrl.replace("bin", "all")
}

सेवा

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

जैसा

4.8 में बनाए गए कार्यों को ओवरराइड करने से अब एक त्रुटि उत्पन्न होती है।

एक अंतर्निहित कार्य को बदलने का प्रयास निम्नलिखित के समान त्रुटि उत्पन्न करेगा:

उस नाम के साथ कार्य के रूप में कार्य 'आवरण' को जोड़ नहीं सकता।

कार्य और गुणों का अंतिम पैराग्राफ देखें : https://docs.gradle.org/5.2.1/userguide/upmission_version_4.html

और आवरण कार्य को अनुकूलित करना : https://docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper


9
यह जवाब ओपी के वास्तविक प्रश्न का उत्तर नहीं देता है, लेकिन यह मेरे जैसे गोगलर्स के लिए बहुत मददगार है, इसलिए मैंने इस पर ध्यान दिया।
फ्रैंकलिन यू

यह ओपी की समस्या को हल करता है। वह एक प्राचीन ग्रेडल संस्करण का उपयोग कर रहा था और फिर एक पुराने समाधान का उपयोग करके अद्यतन करने के लिए बंधा हुआ था, और यह उत्तर सही समाधान प्रदान करता है। (ज़ाहिर है, @FranklinYu, अगर आप लेते हैं "क्या कोई भी इसी तरह के मुद्दे का सामना कर रहा है?" ओपी के सवाल के रूप में, तो एक साधारण "हाँ" पर्याप्त होगा।)
माइकल पीफेल नोव

91

आप अपने वातावरण में किस वर्जन के ग्रेडेल का उपयोग करते हैं?

यदि आप ५.५ संस्करण का उपयोग करते हैं, तो आपको नीचे दिए अनुसार pper कार्य आवरण version को संशोधित करना होगा।

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

फिर यह त्रुटि आई। पता नहीं क्या करना चाहिए। ERROR: तर्कों के लिए विधि आवरण () {{type = class org.gradle.api.tasks.wrapper.Wrapper}, build_81gq92nveejavsi3t9efznm88 $ _run_closure2 @ 55f5bac8] रूट प्रोजेक्ट 'myproject' प्रकार की श्रेणी पर उपलब्ध नहीं है। ।
बुद्धिव

21

जैसा कि टिप्पणियों में उल्लेख किया गया है - https://stackoverflow.com/a/46867575/4982729 :

  1. फ़ाइल खोलें और संपादित करें app-folder/android/gradle/wrapper/gradle-wrapper.properties; लाइन को अपडेट करें

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
  2. फ़ाइल में AwesomeProject/android/build.gradleटिप्पणी करने का प्रयास करें

    task wrapper(type: Wrapper) {
        gradleVersion = '4.4'
        distributionUrl = distributionUrl.replace("bin", "all")
    }

12

यदि "gradle-wrapper.properties" फ़ाइल में पहले से ही ये कोड हैं

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

तब आप निकाल सकते हैं

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

बिल्ड.ग्रेड से


1

मेरे साथ भी वही दिक्कत है। मेरे कोड में समस्या build.gradle में एक और ग्रैडल फाइल पर दोहरी घोषणा थी

build.gradle

apply from: otherFile.gradle
... build. gradle code...
apply from: otherFile.gradle //Again 

0

एक उच्च मौका है कि आपके पास अपनी बिल्ड.ग्रेडल फ़ाइल में चलने के लिए एक "कार्य" है, जाओ और आवरण से संबंधित रेखा (इसके ब्रैकेट सहित) को हटा दें। फिर, यदि आप IntelliJ का उपयोग कर रहे हैं, तो यह स्वचालित रूप से आपकी कार्यशील निर्देशिका में नया लाएगा।


0

मैं इस मुद्दे पर भागा, क्योंकि मैं अपना काम ग्लोबल ग्रेडेल का उपयोग करके चला रहा था , न कि अपने स्थानीय को ग्रेडर रैपर को।

यानी मेरी वर्तमान निर्देशिका में मैं एक gradlewनिष्पादन योग्य था।

लेकिन मैं यह कमांड चला रहा था:

gradle <task>

जब मुझे चलना चाहिए था:

./gradlew <task>

संभवत: क्योंकि वैश्विक संचलन को चलाने के लिए एक स्थानीय आवरण बनाने की कोशिश की जाती है - और पहले से मौजूद है।

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