स्टूडियो 3.4 को अपडेट करने के बाद तर्कों के लिए विधि बायीं तरफ स्विफ्ट () नहीं मिली


97

स्टूडियो 3.4और ग्रैडल संस्करण को अपडेट करने के बाद, 5.1.1मुझे अपने कार्य में त्रुटि मिली क्योंकि विधि बाएं नहीं मिल सकी ()

मेरा काम:

task incrementBetaVersion << {
    println("Incrementing Beta Version Number...")
    incrementVersionNumber('BetaVersionNumber')
    println("Incrementing Beta Version Number...")
    incrementVersionName('BetaVersionName')
}

मुझे <<लाइन में बाएं शिफ्ट ऑपरेटर के लिए त्रुटि मिली ।

इस त्रुटि को कैसे हल करें?


3
<< 4.x में पदावनत किया गया था और 5.0 में हटा दिया गया था
आशिमा

मुझे वही त्रुटि मिल रही है ERROR: Could not find method leftShift() for arguments [android_release_aar_8aaffqenud6qsg8w8hrovmfvc$_run_closure7@23b31b41] on task ':XXXapi:generateRelease' of type org.gradle.api.DefaultTask.। नहीं मिल रहा है, जहां मुझे वास्तव में बदलना है।
अजय मेहता

आप में आपके द्वारा बनाए गए किसी भी कार्य के लिए बिल्ड.ग्रेड की जाँच करें
भुवनेश बीएस

जवाबों:


195

इस त्रुटि के लिए, परिवर्तन को हल करने के <<साथ doLastइस तरह।

task incrementBetaVersion  {
    doLast {
        println("Incrementing Beta Version Number...")
        incrementVersionNumber('BetaVersionNumber')
        println("Incrementing Beta Version Number...")
        incrementVersionName('BetaVersionName')
    }
}

लेफ्ट शिटफ ऑपरेटर प्रतिनिधित्व करता है doLast { }

<< ग्रैडल 4.x में पदावनत किया गया और ग्रैडल 5.0 में हटा दिया गया

डॉक्स से:

<<कार्य परिभाषाओं के लिए अब काम नहीं करता है। दूसरे शब्दों में, आप वाक्यविन्यास का उपयोग नहीं कर सकते

task myTask << { …​ }

Task.doLast()इसके बजाय विधि का उपयोग करें :

task myTask {
    doLast {
        ...
        ...
    }
}

यहाँ और जानकारी: https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614

https://docs.gradle.org/current/userguide/upgrading_version_4.html#changes_5.0


2
यह कहां है? कौन सी फाइल?
अकांशी श्रीवास्तव

1

@ भुवनेशबीएस जहाँ यह प्रिंट करता है?
भारथ कुमार

टास्क चलाते समय टर्मिनल में
भुवनेश बीएस

1
मेरे पास कोई काम नहीं है या << अभी भी इस मुद्दे का सामना करना पड़ रहा है क्या कोई मदद कर सकता है?
दीपक राजपूत

25

<< ( LeftShift()) ऑपरेटर को 4.x में Gradleहटा दिया गया है और 5.x Gradleसंस्करण में हटा दिया गया है ।

के समाधान के लिए Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

बस टास्क से "<<" निकालें और में विधि जोड़ें doLast{}

संदर्भ https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask-30614/2

task incrementBetaVersion << {
   // your code
}

सेवा

task incrementBetaVersion {
   doLast {
      // your code
    }
}

9

यह लेफ्ट शिफ्ट ऑपरेटर की वजह से हो रहा है इसे doLast {} द्वारा बदल दिया गया है।

<< has deprecated in 4.x and removed in 5.0 version

अब आपको कोड बदलना होगा:

task incrementBetaVersion << {
    println("Incrementing Beta Version Number...")
    incrementVersionNumber('BetaVersionNumber')
    println("Incrementing Beta Version Number...")
    incrementVersionName('BetaVersionName')
}

सेवा

task incrementBetaVersion  {
    doLast {
        println("Incrementing Beta Version Number...")
        incrementVersionNumber('BetaVersionNumber')
        println("Incrementing Beta Version Number...")
        incrementVersionName('BetaVersionName')
    }
}

5

इस त्रुटि को हल करने के लिए बहुत आसान है।

बस के <<साथ बदलेंdoLast

नीचे अद्यतन कोड देखें, आज मैं अपने कॉर्डोवा एंड्रॉइड प्रोजेक्ट में ठीक करता हूं।

task cdvPrintProps {
   doLast {
       println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
       println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
       println('cdvVersionCode=' + cdvVersionCode)
       println('cdvVersionCodeForceAbiDigit=' + cdvVersionCodeForceAbiDigit)
       println('cdvMinSdkVersion=' + cdvMinSdkVersion)
       println('cdvBuildMultipleApks=' + cdvBuildMultipleApks)
       println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile)
       println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile)
       println('cdvBuildArch=' + cdvBuildArch)
       println('computedVersionCode=' + android.defaultConfig.versionCode)
       android.productFlavors.each { flavor ->
           println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode)
       }
   }
}

2

मुझे एक कोटलिन परियोजना में यह त्रुटि थी जो MockMakerगैर-अंतिम कक्षाओं का मजाक उड़ा रही है ।

इसका समाधान पुराने सिंटैक्स को इस नए में बदलना है:

task createTestResources {
    description = "Allows Mocking non-final classes and data classes in a Kotlin project"
    doLast {
        def mockMakerFile = new File("$projectDir/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker")
        if (System.env.MOCK_MAKER != null) {
            logger.info("Using MockMaker ${System.env.MOCK_MAKER}")
            mockMakerFile.parentFile.mkdirs()
            mockMakerFile.createNewFile()
            mockMakerFile.write(System.env.MOCK_MAKER)
        } else {
            logger.info("Using default MockMaker")
        }
    }
}

ध्यान दें कि कुछ चीजें बदल गई हैं, जैसे कि doLastब्लॉक, और <<कार्य हस्ताक्षर से हटाना । यह अब मेरे लिए काम करता है। आशा है कि यह आपके लिए भी :-)

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