Tidak dapat menemukan metode leftShift () untuk argumen setelah memperbarui studio 3.4

101

Setelah memperbarui 3.4versi studio dan Gradle ke 5.1.1saya mendapat kesalahan pada tugas saya karena Tidak dapat menemukan metode leftShift ()

Tugasku:

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

Saya mendapat kesalahan untuk operator shift kiri <<di telepon.

Bagaimana cara mengatasi kesalahan ini?

Bhuvanesh BS
sumber
3
<< tidak digunakan lagi dalam 4.x dan dihapus pada 5.0
aashima
Saya mendapatkan kesalahan yang sama 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.. Tidak sampai dimana sebenarnya saya harus berubah.
Ajay Mehta
di build.gradle Anda, periksa tugas apa pun yang telah Anda buat
Bhuvanesh BS

Jawaban:

211

Untuk mengatasi kesalahan ini, ganti <<dengan doLastseperti ini.

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

Mewakili operator shift kiri doLast { }.

<< tidak digunakan lagi di Gradle 4.x dan dihapus di Gradle 5.0

Dari Dokumen:

<<untuk definisi tugas tidak lagi berfungsi. Dengan kata lain, Anda tidak dapat menggunakan sintaks

task myTask << { …​ }.

Gunakan Task.doLast()metode sebagai gantinya, seperti ini:

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

Info lebih lanjut di sini: 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

Bhuvanesh BS
sumber
2
dimana ini? file yang mana?
Akanshi Srivastava
1
di build.gradle
Bhuvanesh BS
@BhuvaneshBS Dimana cetakannya?
Bharath Kumar
Di Terminal saat menjalankan tugas
Bhuvanesh BS
1
Saya tidak punya tugas atau << masih menghadapi masalah ini, ada yang bisa membantu?
Deepak Rajput
25

Hapus saja "<<" dari Tugas dan tambahkan kode Anda doLast{}

Untuk solusi Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

task incrementBetaVersion << {
   // your code
}

untuk

task incrementBetaVersion {
   doLast {
      // your code
    }
}

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

Operator << ( LeftShift()) tidak digunakan lagi di 4.x Gradledan Dihapus di 5.xGradle Versi

Nikunj Paradva
sumber
9

Ini terjadi karena operator Shift Kiri telah digantikan oleh doLast {}.

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

Sekarang Anda harus mengubah kode:

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

untuk

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

Untuk mengatasi kesalahan ini cukup sederhana.

Ganti saja <<dengandoLast

Lihat kode yang diperbarui di bawah ini, hari ini saya perbaiki di proyek Cordova Android saya.

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)
       }
   }
}
Muddasir23
sumber
2

Saya mengalami kesalahan ini dalam proyek Kotlin yang digunakan MockMakeruntuk memalsukan kelas non final.

Solusinya adalah mengubah sintaks lama ke yang baru ini:

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

Perhatikan bahwa beberapa hal telah berubah, seperti menyertakan doLastblok, dan menghapus <<dari tanda tangan tugas. Ini bekerja untuk saya sekarang. Semoga bermanfaat juga untuk Anda :-)

voghDev
sumber