最新消息:20210917 已从crifan.com换到crifan.org

【已解决】Android Studio中build编译rcstja项目报错:Could not find method leftShift for arguments on task notification installServiceFirst of type org.gradle.api.DefaultTask

Android crifan 441浏览 0评论
折腾:
【未解决】Mac中用Android Studio打开rctjsa项目并编译apk和实时调试安卓手机小米9
期间,已经解决了gradle的问题。
然后自动继续sync,然后开始build,然后出错:
Could not find method leftShift() for arguments [build_1pjiekz1uqs36vttboddevsf5$_run_closure3@2711c614] on task ':notification:installServiceFirst' of type org.gradle.api.DefaultTask.
Open File
点击Open File
打开了文件:
tools/notification/build.gradle
apply plugin: 'com.android.application'


android {


    //Required to support the old folder structure
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }
        androidTest.setRoot('tests')
    }


    //Required to support builds although lint errors exist
    lintOptions {
        abortOnError false
    }


    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion


    defaultConfig {
        applicationId "com.gsma.rcs.registry"
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 1
        versionName "2.0"
        archivesBaseName = "notification"
    }
}


dependencies {
    compile project(':api')
    compile 'com.android.support:support-v4:25.0.1'
}


//Below install dependecy was added to always install RCS service before
//a RCS client to secure that Android handles RCS permissions correctly.
task installServiceFirst(dependsOn: ':core:installDebug') << {
    println 'RCS core service was installed first!'
}
tasks.whenTaskAdded { task ->
    if (task.name == 'installDebug') {
        task.dependsOn installServiceFirst
    }
}
其中的:
task installServiceFirst(dependsOn: ':core:installDebug') << {
这样报错的:
这段代码是:
//Below install dependecy was added to always install RCS service before
//a RCS client to secure that Android handles RCS permissions correctly.
task installServiceFirst(dependsOn: ':core:installDebug') << {
    println 'RCS core service was installed first!'
}
感觉意思是:
每次运行一个RCS的客户端之前,确保始终都已安装了RCCS的服务了
这个也就是我们一直希望实现的目的啊
如果解决此问题,或许就顺带解决了之前的:
【未解决】rcsjta中RCS的RI中各种功能都提示:The service is not available Please retry later
的问题了
但是感觉提示内容:
Could not find method leftShift() for arguments [build_1pjiekz1uqs36vttboddevsf5$_run_closure3@2711c614] on task ':notification:installServiceFirst' of type org.gradle.api.DefaultTask.
和此处代码:
task installServiceFirst(dependsOn: ':core:installDebug') << {
    println 'RCS core service was installed first!'
}
有点对不上?
然后Command+鼠标单击
提示:
Cannot find declaration to go to
Could not find method leftShift for arguments run_closure3 on task
android – Could not find method leftShift() for arguments after updating studio 3.4 – Stack Overflow
https://stackoverflow.com/questions/55793095/could-not-find-method-leftshift-for-arguments-after-updating-studio-3-4
看来是:还是要找到此处的task的定义,估计里面有不兼容的语法
没有找到
才发现,本身当前文件就是函数定义和实现。。。
Problem with building android app, LeftShift error – Stack Overflow
只是语法错了,去从:
task installServiceFirst(dependsOn: ':core:installDebug') << {
    println 'RCS core service was installed first!'
}
改为:
//task installServiceFirst(dependsOn: ':core:installDebug') << {
task installServiceFirst(dependsOn: ':core:installDebug') {
    doLast{
        println 'RCS core service was installed first!'
    }
}
其他几个文件,也依次改掉
RI/build.gradle
tools/settings/build.gradle
tools/notification/build.gradle
samples/api/tts/build.gradle
然后顺带也从
task installServiceFirst(dependsOn: ':core:installDebug') {
加深理解了,此处的 RCS的service,就是core的installDebug 所安装的debug的app
都改完了,再去点击Try again 重试
开始重新编译:
然后此处错误就消失了。
【总结】
此处看来是由于gradle升级后的语法不同,之前的:
task installServiceFirst(dependsOn: ':core:installDebug') << {
    println 'RCS core service was installed first!'
}
(此处有多处:
RI/build.gradle
tools/settings/build.gradle
tools/notification/build.gradle
samples/api/tts/build.gradle
需要改为:
task installServiceFirst(dependsOn: ':core:installDebug') {
    doLast{
        println 'RCS core service was installed first!'
    }
}
即可。

转载请注明:在路上 » 【已解决】Android Studio中build编译rcstja项目报错:Could not find method leftShift for arguments on task notification installServiceFirst of type org.gradle.api.DefaultTask

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.186 seconds, using 23.40MB memory