折腾:
【未解决】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
看来是:还是要找到此处的task的定义,估计里面有不兼容的语法

没有找到
才发现,本身当前文件就是函数定义和实现。。。
只是语法错了,去从:
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