Studio 3.4'ü güncelledikten sonra argümanlar için leftShift () yöntemi bulunamadı


103

Studio 3.4ve Gradle sürümünü güncelledikten 5.1.1sonra, leftShift () yöntemi bulunamadı olarak görevimde hata aldım

Benim görevim:

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

<<Satırda sol kaydırma operatörü için hata aldım .

Bu hata nasıl çözülür?


3
<< 4.x
sürümünde

Ben de aynı hatayı alıyorum 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.. Aslında değişmem gereken yere gitmiyorum.
Ajay Mehta

in your build.gradle oluşturduğunuz herhangi bir görevi kontrol edin
Bhuvanesh BS

Yanıtlar:


216

Bu hata, değişim çözmek için <<birlikte doLastböyle.

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

Sol kaydırma operatörü temsil eder doLast { }.

<< Gradle 4.x'te kullanımdan kaldırıldı ve Gradle 5.0'da kaldırıldı

Dokümanlar'dan:

<<görev tanımları için artık çalışmıyor. Başka bir deyişle, sözdizimini kullanamazsınız

task myTask << { …​ }.

Kullanım Task.doLast()böyle yerine yöntemi:

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

Daha fazla bilgi burada: 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
bu nerede? hangi dosya
Akanshi Srivastava

1
build.gradle'da
Bhuvanesh BS

@BhuvaneshBS Nerede yazdırılır?
Bharath Kumar

Görev çalıştırılırken Terminal'de
Bhuvanesh BS

1
Herhangi bir görevim yok veya << hala sorunla karşı karşıya olan biri yardımcı olabilir mi?
Deepak Rajput

25

Görev'den "<<" öğesini kaldırın ve kodunuzu ekleyin doLast{}

Çözümü için Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

task incrementBetaVersion << {
   // your code
}

-e

task incrementBetaVersion {
   doLast {
      // your code
    }
}

Referans https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614/2

<< ( LeftShift()) operatörü 4.x sürümünde Gradleve 5.x GradleSürümünde kaldırılmıştır .


9

Sol Kaydırma operatörü doLast {} ile değiştirildiği için oluyor.

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

Şimdi kodu değiştirmeniz gerekecek:

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

-e

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

5

Bu hatayı çözmek oldukça basit.

Sadece yerini <<iledoLast

Güncellenen koda bakın, bugün cordova Android projemde düzeltiyorum.

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

MockMakerFinal olmayan sınıflarla alay etmek için kullanılan bir Kotlin projesinde bu hatayı aldım .

Çözüm, eski sözdizimini bu yenisiyle değiştirmektir:

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")
        }
    }
}

doLastBlok dahil olmak <<ve görev imzasından kaldırmak gibi birkaç şeyin değiştiğini unutmayın . Şimdi benim için çalışıyor. Umarım senin için de olur :-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.