স্টুডিও 3.4 আপডেট করার পরে আর্গুমেন্টের জন্য পদ্ধতি বাম শিফট () খুঁজে পাওয়া যায় নি


101

স্টুডিও 3.4এবং গ্রেডল সংস্করণটি আপডেট করার পরে 5.1.1আমি আমার কার্যটিতে ত্রুটি পেয়েছি কারণ পদ্ধতিটি বামে খুঁজে পাওয়া যায়নি শিফ্ট ()

আমার কাজে:

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

আমি <<লাইনে বাম শিফট অপারেটরের জন্য ত্রুটি পেয়েছি ।

এই ত্রুটিটি কীভাবে সমাধান করবেন?



আমি একই ত্রুটি পাচ্ছি 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.। আসলে আমাকে কোথায় পরিবর্তন করতে হবে তা পাচ্ছি না।
অজয় মেহতা

আপনার নির্মিত কোনও কাজের জন্য আপনার বিল্ড.আরডল চেক করুন
ভুবনেশ বিএস

উত্তর:


211

এই ত্রুটি, পরিবর্তন সমাধানের জন্য <<সঙ্গে doLastভালো।

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

বাম শিফট অপারেটর প্রতিনিধিত্ব করে doLast { }

<< গ্রেডেল ৪.x এ অবমূল্যায়ন করা হয়েছিল এবং গ্রেডল ৫.০ এ সরানো হয়েছে

দস্তাবেজ থেকে:

<<কার্য সংজ্ঞা জন্য আর কাজ করে না। অন্য কথায়, আপনি বাক্য গঠন ব্যবহার করতে পারবেন না

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


4
এটা কোথায়? কোন ফাইল?
আকাশী শ্রীবাস্তব

4

@ ভুবনেশবস এটি কোথায় ছাপছে?
ভরথ কুমার

টার্মিনালটিতে টাস্কটি চালনার সময়
ভুবনেশ বিএস

4
আমার কোনও কাজ নেই বা << এখনও সমস্যার মুখোমুখি কেউ কি সহায়তা করতে পারে?
দীপক রাজপুত

25

টাস্ক থেকে কেবল "<<" সরান এবং আপনার কোডটি যুক্ত করুন doLast{}

এর সমাধানের জন্য Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

task incrementBetaVersion << {
   // your code
}

প্রতি

task incrementBetaVersion {
   doLast {
      // your code
    }
}

রেফারেন্স https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614/2

<< ( LeftShift()) অপারেটরটি 4.x এ অবমূল্যায়ন করা হয়েছে Gradleএবং 5.x Gradleসংস্করণে সরানো হয়েছে ।


9

বাম শিফট অপারেটরের পরিবর্তে ডলাস্ট {by দ্বারা প্রতিস্থাপন করা হয়েছে বলে এটি হচ্ছে}

<< 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ব্লক সহ কিছু জিনিস বদলেছে এবং <<কার্য স্বাক্ষর থেকে অপসারণ করা হয়েছে । এটা এখন আমার জন্য কাজ করে। আশা করি এটি আপনার জন্যও করবে :-)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.