Setelah memperbarui 3.4
versi studio dan Gradle ke 5.1.1
saya 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?
android
gradle
groovy
android-gradle-plugin
build.gradle
Bhuvanesh BS
sumber
sumber
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.Jawaban:
Untuk mengatasi kesalahan ini, ganti
<<
dengandoLast
seperti ini.task incrementBetaVersion { doLast { println("Incrementing Beta Version Number...") incrementVersionNumber('BetaVersionNumber') println("Incrementing Beta Version Number...") incrementVersionName('BetaVersionName') } }
Mewakili operator shift kiri
doLast { }
.Dari Dokumen:
<<
untuk definisi tugas tidak lagi berfungsi. Dengan kata lain, Anda tidak dapat menggunakan sintakstask 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
sumber
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
sumber
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') } }
sumber
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) } } }
sumber
Saya mengalami kesalahan ini dalam proyek Kotlin yang digunakan
MockMaker
untuk 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
doLast
blok, dan menghapus<<
dari tanda tangan tugas. Ini bekerja untuk saya sekarang. Semoga bermanfaat juga untuk Anda :-)sumber